summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-08-19 22:03:22 -0700
committerStan Hu <stanhu@gmail.com>2019-08-19 23:01:57 -0700
commit474e8731d60cf9cdb2c12243cfa6b4e15c936858 (patch)
tree4238080e853c948de6455ca7206f6430e1e5e044
parentda9606512846aca61fb52f8afd6e9742426f8e3a (diff)
downloadgitlab-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.rb1
-rw-r--r--app/workers/concerns/metadata_logger.rb30
-rw-r--r--app/workers/post_receive.rb1
-rw-r--r--lib/gitlab/git_post_receive.rb2
-rw-r--r--lib/gitlab/sidekiq_logging/structured_logger.rb1
-rw-r--r--lib/gitlab/sidekiq_middleware/instrumentation_logger.rb1
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