cloudtasker 0.12.rc8 → 0.12.rc9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ac7405c882f6cc73a1d18d5f0ffd4aaf1032d2b22973b03ac0c05b579321d47
4
- data.tar.gz: ab4e12890ba7f1cf2f8cfde952a532f8563998352ba3c0ba348f8253c0f562b4
3
+ metadata.gz: 50cd6021ad7511d7b5b385a6086eb315d9381a4f43909a6e1e9a0defbc679ea4
4
+ data.tar.gz: dc16cc1330b14b46a5d6ade9f9c171981fd3aef5b3db67dd474e29548acc177f
5
5
  SHA512:
6
- metadata.gz: 99a740769048aa11f4a7b2a3710ed98973c44c7d9fa5e059b37027f408d10e5c731cd01e28bbf7e0e2cc4df49290384fdbc073d4a7869d511af661d8c5363e1b
7
- data.tar.gz: 4214ca35db358f7f027cad6fe0e36353034789c3969726484c2af50cc019a34ce03840718609aa6941ab5a8d1d6b312f174d884a9c88a2e112c4219f6e1a26d8
6
+ metadata.gz: 30feac9331b9e8113e71af6c44a20d2f47fcbd41652a0d345ab8808d272bd14271ebb4a98711e42b238f6202fa8023a37c543e0f4ec7d9f9f7a46cc2732d96aa
7
+ data.tar.gz: 9b70a3c0733b2c510fafe48232c65bb79f5ad4da6b90fbcff86c0736fee590fab5f89846df9c41855dc7084460425660ee42799975975775b2239b9b8997171a
data/CHANGELOG.md CHANGED
@@ -6,15 +6,17 @@
6
6
 
7
7
  **Improvements:**
8
8
  - ActiveJob: do not double log errors (ActiveJob has its own error logging)
9
+ - Batch callbacks: Retry jobs when completion callback fails
10
+ - Batch state: use native Redis hashes to store batch state instead of a serialized hash in a string key
11
+ - Batch progress: restrict calculation to direct children by default. Allow depth to be specified. Calculating progress using all tree jobs created significant delays on large batches.
12
+ - Batch redis usage: cleanup batches as they get completed or become dead to avoid excessive redis usage with large batches.
9
13
  - Configuration: allow configuration of Cloud Tasks `dispatch deadline` at global and worker level
10
14
  - Cron jobs: Use Redis Sets instead of key pattern matching for resource listing
11
15
  - Error logging: Use worker logger so as to include context (job args etc.)
12
16
  - Error logging: Do not log exception and stack trace separately, combine them instead.
13
- - Batch callbacks: Retry jobs when completion callback fails
14
- - Batch state: use native Redis hashes to store batch state instead of a serialized hash in a string key
15
- - Batch progress: restrict calculation to direct children by default. Allow depth to be specified. Calculating progress using all tree jobs created significant delays on large batches.
16
17
  - Local server: Use Redis Sets instead of key pattern matching for resource listing
17
18
  - Worker: raise DeadWorkerError instead of MissingWorkerArgumentsError when arguments are missing. This is more consistent with what middlewares expect.
19
+ - Worker redis usage: delete redis payload storage once the job is successful or dead instead of expiring the key.
18
20
 
19
21
  **Fixed bugs:**
20
22
  - Retries: Enforce job retry limit on job processing. There was an edge case where jobs could be retried indefinitely on batch callback errors.
@@ -311,8 +311,8 @@ module Cloudtasker
311
311
  # Propagate event
312
312
  parent_batch&.on_child_complete(self, status)
313
313
 
314
- # The batch tree is complete. Cleanup the tree.
315
- cleanup unless parent_batch
314
+ # The batch tree is complete. Cleanup the downstream tree.
315
+ cleanup
316
316
  end
317
317
 
318
318
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cloudtasker
4
- VERSION = '0.12.rc8'
4
+ VERSION = '0.12.rc9'
5
5
  end
@@ -14,12 +14,6 @@ module Cloudtasker
14
14
  # payloads in Redis
15
15
  REDIS_PAYLOAD_NAMESPACE = 'payload'
16
16
 
17
- # Arg payload cache keys get expired instead of deleted
18
- # in case jobs are re-processed due to connection interruption
19
- # (job is successful but Cloud Task considers it as failed due
20
- # to network interruption)
21
- ARGS_PAYLOAD_CLEANUP_TTL = 3600 # 1 hour
22
-
23
17
  #
24
18
  # Return a namespaced key
25
19
  #
@@ -100,16 +94,13 @@ module Cloudtasker
100
94
  # Yied worker
101
95
  resp = yield(worker)
102
96
 
103
- # Schedule args payload deletion after job has been successfully processed
104
- # Note: we expire the key instead of deleting it immediately in case the job
105
- # succeeds but is considered as failed by Cloud Task due to network interruption.
106
- # In such case the job is likely to be re-processed soon after.
107
- redis.expire(args_payload_key, ARGS_PAYLOAD_CLEANUP_TTL) if args_payload_key && !worker.job_reenqueued
97
+ # Delete stored args payload if job has completed
98
+ redis.del(args_payload_key) if args_payload_key && !worker.job_reenqueued
108
99
 
109
100
  resp
110
101
  rescue DeadWorkerError => e
111
102
  # Delete stored args payload if job is dead
112
- redis.expire(args_payload_key, ARGS_PAYLOAD_CLEANUP_TTL) if args_payload_key
103
+ redis.del(args_payload_key) if args_payload_key
113
104
  log_execution_error(worker, e)
114
105
  raise(e)
115
106
  rescue StandardError => e
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudtasker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.rc8
4
+ version: 0.12.rc9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Lachaume
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-06 00:00:00.000000000 Z
11
+ date: 2021-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport