Class: Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb

Constant Summary collapse

REDIS_KEY_PREFIX =
'sidekiq:concurrency_limit'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(worker_name) ⇒ ConcurrencyLimitService

Returns a new instance of ConcurrencyLimitService.



15
16
17
18
19
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 15

def initialize(worker_name)
  @worker_name = worker_name
  @queue_manager = QueueManager.new(worker_name: worker_name, prefix: REDIS_KEY_PREFIX)
  @worker_execution_tracker = WorkerExecutionTracker.new(worker_name: worker_name, prefix: REDIS_KEY_PREFIX)
end

Class Method Details

.add_to_queue!(job, context) ⇒ Object



22
23
24
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 22

def add_to_queue!(job, context)
  new(job['class']).add_to_queue!(job, context)
end

.cleanup_stale_trackers(worker_name) ⇒ Object



42
43
44
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 42

def cleanup_stale_trackers(worker_name)
  new(worker_name).cleanup_stale_trackers
end

.concurrent_worker_count(worker_name) ⇒ Object



54
55
56
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 54

def concurrent_worker_count(worker_name)
  new(worker_name).concurrent_worker_count
end

.has_jobs_in_queue?(worker_name) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 26

def has_jobs_in_queue?(worker_name)
  new(worker_name).has_jobs_in_queue?
end

.metadata_key(worker_name) ⇒ Object



38
39
40
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 38

def (worker_name)
  new(worker_name).
end

.queue_size(worker_name) ⇒ Object



34
35
36
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 34

def queue_size(worker_name)
  new(worker_name).queue_size
end

.resume_processing!(worker_name, limit:) ⇒ Object



30
31
32
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 30

def resume_processing!(worker_name, limit:)
  new(worker_name).resume_processing!(limit: limit)
end

.track_execution_end(worker_name) ⇒ Object



50
51
52
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 50

def track_execution_end(worker_name)
  new(worker_name).track_execution_end
end

.track_execution_start(worker_name) ⇒ Object



46
47
48
# File 'lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb', line 46

def track_execution_start(worker_name)
  new(worker_name).track_execution_start
end