26 lines
985 B
Ruby
26 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
|