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)
162162 job . perform
163163 rescue Object => e
164164 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
166170 failed!
167171 else
168172 log "done: #{ job . inspect } "
Original file line number Diff line number Diff line change @@ -114,3 +114,17 @@ def self.perform
114114 raise SyntaxError , "Extra Bad job!"
115115 end
116116end
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 2525 assert_equal ( 'Extra Bad job!' , Resque ::Failure . all [ 'error' ] )
2626 end
2727
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+
2835 test "fails uncompleted jobs on exit" do
2936 job = Resque ::Job . new ( :jobs , [ GoodJob , "blah" ] )
3037 @worker . working_on ( job )
You can’t perform that action at this time.
0 commit comments