diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 14:34:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 14:34:42 +0000 |
commit | 9f46488805e86b1bc341ea1620b866016c2ce5ed (patch) | |
tree | f9748c7e287041e37d6da49e0a29c9511dc34768 /app/workers/concerns | |
parent | dfc92d081ea0332d69c8aca2f0e745cb48ae5e6d (diff) | |
download | gitlab-ce-9f46488805e86b1bc341ea1620b866016c2ce5ed.tar.gz |
Add latest changes from gitlab-org/gitlab@13-0-stable-ee
Diffstat (limited to 'app/workers/concerns')
-rw-r--r-- | app/workers/concerns/application_worker.rb | 17 | ||||
-rw-r--r-- | app/workers/concerns/chaos_queue.rb | 2 | ||||
-rw-r--r-- | app/workers/concerns/reactive_cacheable_worker.rb | 33 |
3 files changed, 51 insertions, 1 deletions
diff --git a/app/workers/concerns/application_worker.rb b/app/workers/concerns/application_worker.rb index c0062780688..7ab9a0c2a02 100644 --- a/app/workers/concerns/application_worker.rb +++ b/app/workers/concerns/application_worker.rb @@ -11,6 +11,8 @@ module ApplicationWorker include WorkerAttributes include WorkerContext + LOGGING_EXTRA_KEY = 'extra' + included do set_queue @@ -24,6 +26,21 @@ module ApplicationWorker payload.stringify_keys.merge(context) end + + def log_extra_metadata_on_done(key, value) + @done_log_extra_metadata ||= {} + @done_log_extra_metadata[key] = value + end + + def logging_extras + return {} unless @done_log_extra_metadata + + # Prefix keys with class name to avoid conflicts in Elasticsearch types. + # Also prefix with "extra." so that we know to log these new fields. + @done_log_extra_metadata.transform_keys do |k| + "#{LOGGING_EXTRA_KEY}.#{self.class.name.gsub("::", "_").underscore}.#{k}" + end + end end class_methods do diff --git a/app/workers/concerns/chaos_queue.rb b/app/workers/concerns/chaos_queue.rb index c5db10491f2..a9c557f0175 100644 --- a/app/workers/concerns/chaos_queue.rb +++ b/app/workers/concerns/chaos_queue.rb @@ -5,6 +5,6 @@ module ChaosQueue included do queue_namespace :chaos - feature_category :chaos_engineering + feature_category_not_owned! end end diff --git a/app/workers/concerns/reactive_cacheable_worker.rb b/app/workers/concerns/reactive_cacheable_worker.rb new file mode 100644 index 00000000000..e73707c2b43 --- /dev/null +++ b/app/workers/concerns/reactive_cacheable_worker.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module ReactiveCacheableWorker + extend ActiveSupport::Concern + + included do + include ApplicationWorker + + feature_category_not_owned! + + def self.context_for_arguments(arguments) + class_name, *_other_args = arguments + Gitlab::ApplicationContext.new(related_class: class_name.to_s) + end + end + + def perform(class_name, id, *args) + klass = begin + class_name.constantize + rescue NameError + nil + end + + return unless klass + + klass + .reactive_cache_worker_finder + .call(id, *args) + .try(:exclusively_update_reactive_cache!, *args) + rescue ReactiveCaching::ExceededReactiveCacheLimit => e + Gitlab::ErrorTracking.track_exception(e) + end +end |