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

reconcile_existing_runner_versions_cron_worker.rb « runners « ci « workers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 69ab477c80a982683953757df94f8b7f758d9fc9 (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
# frozen_string_literal: true

module Ci
  module Runners
    class ReconcileExistingRunnerVersionsCronWorker
      include ApplicationWorker

      # This worker does not schedule other workers that require context.
      include CronjobQueue # rubocop:disable Scalability/CronWorkerContext

      data_consistency :sticky
      feature_category :runner_fleet
      urgency :low

      deduplicate :until_executed
      idempotent!

      def perform(cronjob_scheduled = true)
        if cronjob_scheduled
          # Introduce some randomness across the day so that instances don't all hit the GitLab Releases API
          # around the same time of day
          period = rand(0..12.hours.in_seconds)
          self.class.perform_in(period, false)

          Sidekiq.logger.info(
            class: self.class.name,
            message: "rescheduled job for #{period.seconds.from_now}")

          return
        end

        result = ::Ci::Runners::ReconcileExistingRunnerVersionsService.new.execute
        result.payload.each { |key, value| log_extra_metadata_on_done(key, value) }
      end
    end
  end
end