belated 0.6.6 → 0.6.7

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: 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