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 +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/lib/belated/client.rb +6 -4
- data/lib/belated/queue.rb +4 -1
- data/lib/belated/version.rb +1 -1
- data/lib/belated.rb +4 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0c28df2d6dffdff23e48d5fba469ca7a67378bebdf6538067f748ebc28d8a67
|
4
|
+
data.tar.gz: 1805135d97859dd9d399b3e46d636141b014e102630eefa1e7d0a9dc4a2a19bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/lib/belated/client.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
-
|
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
|
-
@
|
31
|
+
@mutex.synchronize do
|
32
|
+
@future_jobs << job
|
33
|
+
end
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
data/lib/belated/version.rb
CHANGED
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
|
101
|
+
sleep Belated.heartbeat
|
100
102
|
next
|
101
103
|
end
|
102
104
|
if job.at <= Time.now
|