File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,11 @@ def enqueue(active_job, scheduled_at: Time.current)
37
37
38
38
def create_from_active_job ( active_job )
39
39
create! ( **attributes_from_active_job ( active_job ) )
40
+ rescue ActiveRecord ::ActiveRecordError => e
41
+ enqueue_error = ActiveJob ::EnqueueError . new ( "#{ e . class . name } : #{ e . message } " ) . tap do |error |
42
+ error . set_backtrace e . backtrace
43
+ end
44
+ raise enqueue_error
40
45
end
41
46
42
47
def create_all_from_active_jobs ( active_jobs )
Original file line number Diff line number Diff line change @@ -241,6 +241,22 @@ class NonOverlappingGroupedJob2 < NonOverlappingJob
241
241
end
242
242
end
243
243
244
+ test "raise ActiveJob::EnqueueError when there's an ActiveRecordError" do
245
+ SolidQueue ::Job . stubs ( :create! ) . raises ( ActiveRecord ::Deadlocked )
246
+
247
+ active_job = AddToBufferJob . new ( 1 ) . set ( priority : 8 , queue : "test" )
248
+ assert_raises ActiveJob ::EnqueueError do
249
+ SolidQueue ::Job . enqueue ( active_job )
250
+ end
251
+
252
+ enqueue_result = AddToBufferJob . perform_later ( 1 ) do |job |
253
+ assert job . enqueue_error . is_a? ActiveJob ::EnqueueError
254
+ assert_not job . successfully_enqueued?
255
+ end
256
+
257
+ assert_not enqueue_result
258
+ end
259
+
244
260
if ENV [ "SEPARATE_CONNECTION" ] && ENV [ "TARGET_DB" ] != "sqlite"
245
261
test "uses a different connection and transaction than the one in use when connects_to is specified" do
246
262
assert_difference -> { SolidQueue ::Job . count } do
You can’t perform that action at this time.
0 commit comments