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

worker.rb « sidekiq_config « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 46fa0aa5be14b0ada60a0a803a89e4d9473ca8d8 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# frozen_string_literal: true

module Gitlab
  module SidekiqConfig
    class Worker
      include Comparable

      attr_reader :klass
      delegate :feature_category_not_owned?, :get_feature_category, :get_tags,
               :get_urgency, :get_weight, :get_worker_resource_boundary,
               :idempotent?, :queue, :queue_namespace,
               :worker_has_external_dependencies?,
               to: :klass

      def initialize(klass, ee:)
        @klass = klass
        @ee = ee
      end

      def ee?
        @ee
      end

      def ==(other)
        to_yaml == case other
                   when self.class
                     other.to_yaml
                   else
                     other
                   end
      end

      def <=>(other)
        to_sort <=> other.to_sort
      end

      # Put namespaced queues first
      def to_sort
        [queue_namespace ? 0 : 1, queue]
      end

      # YAML representation
      def encode_with(coder)
        coder.represent_map(nil, to_yaml)
      end

      def to_yaml
        {
          name: queue,
          feature_category: get_feature_category,
          has_external_dependencies: worker_has_external_dependencies?,
          urgency: get_urgency,
          resource_boundary: get_worker_resource_boundary,
          weight: get_weight,
          idempotent: idempotent?,
          tags: get_tags
        }
      end

      def namespace_and_weight
        [queue_namespace, get_weight]
      end

      def queue_and_weight
        [queue, get_weight]
      end
    end
  end
end