# typed: true # :nocov: module UpGush module Jobs class DeleteWorkflowFromRedis include Sidekiq::Worker extend T::Sig sidekiq_options lock: :until_executed, on_conflict: :reject def perform(redis_workflow_id) started_at = Time.now.to_f wf = Gush::Workflow.find(redis_workflow_id) # update the up workflow one last time UpGush::SyncUpWorkflow.new(up_wf_id: wf.up_workflow_id).sync_with(status: wf.status) wf.client.destroy_workflow(wf) rescue Gush::WorkflowNotFound => e UpGush::Logger.log.warn("UpGush::Jobs::DeleteWorkflowFromRedis => WF: #{redis_workflow_id} - #{e.message}") ensure UpGush::EventTracker.job_progress( job(redis_workflow_id, started_at, [redis_workflow_id]), jid, @queue_latency ) end private def job(wf_id, started_at, params) Gush::Job.new( workflow_id: wf_id, klass: self.class.name, sidekiq_job_id: jid, name: self.class.name, finished_at: Time.now.to_f, enqueued_at: nil, started_at: started_at, failed_at: nil, retries: nil, params: params, pause_reason: nil ) end end end end # :nocov: