class Sidekiq::Metrics::Adapter::Bigquery::Worker

Public Instance Methods

perform(worker_status) click to toggle source
# File lib/sidekiq/metrics/adapter/bigquery.rb, line 17
def perform(worker_status)
  @worker_status = {
    queue: worker_status['queue'] || worker_status[:queue],
    class: worker_status['class'] || worker_status[:class],
    retry: worker_status['retry'] || worker_status[:retry],
    jid: worker_status['jid'] || worker_status[:jid],
    status: worker_status['status'] || worker_status[:status],
    enqueued_at: worker_status['enqueued_at'] || worker_status[:enqueued_at],
    started_at: worker_status['started_at'] || worker_status[:started_at],
    finished_at: worker_status['finished_at'] || worker_status[:finished_at]
  }

  table_suffix = begin
                   Time.at(@worker_status[:enqueued_at]).strftime('%Y%m%d')
                 rescue
                   nil
                 end
  table = Sidekiq::Metrics.configuration.adapter.table(table_suffix)
  result = table.insert([@worker_status])

  if Sidekiq::Metrics.configuration.adapter.raise_error
    error = result.insert_error_for(@worker_status)
    raise InsertError, error.errors.to_json if error
  end
end