cloudtasker 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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