Sha256: cdd6832d0b5de5a9fccff4b008bbb34b853691096e5dfe1245fd94eb797f982b

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

# 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:

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
up_gush-3.0.0.1 lib/up_gush/jobs/delete_workflow_from_redis.rb