4f4de36cac
This change is a fairly straightforward refactor to extract the tracing and correlation-id code from the gitlab rails codebase into the new LabKit-Ruby project. The corresponding import into LabKit-Ruby was in https://gitlab.com/gitlab-org/labkit-ruby/merge_requests/1 The code itself remains very similar for now. Extracting it allows us to reuse it in other projects, such as Gitaly-Ruby. This will give us the advantages of correlation-ids and distributed tracing in that project too.
31 lines
612 B
Ruby
31 lines
612 B
Ruby
# frozen_string_literal: true
|
|
|
|
# A dumb middleware that steals correlation id
|
|
# and sets it as a global context for the request
|
|
module Gitlab
|
|
module Middleware
|
|
class CorrelationId
|
|
include ActionView::Helpers::TagHelper
|
|
|
|
def initialize(app)
|
|
@app = app
|
|
end
|
|
|
|
def call(env)
|
|
::Labkit::Correlation::CorrelationId.use_id(correlation_id(env)) do
|
|
@app.call(env)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def correlation_id(env)
|
|
request(env).request_id
|
|
end
|
|
|
|
def request(env)
|
|
ActionDispatch::Request.new(env)
|
|
end
|
|
end
|
|
end
|
|
end
|