Welcome to mirror list, hosted at ThFree Co, Russian Federation.

self_monitoring_project_create_worker.rb « workers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 69bc5431ff7882e2b4a627992cb135da6d02fcc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# frozen_string_literal: true

class SelfMonitoringProjectCreateWorker
  include ApplicationWorker
  include ExclusiveLeaseGuard

  # This worker falls under Self-monitoring with Monitor::APM group. However,
  # self-monitoring is not classified as a feature category but rather as
  # Other Functionality. Metrics seems to be the closest feature_category for
  # this worker.
  feature_category :metrics

  LEASE_TIMEOUT = 15.minutes.to_i

  EXCLUSIVE_LEASE_KEY = 'self_monitoring_service_creation_deletion'

  def perform
    try_obtain_lease do
      Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService.new.execute
    end
  end

  # @param job_id [String]
  #   Job ID that is used to construct the cache keys.
  # @return [Hash]
  #   Returns true if the job is enqueued or in progress and false otherwise.
  def self.in_progress?(job_id)
    Gitlab::SidekiqStatus.job_status(Array.wrap(job_id)).first
  end

  private

  def lease_key
    EXCLUSIVE_LEASE_KEY
  end

  def lease_timeout
    LEASE_TIMEOUT
  end
end