File tree Expand file tree Collapse file tree 3 files changed +26
-1
lines changed Expand file tree Collapse file tree 3 files changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -162,7 +162,11 @@ def perform(job)
162
162
job . perform
163
163
rescue Object => e
164
164
log "#{ job . inspect } failed: #{ e . inspect } "
165
- job . fail ( e )
165
+ begin
166
+ job . fail ( e )
167
+ rescue Object => e
168
+ log "Received exception when reporting failure: #{ e . inspect } "
169
+ end
166
170
failed!
167
171
else
168
172
log "done: #{ job . inspect } "
Original file line number Diff line number Diff line change @@ -114,3 +114,17 @@ def self.perform
114
114
raise SyntaxError , "Extra Bad job!"
115
115
end
116
116
end
117
+
118
+ class BadFailureBackend < Resque ::Failure ::Base
119
+ def save
120
+ raise Exception . new ( "Failure backend error" )
121
+ end
122
+ end
123
+
124
+ def with_failure_backend ( failure_backend , &block )
125
+ previous_backend = Resque ::Failure . backend
126
+ Resque ::Failure . backend = failure_backend
127
+ yield block
128
+ ensure
129
+ Resque ::Failure . backend = previous_backend
130
+ end
Original file line number Diff line number Diff line change 25
25
assert_equal ( 'Extra Bad job!' , Resque ::Failure . all [ 'error' ] )
26
26
end
27
27
28
+ test "does not allow exceptions from failure backend to escape" do
29
+ job = Resque ::Job . new ( :jobs , { } )
30
+ with_failure_backend BadFailureBackend do
31
+ @worker . perform job
32
+ end
33
+ end
34
+
28
35
test "fails uncompleted jobs on exit" do
29
36
job = Resque ::Job . new ( :jobs , [ GoodJob , "blah" ] )
30
37
@worker . working_on ( job )
You can’t perform that action at this time.
0 commit comments