File: sidekiq_common.rb

package info (click to toggle)
ruby-gitlab-labkit 0.36.1-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 444 kB
  • sloc: ruby: 1,705; makefile: 6
file content (36 lines) | stat: -rw-r--r-- 1,099 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# frozen_string_literal: true

module Labkit
  module Middleware
    module Sidekiq
      module Tracing
        # SidekiqCommon is a mixin for the sidekiq middleware components
        module SidekiqCommon
          def job_class(job)
            # Active Job wrapping can be found at
            # https://github.com/rails/rails/blob/v6.0.3.1/activejob/lib/active_job/queue_adapters/sidekiq_adapter.rb
            job["wrapped"].presence || job["class"].presence || "undefined"
          end

          def wrapped?(job)
            job["wrapped"].present?
          end

          def tags_from_job(job, kind)
            tags = {
              "component" => "sidekiq",
              "span.kind" => kind,
              "sidekiq.wrapped" => wrapped?(job),
              "sidekiq.queue" => job["queue"],
              "sidekiq.jid" => job["jid"],
              "sidekiq.retry" => job["retry"].to_s,
              "sidekiq.args" => job["args"]&.join(", "),
            }
            tags["sidekiq.at"] = job["at"] if job["at"]
            tags
          end
        end
      end
    end
  end
end