gitlab-org--gitlab-foss/lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb

25 lines
985 B
Ruby

# frozen_string_literal: true
module Gitlab
module SidekiqMiddleware
class ExtraDoneLogMetadata
def call(worker, job, queue)
yield
# We needed a way to pass state from a worker in to the
# Gitlab::SidekiqLogging::StructuredLogger . Unfortunately the
# StructuredLogger itself is not a middleware so cannot access the
# worker object. We also tried to use SafeRequestStore but to pass the
# data up but that doesn't work either because this is reset in
# Gitlab::SidekiqMiddleware::RequestStoreMiddleware inside yield for
# the StructuredLogger so it's cleared before we get to logging the
# done statement. As such the only way to do this is to pass the data
# up in the `job` object. Since `job` is just a Hash we can add this
# extra metadata there.
if worker.respond_to?(:logging_extras)
job.merge!(worker.logging_extras)
end
end
end
end
end