class Sidekiq::TransactionAwareClient

Public Class Methods

new(pool: nil, config: nil) click to toggle source
# File lib/sidekiq/transaction_aware_client.rb, line 8
def initialize(pool: nil, config: nil)
  @redis_client = Client.new(pool: pool, config: config)
end

Public Instance Methods

batching?() click to toggle source
# File lib/sidekiq/transaction_aware_client.rb, line 12
def batching?
  Thread.current[:sidekiq_batch]
end
push(item) click to toggle source
# File lib/sidekiq/transaction_aware_client.rb, line 16
def push(item)
  # 6160 we can't support both Sidekiq::Batch and transactions.
  return @redis_client.push(item) if batching?

  # pre-allocate the JID so we can return it immediately and
  # save it to the database as part of the transaction.
  item["jid"] ||= SecureRandom.hex(12)
  AfterCommitEverywhere.after_commit { @redis_client.push(item) }
  item["jid"]
end
push_bulk(items) click to toggle source

We don’t provide transactionality for push_bulk because we don’t want to hold potentially hundreds of thousands of job records in memory due to a long running enqueue process.

# File lib/sidekiq/transaction_aware_client.rb, line 31
def push_bulk(items)
  @redis_client.push_bulk(items)
end