canvas_sync 0.17.0.beta3 → 0.17.0.beta4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7f0019fb32e5940971c4845d47a317bd4f451dec546a96a505e3162c8a120d4
4
- data.tar.gz: 563d6fb7375f3576f8d2eac14752e14ebedbd210cc63b277c311d0e1c846da7e
3
+ metadata.gz: e2fac17ba7660bf59726320af878f6ca00b1d3dba48428677ee01dcaffdf210f
4
+ data.tar.gz: 05161fb24879704d5d68b7ae45a4a69c848db6c914666a307641de24081e0234
5
5
  SHA512:
6
- metadata.gz: ce3550e2f0aa94df6c6b712776d605c16cac568f2a70d49ee668ce5ebdc0978654f01d63619d38bdb1a7befe670518210dbc1e847497fababa4428f779bfd775
7
- data.tar.gz: 48a0e195407552a88b46ee93d7e8706585bd4729c618cdb807971a8694405c9e442b361da21472cf9c9d301bbc4dddb0c4c28b7faa5a8f3f4daf1a013195d6f3
6
+ metadata.gz: d1dbd39ffb4f0a58b90ecf9a36e493d360a88438aa93e7a40429e6a7f0004149c3e77a8da069c72df27f38d4657f769a5f6c309e4230a89db4d810d3afcac9f7
7
+ data.tar.gz: c4ae094ca61c7698aa95ab2378433ba1f84e1481ef6034fcce129e188c8fa309692cbc4e9a1c7607d38e77f292aad9128d59c5f115258c7f22c5b9d6b0cadd75
@@ -223,7 +223,7 @@ module CanvasSync
223
223
  r.hincrby("BID-#{bid}", "pending", 0)
224
224
  r.scard("BID-#{bid}-failed")
225
225
  r.hincrby("BID-#{bid}", "children", 0)
226
- r.scard("BID-#{bid}-complete")
226
+ r.scard("BID-#{bid}-batches-complete")
227
227
  r.hget("BID-#{bid}", "parent_bid")
228
228
 
229
229
  r.expire("BID-#{bid}-failed", BID_EXPIRE_TTL)
@@ -253,7 +253,7 @@ module CanvasSync
253
253
 
254
254
  r.scard("BID-#{bid}-dead")
255
255
  r.hincrby("BID-#{bid}", "children", 0)
256
- r.scard("BID-#{bid}-complete")
256
+ r.scard("BID-#{bid}-batches-complete")
257
257
  r.hget("BID-#{bid}", "parent_bid")
258
258
 
259
259
  r.expire("BID-#{bid}-dead", BID_EXPIRE_TTL)
@@ -273,17 +273,18 @@ module CanvasSync
273
273
  end
274
274
 
275
275
  def process_successful_job(bid, jid)
276
- failed, pending, children, complete, success, total, parent_bid = redis do |r|
276
+ _, failed, pending, children, complete, success, total, parent_bid = redis do |r|
277
277
  r.multi do
278
+ r.srem("BID-#{bid}-failed", jid)
279
+
278
280
  r.scard("BID-#{bid}-failed")
279
281
  r.hincrby("BID-#{bid}", "pending", -1)
280
282
  r.hincrby("BID-#{bid}", "children", 0)
281
- r.scard("BID-#{bid}-complete")
282
- r.scard("BID-#{bid}-success")
283
+ r.scard("BID-#{bid}-batches-complete")
284
+ r.scard("BID-#{bid}-batches-success")
283
285
  r.hget("BID-#{bid}", "total")
284
286
  r.hget("BID-#{bid}", "parent_bid")
285
287
 
286
- r.srem("BID-#{bid}-failed", jid)
287
288
  r.srem("BID-#{bid}-jids", jid)
288
289
  r.expire("BID-#{bid}", BID_EXPIRE_TTL)
289
290
  end
@@ -365,8 +366,9 @@ module CanvasSync
365
366
  "BID-#{bid}-callbacks-success",
366
367
  "BID-#{bid}-failed",
367
368
 
368
- "BID-#{bid}-success",
369
- "BID-#{bid}-complete",
369
+ "BID-#{bid}-batches-success",
370
+ "BID-#{bid}-batches-complete",
371
+ "BID-#{bid}-batches-failed",
370
372
  "BID-#{bid}-jids",
