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)
3737
3838 def create_from_active_job ( active_job )
3939 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
4045 end
4146
4247 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
241241 end
242242 end
243243
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+
244260 if ENV [ "SEPARATE_CONNECTION" ] && ENV [ "TARGET_DB" ] != "sqlite"
245261 test "uses a different connection and transaction than the one in use when connects_to is specified" do
246262 assert_difference -> { SolidQueue ::Job . count } do
You can’t perform that action at this time.
0 commit comments