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 Gitlab::Loggable
Constants included from WorkerAttributes
WorkerAttributes::DEFAULT_DATA_CONSISTENCY, WorkerAttributes::DEFAULT_DATA_CONSISTENCY_PER_DB, WorkerAttributes::DEFAULT_DEFER_DELAY, WorkerAttributes::LOAD_BALANCED_DATA_CONSISTENCIES, WorkerAttributes::NAMESPACE_WEIGHTS, WorkerAttributes::VALID_DATA_CONSISTENCIES, WorkerAttributes::VALID_RESOURCE_BOUNDARIES, WorkerAttributes::VALID_URGENCIES
Instance Method Summary collapse
Methods included from Gitlab::Loggable
Methods included from Gitlab::SidekiqVersioning::Worker
Methods included from WorkerContext
Instance Method Details
#perform(model_name, model_id, attribute) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'app/workers/flush_counter_increments_worker.rb', line 25 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 Gitlab::Counters::BufferedCounter.new(model, attribute).commit_increment! end |