Skip to content

Commit c0aa511

Browse files
authored
fix: ensure metrics are emitted even if batch fails (#65)
* ensure that metrics are emitted even if process_batch errors continuously * bump version, fix lockfiles
1 parent 6babf51 commit c0aa511

6 files changed

Lines changed: 31 additions & 8 deletions

File tree

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
journaled (6.2.5)
4+
journaled (6.2.6)
55
activejob
66
activerecord
77
activesupport
@@ -258,4 +258,4 @@ DEPENDENCIES
258258
webmock
259259

260260
BUNDLED WITH
261-
2.6.3
261+
4.0.7

gemfiles/rails_7_2.gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ..
33
specs:
4-
journaled (6.2.5)
4+
journaled (6.2.6)
55
activejob
66
activerecord
77
activesupport
@@ -258,4 +258,4 @@ DEPENDENCIES
258258
webmock
259259

260260
BUNDLED WITH
261-
2.6.3
261+
4.0.7

gemfiles/rails_8_0.gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ..
33
specs:
4-
journaled (6.2.5)
4+
journaled (6.2.6)
55
activejob
66
activerecord
77
activesupport
@@ -259,4 +259,4 @@ DEPENDENCIES
259259
webmock
260260

261261
BUNDLED WITH
262-
2.6.3
262+
4.0.7

lib/journaled/outbox/worker.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ def run_loop
5959
break
6060
end
6161

62+
emit_metrics_if_needed
63+
6264
begin
6365
process_batch
64-
emit_metrics_if_needed
6566
rescue StandardError => e
6667
Rails.logger.error("Worker error: #{e.class} - #{e.message}")
6768
Rails.logger.error(e.backtrace.join("\n"))

lib/journaled/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Journaled
4-
VERSION = "6.2.5"
4+
VERSION = "6.2.6"
55
end

spec/lib/journaled/outbox/worker_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,28 @@
180180
worker.start
181181
expect(processor).to have_received(:process_batch).at_least(:twice)
182182
end
183+
184+
it 'still emits queue metrics after errors' do
185+
call_count = 0
186+
allow(processor).to receive(:process_batch) do
187+
call_count += 1
188+
Timecop.travel(61.seconds) if call_count == 1
189+
worker.shutdown if call_count >= 2
190+
raise StandardError, 'Kinesis error'
191+
end
192+
193+
emitted = {}
194+
callback = ->(name, _started, _finished, _unique_id, payload) { emitted[name] = payload }
195+
196+
ActiveSupport::Notifications.subscribed(callback, /journaled\.worker\.queue_/) do
197+
worker.start
198+
199+
timeout = 2.seconds.from_now
200+
sleep 0.1 until emitted.key?('journaled.worker.queue_total_count') || Time.current > timeout
201+
end
202+
203+
expect(emitted).to have_key('journaled.worker.queue_total_count')
204+
end
183205
end
184206
end
185207

0 commit comments

Comments
 (0)