Class: SolidQueueTui::Actions::RetryJob
- Inherits:
-
Object
- Object
- SolidQueueTui::Actions::RetryJob
- Defined in:
- lib/solid_queue_tui/actions/retry_job.rb
Class Method Summary collapse
Class Method Details
.call(failed_execution_id) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/solid_queue_tui/actions/retry_job.rb', line 6 def self.call(failed_execution_id) conn = ActiveRecord::Base.connection # Get the failed execution and its job row = conn.select_one( "SELECT fe.id, fe.job_id, j.queue_name, j.priority " \ "FROM solid_queue_failed_executions fe " \ "JOIN solid_queue_jobs j ON j.id = fe.job_id " \ "WHERE fe.id = #{conn.quote(failed_execution_id.to_i)}" ) return false unless row conn.transaction do # Create a ready execution for the job conn.execute( "INSERT INTO solid_queue_ready_executions (job_id, queue_name, priority, created_at) " \ "VALUES (#{conn.quote(row['job_id'])}, #{conn.quote(row['queue_name'])}, " \ "#{conn.quote(row['priority'])}, #{conn.quote(Time.now.utc.iso8601)})" ) # Remove the failed execution conn.execute( "DELETE FROM solid_queue_failed_executions WHERE id = #{conn.quote(failed_execution_id.to_i)}" ) # Clear finished_at on the job conn.execute( "UPDATE solid_queue_jobs SET finished_at = NULL " \ "WHERE id = #{conn.quote(row['job_id'])}" ) end true rescue => e false end |
.retry_all ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/solid_queue_tui/actions/retry_job.rb', line 43 def self.retry_all conn = ActiveRecord::Base.connection rows = conn.select_all( "SELECT fe.id, fe.job_id, j.queue_name, j.priority " \ "FROM solid_queue_failed_executions fe " \ "JOIN solid_queue_jobs j ON j.id = fe.job_id" ) count = 0 rows.each do |row| conn.transaction do conn.execute( "INSERT INTO solid_queue_ready_executions (job_id, queue_name, priority, created_at) " \ "VALUES (#{conn.quote(row['job_id'])}, #{conn.quote(row['queue_name'])}, " \ "#{conn.quote(row['priority'])}, #{conn.quote(Time.now.utc.iso8601)})" ) conn.execute( "DELETE FROM solid_queue_failed_executions WHERE id = #{conn.quote(row['id'])}" ) conn.execute( "UPDATE solid_queue_jobs SET finished_at = NULL WHERE id = #{conn.quote(row['job_id'])}" ) count += 1 end rescue next end count end |