Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/request_context.rb')
-rw-r--r--lib/gitlab/request_context.rb18
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/gitlab/request_context.rb b/lib/gitlab/request_context.rb
index c9eefe9a647..813468ece90 100644
--- a/lib/gitlab/request_context.rb
+++ b/lib/gitlab/request_context.rb
@@ -7,12 +7,28 @@ module Gitlab
RequestDeadlineExceeded = Class.new(StandardError)
- attr_accessor :client_ip, :start_thread_cpu_time, :request_start_time, :thread_memory_allocations
+ attr_accessor :client_ip, :spam_params, :start_thread_cpu_time, :request_start_time, :thread_memory_allocations
class << self
def instance
Gitlab::SafeRequestStore[:request_context] ||= new
end
+
+ def start_request_context(request:)
+ # We need to use Rack::Request to be consistent with Rails due to a Rails bug described in
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/58573#note_149799010
+ # Hosts behind a load balancer will only see 127.0.0.1 for the load balancer's IP.
+ rack_req = Rack::Request.new(request.env)
+ instance.client_ip = rack_req.ip
+
+ instance.spam_params = ::Spam::SpamParams.new_from_request(request: request)
+ instance.request_start_time = Gitlab::Metrics::System.real_time
+ end
+
+ def start_thread_context
+ instance.start_thread_cpu_time = Gitlab::Metrics::System.thread_cpu_time
+ instance.thread_memory_allocations = Gitlab::Memory::Instrumentation.start_thread_memory_allocations
+ end
end
def request_deadline