371
373
  )
372
374
  end
@@ -87,13 +87,16 @@ module CanvasSync
87
87
  def success(bid, status, parent_bid)
88
88
  return unless parent_bid
89
89
 
90
- _, _, success, _, complete, pending, children, failure = Batch.redis do |r|
90
+ _, _, success, _, _, complete, pending, children, failure = Batch.redis do |r|
91
91
  r.multi do
92
- r.sadd("BID-#{parent_bid}-success", bid)
93
- r.expire("BID-#{parent_bid}-success", Batch::BID_EXPIRE_TTL)
94
- r.scard("BID-#{parent_bid}-success")
95
- r.sadd("BID-#{parent_bid}-complete", bid)
96
- r.scard("BID-#{parent_bid}-complete")
92
+ r.sadd("BID-#{parent_bid}-batches-success", bid)
93
+ r.expire("BID-#{parent_bid}-batches-success", Batch::BID_EXPIRE_TTL)
94
+ r.scard("BID-#{parent_bid}-batches-success")
95
+
96
+ r.srem("BID-#{parent_bid}-batches-failed", bid)
97
+ r.sadd("BID-#{parent_bid}-batches-complete", bid)
98
+ r.scard("BID-#{parent_bid}-batches-complete")
99
+
97
100
  r.hincrby("BID-#{parent_bid}", "pending", 0)
98
101
  r.hincrby("BID-#{parent_bid}", "children", 0)
99
102
  r.scard("BID-#{parent_bid}-failed")
@@ -112,7 +115,7 @@ module CanvasSync
112
115
  r.multi do
113
116
  r.hincrby("BID-#{bid}", "pending", 0)
114
117
  r.hincrby("BID-#{bid}", "children", 0)
115
- r.scard("BID-#{bid}-success")
118
+ r.scard("BID-#{bid}-batches-success")
116
119
  end
117
120
  end
118
121
 
@@ -127,10 +130,11 @@ module CanvasSync
127
130
  # callback may add more jobs to the parent batch
128
131
 
129
132
  Batch.logger.debug {"Finalize parent complete bid: #{parent_bid}"}
130
- _, complete, pending, children, failure = Batch.redis do |r|
133
+ _, _, complete, pending, children, failure = Batch.redis do |r|
131
134
  r.multi do
132
- r.sadd("BID-#{parent_bid}-complete", bid)
133
- r.scard("BID-#{parent_bid}-complete")
135
+ r.sadd("BID-#{parent_bid}-batches-complete", bid)
136
+ r.sadd("BID-#{parent_bid}-batches-failed", bid)
137
+ r.scard("BID-#{parent_bid}-batches-complete")
134
138
  r.hincrby("BID-#{parent_bid}", "pending", 0)
135
139
  r.hincrby("BID-#{parent_bid}", "children", 0)
136
140
  r.scard("BID-#{parent_bid}-failed")
@@ -104,6 +104,16 @@ module CanvasSync
104
104
  end
105
105
  end
106
106
 
107
+ # Legacy Support
108
+ def merge_options(job, options)
109
+ matching_jobs = find_matching_jobs(sub_type)
110
+
111
+ matching_jobs.each do |j|
112
+ j[:options] ||= {}
113
+ j[:options].deep_merge!(options)
114
+ end
115
+ end
116
+
107
117
  private
108
118
 
109
119
  def find_matching_jobs(search_job, parent_job = self.base_job)
@@ -40,10 +40,26 @@ module CanvasSync
40
40
  'true' == Batch.redis { |r| r.hget("BID-#{bid}", 'complete') }
41
41
  end
42
42
 
43
+ def success?
44
+ 'true' == Batch.redis { |r| r.hget("BID-#{bid}", 'success') }
45
+ end
46
+
43
47
  def child_count
44
48
  Batch.redis { |r| r.hget("BID-#{bid}", 'children') }.to_i
45
49
  end
46
50
 
51
+ def completed_children_count
52
+ Batch.redis { |r| r.scard("BID-#{bid}-batches-complete") }.to_i
53
+ end
54
+
55
+ def successful_children_count
56
+ Batch.redis { |r| r.scard("BID-#{bid}-batches-success") }.to_i
57
+ end
58
+
59
+ def failed_children_count
60
+ Batch.redis { |r| r.scard("BID-#{bid}-batches-failed") }.to_i
61
+ end
62
+
47
63
  def data
