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