Sha256: 3d8c18215e01eb6483efdbbd9a462dc699c48ef51f95d457e2fb120f5d3d64ee

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

module Hawkei
  module Plugins
    module Sidekiq
      ##
      # Hawkei \Plugins \Sidekiq \Server \Middleware
      #
      # Server middleware for sidekiq
      #
      class ServerMiddleware

        def call(_worker, job, _queue)
          Hawkei::Store.set(:session_tracker_id, job['_hawkei_stid'] || SecureRandom.uuid)
          Hawkei::Store.set(:server_software, "Sidekiq #{::Sidekiq::VERSION}")
          store_worker_data(job)
          yield
        ensure
          Hawkei::Store.clear!
        end

        private

        def store_worker_data(job)
          Hawkei::Store.set(
            :worker,
            name: 'sidekiq',
            version: ::Sidekiq::VERSION,
            queue: job['queue'],
            class: job['class'],
            id: job['jid'],
            created_at: convert_to_iso8601(job['created_at']),
            process_at: convert_to_iso8601(job['enqueued_at']),
            args: job['args'],
            retried: job['retry_count'].is_a?(Integer),
            retry_number: job['retry_count'],
            failed_at: convert_to_iso8601(job['failed_at'])
          )
        end

        def convert_to_iso8601(int_time)
          Time.at(int_time).utc.iso8601(3)
        rescue StandardError => _e
          nil
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hawkei-1.0.0 lib/hawkei/plugins/sidekiq/server_middleware.rb