diff options
author | Stan Hu <stanhu@gmail.com> | 2019-08-19 22:03:22 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-08-19 23:01:57 -0700 |
commit | 474e8731d60cf9cdb2c12243cfa6b4e15c936858 (patch) | |
tree | 4238080e853c948de6455ca7206f6430e1e5e044 | |
parent | da9606512846aca61fb52f8afd6e9742426f8e3a (diff) | |
download | gitlab-ce-sh-include-post-receive-metadata.tar.gz |
Include metadata in PostReceive logssh-include-post-receive-metadata
Part of https://gitlab.com/gitlab-org/gitlab-ce/issues/65625
-rw-r--r-- | app/workers/concerns/application_worker.rb | 1 | ||||
-rw-r--r-- | app/workers/concerns/metadata_logger.rb | 30 | ||||
-rw-r--r-- | app/workers/post_receive.rb | 1 | ||||
-rw-r--r-- | lib/gitlab/git_post_receive.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/sidekiq_logging/structured_logger.rb | 1 | ||||
-rw-r--r-- | lib/gitlab/sidekiq_middleware/instrumentation_logger.rb | 1 |
6 files changed, 35 insertions, 1 deletions
diff --git a/app/workers/concerns/application_worker.rb b/app/workers/concerns/application_worker.rb index 2b36ccb8304..bc33579db01 100644 --- a/app/workers/concerns/application_worker.rb +++ b/app/workers/concerns/application_worker.rb @@ -8,6 +8,7 @@ module ApplicationWorker extend ActiveSupport::Concern include Sidekiq::Worker # rubocop:disable Cop/IncludeSidekiqWorker + include MetadataLogger included do set_queue diff --git a/app/workers/concerns/metadata_logger.rb b/app/workers/concerns/metadata_logger.rb new file mode 100644 index 00000000000..e5ca4bcb330 --- /dev/null +++ b/app/workers/concerns/metadata_logger.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module MetadataLogger + SIDEKIQ_JOB_METADATA_KEY = :sidekiq_job_metadata + + def store_job_metadata(project:, user:, details: {}) + return unless ::Gitlab::SafeRequestStore.active? + + save_metadata( + details.merge( + { + project_id: project&.id, + project_path: project&.full_path, + username: user&.username, + user_id: user&.id + }) + ) + end + + def self.job_metadata + ::Gitlab::SafeRequestStore[SIDEKIQ_JOB_METADATA_KEY] + end + + private + + def save_metadata(metadata) + ::Gitlab::SafeRequestStore[SIDEKIQ_JOB_METADATA_KEY] ||= {} + ::Gitlab::SafeRequestStore[SIDEKIQ_JOB_METADATA_KEY].merge(metadata.compact) + end +end diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb index 61d34981458..401a7347163 100644 --- a/app/workers/post_receive.rb +++ b/app/workers/post_receive.rb @@ -18,6 +18,7 @@ class PostReceive # time and thread ID's. Sidekiq.logger.info "changes: #{changes.inspect}" if ENV['SIDEKIQ_LOG_ARGUMENTS'] post_received = Gitlab::GitPostReceive.new(project, identifier, changes, push_options) + store_job_metadata(project: project, user: post_received.identify, details: { identifier: identifier }) if repo_type.wiki? process_wiki_changes(post_received) diff --git a/lib/gitlab/git_post_receive.rb b/lib/gitlab/git_post_receive.rb index 2a8bcd015a8..f3bb255d160 100644 --- a/lib/gitlab/git_post_receive.rb +++ b/lib/gitlab/git_post_receive.rb @@ -13,7 +13,7 @@ module Gitlab end def identify - super(identifier) + @identify ||= super(identifier) end def changes_refs diff --git a/lib/gitlab/sidekiq_logging/structured_logger.rb b/lib/gitlab/sidekiq_logging/structured_logger.rb index 60782306ade..77b156b10d8 100644 --- a/lib/gitlab/sidekiq_logging/structured_logger.rb +++ b/lib/gitlab/sidekiq_logging/structured_logger.rb @@ -48,6 +48,7 @@ module Gitlab def log_job_done(job, started_at, payload, job_exception = nil) payload = payload.dup add_instrumentation_keys!(job, payload) + payload['metadata'] = job['metadata'] if job['metadata'] payload['duration'] = elapsed(started_at) payload['completed_at'] = Time.now.utc diff --git a/lib/gitlab/sidekiq_middleware/instrumentation_logger.rb b/lib/gitlab/sidekiq_middleware/instrumentation_logger.rb index 979a3fce7e6..23870dfa0ec 100644 --- a/lib/gitlab/sidekiq_middleware/instrumentation_logger.rb +++ b/lib/gitlab/sidekiq_middleware/instrumentation_logger.rb @@ -15,6 +15,7 @@ module Gitlab # before sending it to the middleware: # https://github.com/mperham/sidekiq/blob/53bd529a0c3f901879925b8390353129c465b1f2/lib/sidekiq/processor.rb#L115-L118 ::Gitlab::InstrumentationHelper.add_instrumentation_data(job) + job['metadata'] = MetadataLogger.job_metadata end end end |