ci-queue 0.58.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0302564aa747e3b115328f8e8a09ba89e319631c885eb6250236a4f53d5d4b3f
4
- data.tar.gz: c09e4e48c6fcded24e23673d39beb5374960e95ac47a1f74805dce6e868c1ae8
3
+ metadata.gz: 4bec940c2c3eedb719c7292b249d244ab9e26a17c786e34eaf11d114c458478a
4
+ data.tar.gz: '039b0d061f68b9c4c77438681c2f4110042087d5a0ed4f0a4c31276aa79ede7a'
5
5
  SHA512:
6
- metadata.gz: d885b7fd5fbaaefb1fb3271a5364285b0b4a16a2e58449beae1e9f1a8e430f9e48554f7e707299124b4ae132e0122679b8a2c1163f4d22e2707a03fdba3f09b4
7
- data.tar.gz: daa111f58048ce32e754698858305ed48d68f35e4d60a023b5263674d3151386cb395a36e1a40b6926ae874b1b4187567b9937632deedc77a474b63d34c5f9b2
6
+ metadata.gz: e22b92fe85dc0ed9d1f64e5e7a3e430d017b393ba24a60647cb02ff715351f338117cd304ee7c3e4dd9b9b48c65476565202770e2b25a6bdc68b4282549fc52d
7
+ data.tar.gz: 1446c540b88521268c6005412b5243d5da4ba986a2815a14aeb059a7c5506473dc61018da0588e807b2091b7def02f237505c3582c3761a2404a725594ef7a92
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci-queue (0.58.0)
4
+ ci-queue (0.60.0)
5
+ logger
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -30,6 +31,7 @@ GEM
30
31
  concurrent-ruby (~> 1.0)
31
32
  json (2.7.1)
32
33
  language_server-protocol (3.17.0.3)
34
+ logger (1.6.1)
33
35
  minitest (5.22.3)
34
36
  minitest-reporters (1.6.1)
35
37
  ansi
@@ -50,7 +52,7 @@ GEM
50
52
  redis-client (0.21.1)
51
53
  connection_pool
52
54
  regexp_parser (2.9.0)
53
- rexml (3.2.6)
55
+ rexml (3.3.8)
54
56
  rspec (3.13.0)
55
57
  rspec-core (~> 3.13.0)
56
58
  rspec-expectations (~> 3.13.0)
data/ci-queue.gemspec CHANGED
@@ -31,6 +31,8 @@ Gem::Specification.new do |spec|
31
31
 
32
32
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
33
33
 
34
+ spec.add_runtime_dependency 'logger'
35
+
34
36
  spec.add_development_dependency 'bundler'
35
37
  spec.add_development_dependency 'rake'
36
38
  spec.add_development_dependency 'minitest', ENV.fetch('MINITEST_VERSION', '~> 5.11')
@@ -39,6 +39,11 @@ module CI
39
39
  # it makes sense to retry for a while before giving up.
40
40
  reconnect_attempts: reconnect_attempts,
41
41
  middlewares: custom_middlewares,
42
+ # Hosted Redis servers use self signed certificates
43
+ # (because they do not own the domain they're running on such as compute-1.amazonaws.com)
44
+ # therefore a full SSL connection verification will fail.
45
+ # ci-queue should not contain any sensitive data, so we can just disable the verification.
46
+ ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE },
42
47
  custom: custom_config,
43
48
  )
44
49
  else
@@ -5,8 +5,6 @@ require 'set'
5
5
  module CI
6
6
  module Queue
7
7
  module Redis
8
- ReservationError = Class.new(StandardError)
9
-
10
8
  class << self
11
9
  attr_accessor :requeue_offset
12
10
  end
@@ -16,6 +16,7 @@ module CI
16
16
  module Redis
17
17
  Error = Class.new(StandardError)
18
18
  LostMaster = Class.new(Error)
19
+ ReservationError = Class.new(Error)
19
20
 
20
21
  class << self
21
22
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module CI
4
4
  module Queue
5
- VERSION = '0.58.0'
5
+ VERSION = '0.60.0'
6
6
  DEV_SCRIPTS_ROOT = ::File.expand_path('../../../../../redis', __FILE__)
7
7
  RELEASE_SCRIPTS_ROOT = ::File.expand_path('../redis', __FILE__)
8
8
  end
@@ -37,7 +37,7 @@ module Minitest
37
37
  end
38
38
 
39
39
  build.worker_errors.to_a.sort.each do |worker_id, error|
40
- puts yellow("Worker #{worker_id } crashed")
40
+ puts red("Worker #{worker_id } crashed")
41
41
  puts error
42
42
  puts ""
43
43
  end
@@ -89,7 +89,7 @@ module Minitest
89
89
  else
90
90
  # If the job gets (automatically) retried and there are still workers running but not many tests left
91
91
  # in the queue, we assume by the time the application is booted the queue is empty and it's faster to no-op.
92
- if retry?
92
+ if retry? && queue.rescue_connection_errors { queue.queue_initialized? }
93
93
  remaining = queue.rescue_connection_errors { queue.remaining }.to_i
94
94
  running = queue.rescue_connection_errors { queue.running }.to_i
95
95
 
@@ -350,7 +350,7 @@ module Minitest
350
350
  end
351
351
 
352
352
  def populate_queue
353
- Minitest.queue.populate(Minitest.loaded_tests, random: ordering_seed, &:id)
353
+ Minitest.queue.populate(Minitest.loaded_tests, random: ordering_seed)
354
354
  end
355
355
 
356
356
  def set_load_path
@@ -266,6 +266,13 @@ module Minitest
266
266
  reopen_previous_step
267
267
  puts red("The heartbeat process died. This worker is exiting early.")
268
268
  exit!(41)
269
+ rescue CI::Queue::Redis::Error
270
+ reopen_previous_step
271
+ puts red("#{error.class}: #{error.message}")
272
+ error.backtrace.each do |frame|
273
+ puts red(frame)
274
+ end
275
+ exit!(41)
269
276
  rescue => error
270
277
  reopen_previous_step
271
278
  queue.report_worker_error(error)
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.58.0
4
+ version: 0.60.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-04 00:00:00.000000000 Z
11
+ date: 2024-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -242,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
256
  - !ruby/object:Gem::Version
243
257
  version: '0'
244
258
  requirements: []
245
- rubygems_version: 3.5.20
259
+ rubygems_version: 3.5.23
246
260
  signing_key:
247
261
  specification_version: 4
248
262
  summary: Distribute tests over many workers using a queue