cloudtasker 0.4.0 → 0.5.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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/cloudtasker/batch/job.rb +6 -5
- data/lib/cloudtasker/cron/schedule.rb +11 -7
- data/lib/cloudtasker/redis_client.rb +2 -2
- data/lib/cloudtasker/version.rb +1 -1
- 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: 2fa7ae9744ddccc745bae1202b99e3891f9ba1035fe26eec3663cfa705ae22e1
|
4
|
+
data.tar.gz: 92d090b796b74c09803ccb4e7cf9468f230b9aeb5df51eb8c630b677988a49b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7284aa0d993977e53c40d9ecdcc05cca8a0448a32f1189a5f50e38afc538581eac491c47443f0b9c39c0bd0288ce5d6693da0ae07efb8eee93a447276da6e656
|
7
|
+
data.tar.gz: 256a041b899f4a4b1e52f8d5ded83fc4bc370fd7ead98873658f60e107d60cf45c7817d019f13565d4cbd8bb2a0b58ce0a78db2aaaf7de023a37c299103c6a0b
|
data/Gemfile.lock
CHANGED
@@ -7,7 +7,8 @@ module Cloudtasker
|
|
7
7
|
attr_reader :worker
|
8
8
|
|
9
9
|
# Key Namespace used for object saved under this class
|
10
|
-
|
10
|
+
JOBS_NAMESPACE = 'jobs'
|
11
|
+
STATES_NAMESPACE = 'states'
|
11
12
|
|
12
13
|
# List of statuses triggering a completion callback
|
13
14
|
COMPLETION_STATUSES = %w[completed dead].freeze
|
@@ -32,7 +33,7 @@ module Cloudtasker
|
|
32
33
|
return nil unless worker_id
|
33
34
|
|
34
35
|
# Retrieve related worker
|
35
|
-
payload = redis.fetch(key(worker_id))
|
36
|
+
payload = redis.fetch(key("#{JOBS_NAMESPACE}/#{worker_id}"))
|
36
37
|
worker = Cloudtasker::Worker.from_hash(payload)
|
37
38
|
return nil unless worker
|
38
39
|
|
@@ -140,7 +141,7 @@ module Cloudtasker
|
|
140
141
|
# @return [String] The worker namespaced id.
|
141
142
|
#
|
142
143
|
def batch_gid
|
143
|
-
key(batch_id)
|
144
|
+
key("#{JOBS_NAMESPACE}/#{batch_id}")
|
144
145
|
end
|
145
146
|
|
146
147
|
#
|
@@ -149,7 +150,7 @@ module Cloudtasker
|
|
149
150
|
# @return [String] The batch state namespaced id.
|
150
151
|
#
|
151
152
|
def batch_state_gid
|
152
|
-
|
153
|
+
key("#{STATES_NAMESPACE}/#{batch_id}")
|
153
154
|
end
|
154
155
|
|
155
156
|
#
|
@@ -371,7 +372,7 @@ module Cloudtasker
|
|
371
372
|
setup
|
372
373
|
|
373
374
|
# Complete batch
|
374
|
-
complete(:
|
375
|
+
complete(:completed)
|
375
376
|
rescue DeadWorkerError => e
|
376
377
|
complete(:dead)
|
377
378
|
raise(e)
|
@@ -72,8 +72,10 @@ module Cloudtasker
|
|
72
72
|
# @return [Cloudtasker::Cron::Schedule] The schedule instance.
|
73
73
|
#
|
74
74
|
def self.create(**opts)
|
75
|
-
|
76
|
-
|
75
|
+
redis.with_lock(key(opts[:id])) do
|
76
|
+
config = find(opts[:id]).to_h.merge(opts)
|
77
|
+
new(config).tap(&:save)
|
78
|
+
end
|
77
79
|
end
|
78
80
|
|
79
81
|
#
|
@@ -95,12 +97,14 @@ module Cloudtasker
|
|
95
97
|
# @param [String] id The schedule id.
|
96
98
|
#
|
97
99
|
def self.delete(id)
|
98
|
-
|
99
|
-
|
100
|
+
redis.with_lock(key(id)) do
|
101
|
+
schedule = find(id)
|
102
|
+
return false unless schedule
|
100
103
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
+
# Delete task and stored schedule
|
105
|
+
CloudTask.delete(schedule.task_id) if schedule.task_id
|
106
|
+
redis.del(schedule.gid)
|
107
|
+
end
|
104
108
|
end
|
105
109
|
|
106
110
|
#
|
@@ -8,7 +8,7 @@ module Cloudtasker
|
|
8
8
|
module_function
|
9
9
|
|
10
10
|
# Suffix added to cache keys when locking them
|
11
|
-
|
11
|
+
LOCK_KEY_PREFIX = 'cloudtasker/lock'
|
12
12
|
|
13
13
|
#
|
14
14
|
# Return the underlying redis client.
|
@@ -61,7 +61,7 @@ module Cloudtasker
|
|
61
61
|
return nil unless cache_key
|
62
62
|
|
63
63
|
# Wait to acquire lock
|
64
|
-
lock_key = [
|
64
|
+
lock_key = [LOCK_KEY_PREFIX, cache_key].join('/')
|
65
65
|
true until client.setnx(lock_key, true)
|
66
66
|
|
67
67
|
# yield content
|
data/lib/cloudtasker/version.rb
CHANGED