48
64
  {
49
65
  bid: bid,
@@ -52,9 +68,13 @@ module CanvasSync
52
68
  pending: pending,
53
69
  created_at: created_at,
54
70
  complete: complete?,
71
+ success: success?,
55
72
  failure_info: failure_info,
56
73
  parent_bid: parent_bid,
57
- child_count: child_count
74
+ child_count: child_count,
75
+ completed_children_count: completed_children_count,
76
+ successful_children_count: successful_children_count,
77
+ failed_children_count: failed_children_count,
58
78
  }
59
79
  end
60
80
  end
@@ -15,6 +15,7 @@ module CanvasSync
15
15
  JobBatches::Batch.new.tap do |b|
16
16
  b.description = "CanvasSync Root Batch"
17
17
  b.on(:complete, "#{self.class.to_s}.batch_completed", sync_batch_id: sync_batch.id)
18
+ b.on(:success, "#{self.class.to_s}.batch_completed", sync_batch_id: sync_batch.id)
18
19
  b.context = globals
19
20
  b.jobs do
20
21
  JobBatches::SerialBatchJob.perform_now(chain_definition)
@@ -25,7 +26,7 @@ module CanvasSync
25
26
  def self.batch_completed(status, options)
26
27
  sbatch = SyncBatch.find(options['sync_batch_id'])
27
28
  sbatch.update!(
28
- status: status.failures.positive? ? 'failed' : 'completed',
29
+ status: status.success? ? 'completed' : 'failed',
29
30
  completed_at: DateTime.now,
30
31
  )
31
32
  end
@@ -1,3 +1,3 @@
1
1
  module CanvasSync
2
- VERSION = "0.17.0.beta3".freeze
2
+ VERSION = "0.17.0.beta4".freeze
3
3
  end
@@ -182,12 +182,12 @@ RSpec.describe CanvasSync::JobBatches::Batch do
182
182
  context 'complete' do
183
183
  before { batch.on(:complete, Object) }
184
184
  # before { batch.increment_job_queue(bid) }
185
- before { batch.jobs do TestWorker.perform_async end }
186
- before { CanvasSync::JobBatches::Batch.process_failed_job(bid, 'failed-job-id') }
185
+ # before { batch.jobs do TestWorker.perform_async end }
186
+ # before { CanvasSync::JobBatches::Batch.process_failed_job(bid, 'failed-job-id') }
187
187
 
188
188
  it 'tries to call complete callback' do
189
189
  expect(CanvasSync::JobBatches::Batch).to receive(:enqueue_callbacks).with(:complete, bid)
190
- CanvasSync::JobBatches::Batch.process_successful_job(bid, 'failed-job-id')
190
+ CanvasSync::JobBatches::Batch.process_failed_job(bid, 'failed-job-id')
191
191
  end
192
192
  end
193
193
 
@@ -199,6 +199,15 @@ RSpec.describe CanvasSync::JobBatches::Batch do
199
199
  CanvasSync::JobBatches::Batch.process_successful_job(bid, jid)
200
200
  end
201
201
 
202
+ it 'tries to call success callback after a previous failure' do
203
+ expect(CanvasSync::JobBatches::Batch).to receive(:enqueue_callbacks).with(:complete, bid).ordered
204
+ CanvasSync::JobBatches::Batch.process_failed_job(bid, jid)
205
+
206
+ expect(CanvasSync::JobBatches::Batch).to receive(:enqueue_callbacks).with(:complete, bid).ordered
207
+ expect(CanvasSync::JobBatches::Batch).to receive(:enqueue_callbacks).with(:success, bid).ordered
208
+ CanvasSync::JobBatches::Batch.process_successful_job(bid, jid)
209
+ end
210
+
202
211
  it 'cleanups redis key' do
203
212
  CanvasSync::JobBatches::Batch.process_successful_job(bid, jid)
204
213
  expect(CanvasSync::JobBatches::Batch.redis { |r| r.get("BID-#{bid}-pending") }.to_i).to eq(0)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0.beta3
4
+ version: 0.17.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nate Collings
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-26 00:00:00.000000000 Z
11
+ date: 2020-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler