ci-queue 0.87.0 → 0.88.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: 8255493f3c842cc8d7a269e8ad22a3aab8928d4d2f98034f09f5effffd9e5ebb
4
- data.tar.gz: d43ce59b7114d41afbf758973e6bdab5a676ddae8e1a1c56665597c60e6a6e72
3
+ metadata.gz: ac982ecc1b30c78d14e45bbbe7d8e26841879eae6fec791dd82508159ce6c8dd
4
+ data.tar.gz: 7f960c1a77b8e93bd8c18894b86f428df16f181f671bb7e000063a968e50374c
5
5
  SHA512:
6
- metadata.gz: c11eaad88240e00781014d7c8d4e3390e995e412d3ab09ad1f3375a853aca77d278f49c4d8563a3872cdd66e399ef1c107f1acd57344ad5b815202fc9ee8e17b
7
- data.tar.gz: 8e0c09faf71e486b5096b9a13f377842e4b59dde5ed59f5607b42733525612c810a57a178743d2cb7fcd1bdb83860a2331ef5a09ddbd73b0ec0aa18ee43829c9
6
+ metadata.gz: 1582e95243e4939268acc7bbaced2fc90471b0b86934d35169647ccde1e19c8d03027650e1f9efa909c2d6aafc85c8cce8a251c65de3cecdc906e64da8bb2a0b
7
+ data.tar.gz: d8c67176e15c7d78b175af35309bab1136a3053da0db9404449d5770b764bba1e0d25c6671607c090d5e8951e65711ea94eded4cd59f50032b8336fea1eeed7b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci-queue (0.87.0)
4
+ ci-queue (0.88.0)
5
5
  logger
6
6
 
7
7
  GEM
@@ -43,6 +43,8 @@ GEM
43
43
  builder
44
44
  minitest (>= 5.0)
45
45
  ruby-progressbar
46
+ mocha (3.1.0)
47
+ ruby2_keywords (>= 0.0.5)
46
48
  msgpack (1.8.0)
47
49
  parallel (1.27.0)
48
50
  parser (3.3.10.2)
@@ -86,6 +88,7 @@ GEM
86
88
  parser (>= 3.3.7.2)
87
89
  prism (~> 1.7)
88
90
  ruby-progressbar (1.13.0)
91
+ ruby2_keywords (0.0.5)
89
92
  securerandom (0.4.1)
90
93
  simplecov (0.22.0)
91
94
  docile (~> 1.1)
@@ -112,6 +115,7 @@ DEPENDENCIES
112
115
  ci-queue!
113
116
  minitest (~> 5.11)
114
117
  minitest-reporters (~> 1.1)
118
+ mocha
115
119
  msgpack
116
120
  rake
117
121
  redis
data/ci-queue.gemspec CHANGED
@@ -40,6 +40,7 @@ Gem::Specification.new do |spec|
40
40
  spec.add_development_dependency 'redis'
41
41
  spec.add_development_dependency 'simplecov', '~> 0.12'
42
42
  spec.add_development_dependency 'minitest-reporters', '~> 1.1'
43
+ spec.add_development_dependency 'mocha'
43
44
 
44
45
  spec.add_development_dependency 'rexml'
45
46
  spec.add_development_dependency 'snappy'
@@ -264,6 +264,8 @@ module CI
264
264
  end
265
265
 
266
266
  class HeartbeatProcess
267
+ MAX_RESTART_ATTEMPTS = 3
268
+
267
269
  def initialize(redis_url, zset_key, owners_key, leases_key)
268
270
  @redis_url = redis_url
269
271
  @zset_key = zset_key
@@ -313,10 +315,28 @@ module CI
313
315
 
314
316
  def tick!(id, lease)
315
317
  send_message(:tick!, id: id, lease: lease.to_s)
318
+ @restart_attempts = 0
319
+ rescue IOError, Errno::EPIPE => error
320
+ @restart_attempts = (@restart_attempts || 0) + 1
321
+ raise if @restart_attempts > MAX_RESTART_ATTEMPTS
322
+
323
+ restart!
324
+ retry
316
325
  end
317
326
 
318
327
  private
319
328
 
329
+ def restart!
330
+ @pipe.close rescue nil
331
+ begin
332
+ Process.kill(:TERM, @pid)
333
+ Process.waitpid2(@pid)
334
+ rescue Errno::ESRCH, Errno::ECHILD
335
+ nil
336
+ end
337
+ boot!
338
+ end
339
+
320
340
  def send_message(*message)
321
341
  payload = message.to_json
322
342
  @pipe.write([payload.bytesize].pack("L").b, payload)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module CI
4
4
  module Queue
5
- VERSION = '0.87.0'
5
+ VERSION = '0.88.0'
6
6
  DEV_SCRIPTS_ROOT = ::File.expand_path('../../../../../redis', __FILE__)
7
7
  RELEASE_SCRIPTS_ROOT = ::File.expand_path('../redis', __FILE__)
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.87.0
4
+ version: 0.88.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
@@ -121,6 +121,20 @@ dependencies:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
123
  version: '1.1'
124
+ - !ruby/object:Gem::Dependency
125
+ name: mocha
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
124
138
  - !ruby/object:Gem::Dependency
125
139
  name: rexml
126
140
  requirement: !ruby/object:Gem::Requirement