Module: Gitlab::PerformanceBar::RedisAdapterWhenPeekEnabled
- Defined in:
- lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb
Instance Method Summary collapse
-
#enqueue_stats_job(request_id) ⇒ Object
schedules a job which parses peek profile data and adds them to a structured log rubocop:disable Gitlab/ModuleWithInstanceVariables.
- #save(request_id) ⇒ Object
Instance Method Details
#enqueue_stats_job(request_id) ⇒ Object
schedules a job which parses peek profile data and adds them to a structured log rubocop:disable Gitlab/ModuleWithInstanceVariables
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb', line 19 def enqueue_stats_job(request_id) return unless Feature.enabled?(:performance_bar_stats, type: :ops) @client.sadd?(GitlabPerformanceBarStatsWorker::STATS_KEY, request_id) return unless uuid = Gitlab::ExclusiveLease.new( GitlabPerformanceBarStatsWorker::LEASE_KEY, timeout: GitlabPerformanceBarStatsWorker::LEASE_TIMEOUT ).try_obtain # stats key should be periodically processed and deleted by # GitlabPerformanceBarStatsWorker but if it doesn't happen for # some reason, we set expiration for the stats key to avoid # keeping millions of request ids which would be already expired # anyway # rubocop:disable Gitlab/ModuleWithInstanceVariables @client.expire( GitlabPerformanceBarStatsWorker::STATS_KEY, GitlabPerformanceBarStatsWorker::STATS_KEY_EXPIRE ) GitlabPerformanceBarStatsWorker.perform_in( GitlabPerformanceBarStatsWorker::WORKER_DELAY, uuid ) end |
#save(request_id) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb', line 7 def save(request_id) return unless ::Gitlab::PerformanceBar.enabled_for_request? return if request_id.blank? super enqueue_stats_job(request_id) end |