Sha256: 7923fa896514bd99c83f027e6920a4d6e7db515460798232136bda1a0b786580

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 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.bulk_set(
            session_tracker_id: job[Hawkei::Const::SESSION_TRACKER_ID] || SecureRandom.uuid,
            server_software: "Sidekiq #{::Sidekiq::VERSION}",
            auto_id: job[Hawkei::Const::FOLLOW],
          )

          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.1.0 lib/hawkei/plugins/sidekiq/server_middleware.rb