Sha256: 013a1a9e6be5f2df004ec4f8793c7bac1f3b85195526ca6b915340ec100497ff

Contents?: true

Size: 845 Bytes

Versions: 16

Compression:

Stored size: 845 Bytes

Contents

# frozen_string_literal: true

require 'activejob/retry'

module Lcms
  module Engine
    module RetryDelayed
      extend ActiveSupport::Concern

      module RetryBackoffStrategy
        MIN_DELAY_MULTIPLIER = 1.0
        MAX_DELAY_MULTIPLIER = 5.0
        RETRY_DELAYES = [30.seconds, 1.minute, 3.minutes, 7.minutes].freeze

        def self.should_retry?(retry_attempt, exception)
          return false if exception.message =~ /Script error message/ && exception.message =~ /PAGE_BREAK/

          retry_attempt <= RETRY_DELAYES.size
        end

        def self.retry_delay(retry_attempt, _exception)
          (RETRY_DELAYES[retry_attempt] || 0) * rand(MIN_DELAY_MULTIPLIER..MAX_DELAY_MULTIPLIER)
        end
      end

      included do
        include ::ActiveJob::Retry.new(strategy: RetryBackoffStrategy)
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
lcms-engine-0.5.5 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.5.4 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.5.3 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.5.2 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.5.1 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.5.0 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.4.2 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.4.1 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.4.0 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.3.1 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.1.4 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.3.0 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.1.3 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.2.0 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.1.2 app/jobs/concerns/lcms/engine/retry_delayed.rb
lcms-engine-0.1.0 app/jobs/concerns/lcms/engine/retry_delayed.rb