feat(rails): support for solid queue#2942
Conversation
ba6dae4 to
0531f06
Compare
396f231 to
22e181a
Compare
cafb0e5 to
d61680a
Compare
22e181a to
ad38485
Compare
826f69d to
1c0f001
Compare
6322da1 to
edaee65
Compare
edaee65 to
42e895a
Compare
3eb29b0 to
6a62844
Compare
42e895a to
f1da26b
Compare
c9da666 to
d072fd5
Compare
951fdcb to
d9baea2
Compare
d65c086 to
49aa99c
Compare
d9baea2 to
f2c6e34
Compare
0afc95a to
c0bc241
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c0bc241. Configure here.
| ready = SolidQueue::ReadyExecution.claim("*", 100, process.id) | ||
| break if ready.empty? && SolidQueue::ScheduledExecution.none? | ||
| ready.each(&:perform) | ||
| end |
There was a problem hiding this comment.
Drain loop never terminates
Medium Severity
The drain loop only exits when the ready queue is empty and there are no rows in SolidQueue::ScheduledExecution. If scheduled rows exist but none are due yet (scheduled_at still in the future), dispatch_next_batch promotes nothing, claim returns an empty set, and the loop keeps spinning because scheduled rows remain.
Reviewed by Cursor Bugbot for commit c0bc241. Configure here.
| SolidQueue::ScheduledExecution.dispatch_next_batch(100) | ||
| ready = SolidQueue::ReadyExecution.claim("*", 100, process.id) | ||
| break if ready.empty? && SolidQueue::ScheduledExecution.none? | ||
| ready.each(&:perform) |
There was a problem hiding this comment.
Drain swallows job exceptions
High Severity
Calling perform on claimed Solid Queue executions returns a result object and rescues job failures instead of re-raising. The shared ActiveJob harness examples expect drain to propagate the same exceptions as ActiveJob::Base.execute, including for expect { drain }.to raise_error cases.
Reviewed by Cursor Bugbot for commit c0bc241. Configure here.


This adds support for
SolideQueueby simply adding its spec suite that makes sure our common ActiveJob integration works withSolidQueue, including distributed tracing.We may follow up with SQ-specific features added in separate PR(s).
Closes #2587