belated 0.6.6 → 0.6.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 628f04309c824751bd90f72163d29738f5600f7ed5b759b0106d09b9eccbf23e
4
- data.tar.gz: 1318b353fb2047ae6e185f0af720a987a3d8c784a483df04a79601fb595ff28f
3
+ metadata.gz: e0c28df2d6dffdff23e48d5fba469ca7a67378bebdf6538067f748ebc28d8a67
4
+ data.tar.gz: 1805135d97859dd9d399b3e46d636141b014e102630eefa1e7d0a9dc4a2a19bc
5
5
  SHA512:
6
- metadata.gz: de9793daf6f3987be47b798916dbdfa16e7be92211f46395ed4d63eabf7ae127420952c047df749de584404cd18e80a002f5fadb40896421583e80f3ebe9bf2a
7
- data.tar.gz: 3a09388e73a833d3230787f6191cd02a86cc4ebf3e58ba950d8631eba31a67fe4cf319bfaa448bc471b5fe1a933d9564c7d846d3416d91832a7b5331c78e62b9
6
+ metadata.gz: '086a0dbc146fe3386a24bef59523aeca27dcb72506e83189f39553f63e20f867f6a094faab2ce07fdaadeb0f159bd740fde9bb8bc7f6bf8b2e4f04ea551f5e2e'
7
+ data.tar.gz: dea44b6d05c0eda6e5cb5d58c3b317c150d1d5b4399fcac55d80c8e044faecbfd1a21d6f96394950ab271e9db2eb346057c99de4cc02df4d25e8929f25487ff3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.6.7] - 2021-08-25
4
+
5
+ - A bug fix for bad jobs bringing down client side.
6
+ - Heartbeat option for server side. It only affects jobs in the wait list, it's used to determine how often to check the future jobs queue.
3
7
  ## [0.6.6] - 2021-08-25
4
8
 
5
9
  - Tests now run agains Ruby 2.6, so relaxing the version constraint.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- belated (0.6.6)
4
+ belated (0.6.7)
5
5
  drb
6
6
  dry-configurable
7
7
  ruby2_keywords
@@ -76,7 +76,8 @@ class Belated
76
76
  # @return [JobWrapper] - The job wrapper for the queue.
77
77
  def perform(job, at: nil, max_retries: 5)
78
78
  start unless started?
79
- check_if_proper_job!(job)
79
+ return unless proper_job?(job)
80
+
80
81
  job_wrapper = wrap_job(job, at: at, max_retries: max_retries)
81
82
  bank.push(job_wrapper)
82
83
  @mutex.synchronize do
@@ -90,10 +91,11 @@ class Belated
90
91
 
91
92
  private
92
93
 
93
- def check_if_proper_job!(job)
94
- return if job.respond_to?(:call) || job.respond_to?(:perform)
94
+ def proper_job?(job)
95
+ return true if job.respond_to?(:call) || job.respond_to?(:perform)
95
96
 
96
- raise JobError, 'job does not implement .call nor .perform!'
97
+ warn 'job does not implement .call nor .perform!'
98
+ false
97
99
  end
98
100
 
99
101
  def wrap_job(job, at:, max_retries:)
data/lib/belated/queue.rb CHANGED
@@ -19,6 +19,7 @@ class Belated
19
19
 
20
20
  def initialize(queue: Thread::Queue.new, future_jobs: SortedSet.new)
21
21
  @queue = queue
22
+ @mutex = Mutex.new
22
23
  self.future_jobs = future_jobs
23
24
  end
24
25
 
@@ -27,7 +28,9 @@ class Belated
27
28
  job.at <= Time.now.utc
28
29
  @queue.push(job)
29
30
  else
30
- @future_jobs << job
31
+ @mutex.synchronize do
32
+ @future_jobs << job
33
+ end
31
34
  end
32
35
  end
33
36
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Belated
4
- VERSION = '0.6.6'
4
+ VERSION = '0.6.7'
5
5
  end
data/lib/belated.rb CHANGED
@@ -33,6 +33,7 @@ class Belated
33
33
  setting :log_level, :info, reader: true
34
34
  setting :host, 'localhost', reader: true
35
35
  setting :port, '8788', reader: true
36
+ setting :heartbeat, 1, reader: true
36
37
  setting :client_heartbeat, 5, reader: true
37
38
  URI = "druby://#{Belated.host}:#{Belated.port}"
38
39
 
@@ -56,8 +57,10 @@ class Belated
56
57
 
57
58
  # Handles connection to DRb server.
58
59
  def connect!
60
+ i = 0
59
61
  DRb.start_service(URI, @@queue, verbose: true)
60
62
  rescue DRb::DRbConnError, Errno::EADDRINUSE
63
+ sleep 0.1 and retry if (i += 1) < 5
61
64
  error 'Could not connect to DRb server.'
62
65
  end
63
66
 
@@ -93,10 +96,9 @@ class Belated
93
96
 
94
97
  def enqueue_future_jobs
95
98
  loop do
96
- sleep 0.1
97
99
  job = @@queue.future_jobs.min
98
100
  if job.nil?
99
- sleep 5
101
+ sleep Belated.heartbeat
100
102
  next
101
103
  end
102
104
  if job.at <= Time.now
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: belated
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampo Kuokkanen