Skip to content

Commit c0b52a5

Browse files
committed
Fix instrumented count of released blocked executions
1 parent 84dd066 commit c0b52a5

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

app/models/solid_queue/blocked_execution.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ def release_many(concurrency_keys)
2626

2727
def release_one(concurrency_key)
2828
transaction do
29-
ordered.where(concurrency_key: concurrency_key).limit(1).non_blocking_lock.each(&:release)
29+
if execution = ordered.where(concurrency_key: concurrency_key).limit(1).non_blocking_lock.first
30+
execution.release
31+
end
3032
end
3133
end
3234

test/integration/instrumentation_test.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,10 @@ class InstrumentationTest < ActiveSupport::TestCase
220220
# 1 ready, 3 blocked
221221
4.times { SequentialUpdateResultJob.perform_later(result, name: "A") }
222222

223+
# 1 ready, 2 blocked
224+
result = JobResult.create!
225+
3.times { SequentialUpdateResultJob.perform_later(result, name: "B") }
226+
223227
# Simulate expiry of the concurrency locks
224228
travel_to 3.days.from_now
225229
SolidQueue::Semaphore.expired.delete_all
@@ -230,7 +234,7 @@ class InstrumentationTest < ActiveSupport::TestCase
230234
end
231235

232236
assert_equal 2, events.size
233-
assert_event events.first, "release_many_blocked", limit: 5, size: 1
237+
assert_event events.first, "release_many_blocked", limit: 5, size: 2
234238
assert_event events.second, "release_many_blocked", limit: 5, size: 0
235239
end
236240

0 commit comments

Comments
 (0)