Class: FlushCounterIncrementsWorker
- Inherits:
-
Object
- Object
- FlushCounterIncrementsWorker
- Includes:
- ApplicationWorker
- Defined in:
- app/workers/flush_counter_increments_worker.rb
Overview
Invoked by CounterAttribute concern when incrementing counter attributes. The method `flush_increments_to_database!` that this worker uses is itself idempotent as it runs with exclusive lease to ensure that only one instance at the time can flush increments from Redis to the database.
Constant Summary
Constants included from ApplicationWorker
ApplicationWorker::LOGGING_EXTRA_KEY, ApplicationWorker::SAFE_PUSH_BULK_LIMIT
Constants included from WorkerAttributes
WorkerAttributes::DEFAULT_DATA_CONSISTENCY, WorkerAttributes::NAMESPACE_WEIGHTS, WorkerAttributes::VALID_DATA_CONSISTENCIES, WorkerAttributes::VALID_RESOURCE_BOUNDARIES, WorkerAttributes::VALID_URGENCIES
Instance Method Summary collapse
Methods included from Gitlab::SidekiqVersioning::Worker
Methods included from WorkerContext
Instance Method Details
#perform(model_name, model_id, attribute) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'app/workers/flush_counter_increments_worker.rb', line 24 def perform(model_name, model_id, attribute) return unless self.class.const_defined?(model_name) model_class = model_name.constantize model = model_class.find_by_id(model_id) return unless model model.flush_increments_to_database!(attribute) end |