debian-mirror-gitlab/app/workers/reactive_caching_worker.rb

32 lines
937 B
Ruby
Raw Normal View History

2018-11-08 19:23:39 +05:30
# frozen_string_literal: true
2017-08-17 22:00:37 +05:30
class ReactiveCachingWorker
2018-03-17 18:26:18 +05:30
include ApplicationWorker
2017-08-17 22:00:37 +05:30
2019-12-21 20:55:43 +05:30
feature_category_not_owned!
2019-12-26 22:10:19 +05:30
# TODO: The reactive caching worker should be split into
# two different workers, one for latency_sensitive jobs without external dependencies
# and another worker without latency_sensitivity, but with external dependencies
# https://gitlab.com/gitlab-com/gl-infra/scalability/issues/34
# This worker should also have `worker_has_external_dependencies!` enabled
latency_sensitive_worker!
worker_resource_boundary :cpu
2017-08-17 22:00:37 +05:30
def perform(class_name, id, *args)
klass = begin
2019-07-07 11:18:12 +05:30
class_name.constantize
2017-08-17 22:00:37 +05:30
rescue NameError
nil
end
return unless klass
2019-07-07 11:18:12 +05:30
klass
.reactive_cache_worker_finder
.call(id, *args)
.try(:exclusively_update_reactive_cache!, *args)
2020-03-13 15:44:24 +05:30
rescue ReactiveCaching::ExceededReactiveCacheLimit => e
Gitlab::ErrorTracking.track_exception(e)
2017-08-17 22:00:37 +05:30
end
end