Sha256: fe589e743eaf518bc5bf9096fe56dd8834206c73e7c8d802abad4ccb3c1c3076

Contents?: true

Size: 1.54 KB

Versions: 41

Compression:

Stored size: 1.54 KB

Contents

# (c) Copyright IBM Corp. 2021
# (c) Copyright Instana Inc. 2021

module Instana
  module Instrumentation
    module ActiveJob
      def self.prepended(target)
        target.around_enqueue do |job, block|
          tags = {
            activejob: {
              queue: job.queue_name,
              job: job.class.to_s,
              action: :enqueue,
              job_id: job.job_id
            }
          }

          ::Instana::Tracer.trace(:activejob, tags) do
            context = ::Instana.tracer.context
            job.arguments = [{
              given_arguments: job.arguments,
              instana_context: context ? context.to_hash : nil
            }]

            block.call
          end
        end

        target.around_perform do |job, block|
          tags = {
            activejob: {
              queue: job.queue_name,
              job: job.class.to_s,
              action: :perform,
              job_id: job.job_id
            }
          }

          incoming_context = if job.arguments.is_a?(Array) && job.arguments.first.is_a?(Hash)
                               instana_context = job.arguments.first[:instana_context]
                               job.arguments = job.arguments.first[:given_arguments]
                               instana_context ? ::Instana::SpanContext.new(instana_context[:trace_id], instana_context[:span_id]) : nil
                             end

          ::Instana::Tracer.start_or_continue_trace(:activejob, tags, incoming_context) do
            block.call
          end
        end
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
instana-1.217.0 lib/instana/instrumentation/active_job.rb
instana-1.216.0 lib/instana/instrumentation/active_job.rb
instana-1.215.1 lib/instana/instrumentation/active_job.rb
instana-1.215.0 lib/instana/instrumentation/active_job.rb
instana-1.214.4 lib/instana/instrumentation/active_job.rb
instana-1.214.3 lib/instana/instrumentation/active_job.rb
instana-1.214.2 lib/instana/instrumentation/active_job.rb
instana-1.214.1 lib/instana/instrumentation/active_job.rb
instana-1.214.0 lib/instana/instrumentation/active_job.rb
instana-1.213.3 lib/instana/instrumentation/active_job.rb
instana-1.213.2 lib/instana/instrumentation/active_job.rb
instana-1.213.1 lib/instana/instrumentation/active_job.rb
instana-1.213.0 lib/instana/instrumentation/active_job.rb
instana-1.212.0 lib/instana/instrumentation/active_job.rb
instana-1.211.0 lib/instana/instrumentation/active_job.rb
instana-1.210.1 lib/instana/instrumentation/active_job.rb
instana-1.210.0 lib/instana/instrumentation/active_job.rb
instana-1.209.8 lib/instana/instrumentation/active_job.rb
instana-1.209.7 lib/instana/instrumentation/active_job.rb
instana-1.209.6 lib/instana/instrumentation/active_job.rb