Module: Gitlab::Patch::SidekiqScheduledEnq
- Defined in:
- lib/gitlab/patch/sidekiq_scheduled_enq.rb
Instance Method Summary collapse
-
#enqueue_jobs(sorted_sets = Sidekiq::Scheduled::SETS) ⇒ Object
The patched enqueue_jobs will poll non-namespaced scheduled sets before doing the same for namespaced sets via super and vice-versa depending on how Sidekiq.redis was configured.
Instance Method Details
#enqueue_jobs(sorted_sets = Sidekiq::Scheduled::SETS) ⇒ Object
The patched enqueue_jobs will poll non-namespaced scheduled sets before doing the same for namespaced sets via super and vice-versa depending on how Sidekiq.redis was configured
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/gitlab/patch/sidekiq_scheduled_enq.rb', line 11 def enqueue_jobs(sorted_sets = Sidekiq::Scheduled::SETS) # checks the other namespace if Gitlab::Utils.to_boolean(ENV['SIDEKIQ_ENABLE_DUAL_NAMESPACE_POLLING'], default: true) # Refer to https://github.com/sidekiq/sidekiq/blob/v6.5.7/lib/sidekiq/scheduled.rb#L25 # this portion swaps out Sidekiq.redis for Gitlab::Redis::Queues Gitlab::Redis::Queues.with do |conn| # rubocop:disable Cop/RedisQueueUsage sorted_sets.each do |sorted_set| # adds namespace if `super` polls with a non-namespaced Sidekiq.redis if Gitlab::Utils.to_boolean(ENV['SIDEKIQ_ENQUEUE_NON_NAMESPACED']) sorted_set = "#{Gitlab::Redis::Queues::SIDEKIQ_NAMESPACE}:#{sorted_set}" # rubocop:disable Cop/RedisQueueUsage end while !@done && (job = zpopbyscore(conn, keys: [sorted_set], argv: [Time.now.to_f.to_s])) # rubocop:disable Gitlab/ModuleWithInstanceVariables, Lint/AssignmentInCondition Sidekiq::Client.push(Sidekiq.load_json(job)) # rubocop:disable Cop/SidekiqApiUsage Sidekiq.logger.debug { "enqueued #{sorted_set}: #{job}" } end end end end # calls original enqueue_jobs which may or may not be namespaced depending on SIDEKIQ_ENQUEUE_NON_NAMESPACED super end |