Start passing more context to Discourse.handle_exception

This commit is contained in:
riking
2014-07-17 13:22:46 -07:00
parent 2b5a955c18
commit 12cb682548
12 changed files with 109 additions and 39 deletions

View File

@ -14,10 +14,10 @@ module Scheduler
@async = val
end
def later(&blk)
def later(desc = nil, &blk)
if @async
start_thread unless @thread.alive?
@queue << [RailsMultisite::ConnectionManagement.current_db, blk]
@queue << [RailsMultisite::ConnectionManagement.current_db, blk, desc]
else
blk.call
end
@ -46,11 +46,15 @@ module Scheduler
end
def do_work
db, job = @queue.deq
RailsMultisite::ConnectionManagement.establish_connection(db: db)
job.call
db, job, desc = @queue.deq
begin
RailsMultisite::ConnectionManagement.establish_connection(db: db)
job.call
rescue => ex
Discourse.handle_exception(ex, {code: "Running deferred code '#{desc}'"})
end
rescue => ex
Discourse.handle_exception(ex)
Discourse.handle_exception(ex, {code: "Processing deferred code queue"})
ensure
ActiveRecord::Base.connection_handler.clear_active_connections!
end

View File

@ -42,13 +42,13 @@ module Scheduler
def keep_alive
@manager.keep_alive
rescue => ex
Discourse.handle_exception(ex)
Discourse.handle_exception(ex, {code: "Scheduling manager keep-alive"})
end
def reschedule_orphans
@manager.reschedule_orphans!
rescue => ex
Discourse.handle_exception(ex)
Discourse.handle_exception(ex, {code: "Scheduling manager orphan rescheduler"})
end
def process_queue
@ -62,8 +62,11 @@ module Scheduler
info.prev_result = "RUNNING"
@mutex.synchronize { info.write! }
klass.new.perform
rescue Jobs::HandledExceptionWrapper
# Discourse.handle_exception was already called
failed = true
rescue => e
Discourse.handle_exception(e)
Discourse.handle_exception(e, {code: "Running a scheduled job", job: klass})
failed = true
end
duration = ((Time.now.to_f - start) * 1000).to_i
@ -74,7 +77,7 @@ module Scheduler
@mutex.synchronize { info.write! }
end
rescue => ex
Discourse.handle_exception(ex)
Discourse.handle_exception(ex, {code: "Processing scheduled job queue"})
ensure
@running = false
end