Skip to content

Instantly share code, notes, and snippets.

@kinkou
Last active March 24, 2024 23:30
Show Gist options
  • Save kinkou/f1e5f48a6e92493192c114f2ffb2435b to your computer and use it in GitHub Desktop.
Save kinkou/f1e5f48a6e92493192c114f2ffb2435b to your computer and use it in GitHub Desktop.
Notes for sidekiq_search development
What kinds of job groupings there are:
1. Enqueued jobs - jobs in queues (default, critical, etc)
First need to get a queue: Sidekiq::Queue.all.each { |queue| … }
To get a concrete queue: Sidekiq::Queue.new('default')
To get all jobs of a queue: queue.to_a => returns array of Sidekiq::JobRecord
> default_queue = Sidekiq::Queue.new('default')
> ls default_queue
Sidekiq::Queue#methods: as_json clear each find_job latency name paused? size
> job_object = default_queue.to_a.first
> job_object
#<Sidekiq::JobRecord:0x00000001085add00
@args=nil,
@item=
{"retry"=>1,
"queue"=>"default",
"args"=>["foo", {"foo"=>"bar"}],
"class"=>"DefaultJob",
"jid"=>"2b29796e7197e29e36eb9714",
"created_at"=>1711239667.986062,
"enqueued_at"=>1711239667.986293},
@queue="default",
@value=
"{\"retry\":1,\"queue\":\"default\",\"args\":[\"foo\",{\"foo\":\"bar\"}],\"class\":\"DefaultJob\",
\"jid\":\"2b29796e7197e29e36eb9714\",\"created_at\":1711239667.986062,\"enqueued_at\":1711239667.986293}">
> ls job_object
Sidekiq::JobRecord#methods:
[] args bid created_at delete display_args display_class enqueued_at error_backtrace item jid klass
latency parse queue tags value
instance variables: @args @item @queue @value
2. Scheduled
> scheduled_set = Sidekiq::ScheduledSet.new
> ls scheduled_set
Sidekiq::JobSet#methods: delete delete_by_jid delete_by_value each fetch find_job schedule
Sidekiq::SortedSet#methods: as_json clear name scan size
> scheduled_job = scheduled_set.to_a.first
#<Sidekiq::SortedEntry:0x0000000108507270
@args=nil,
@item={"retry"=>1, "queue"=>"default", "class"=>"DefaultJob", "args"=>[1, 2], "jid"=>"a6cbfb82ac86b63346f0d4bc",
"created_at"=>1711246231.848191},
@parent=#<Sidekiq::ScheduledSet:0x00000001089ad8d8 @_size=0, @name="schedule">,
@queue="default",
@score=1711246531.848046,
@value="{\"retry\":1,\"queue\":\"default\",\"class\":\"DefaultJob\",\"args\":[1,2],
\"jid\":\"a6cbfb82ac86b63346f0d4bc\",\"created_at\":1711246231.848191}">
> ls scheduled_job
Sidekiq::SortedEntry#methods: add_to_queue at delete error? kill parent reschedule retry score
Sidekiq::JobRecord#methods:
[] args bid created_at display_args display_class enqueued_at error_backtrace item jid klass latency
parse queue tags value
3. Retries
> retry_set = Sidekiq::RetrySet.new
> ls retry_set
Sidekiq::RetrySet#methods: kill_all retry_all
Sidekiq::JobSet#methods: delete delete_by_jid delete_by_value each fetch find_job schedule
Sidekiq::SortedSet#methods: as_json clear name scan size
> retry_job = retry_set.to_a.first
<Sidekiq::SortedEntry:0x0000000108026558
@args=nil,
@item=
{"retry"=>1,
"queue"=>"default",
"class"=>"DefaultJob",
"args"=>[1, 2],
"jid"=>"a6cbfb82ac86b63346f0d4bc",
"created_at"=>1711246231.848191,
"enqueued_at"=>1711303458.043564,
"error_message"=>"wrong number of arguments (given 2, expected 0)",
"error_class"=>"ArgumentError",
"failed_at"=>1711303458.045075,
"retry_count"=>0},
@parent=#<Sidekiq::RetrySet:0x0000000107a58fb8 @_size=1, @name="retry">,
@queue="default",
@score=1711303475.045152,
@value=
"{\"retry\":1,\"queue\":\"default\",\"class\":\"DefaultJob\",\"args\":[1,2],\"jid\":\"a6cbfb82ac86b63346f0d4bc\",
\"created_at\":1711246231.848191,\"enqueued_at\":1711303458.043564,\"error_message\":\"wrong number of arguments
(given 2, expected 0)\",\"error_class\":\"ArgumentError\",\"failed_at\":1711303458.045075,\"retry_count\":0}">
ls retry_job
Sidekiq::SortedEntry#methods: add_to_queue at delete error? kill parent reschedule retry score
Sidekiq::JobRecord#methods:
[] args bid created_at display_args display_class enqueued_at error_backtrace item jid klass latency
parse queue tags value
4. Dead
> dead_set = Sidekiq::DeadSet.new
#<Sidekiq::DeadSet:0x0000000104698700 @_size=0, @name="dead">
> ls dead_set
Sidekiq::DeadSet#methods: kill retry_all
Sidekiq::JobSet#methods: delete delete_by_jid delete_by_value each fetch find_job schedule
Sidekiq::SortedSet#methods: as_json clear name scan size
> dead_job = dead_set.to_a.first
#<Sidekiq::SortedEntry:0x00000001046385d0
@args=nil,
@item=
{"retry"=>1,
"queue"=>"default",
"class"=>"DefaultJob",
"args"=>[1, 2],
"jid"=>"a6cbfb82ac86b63346f0d4bc",
"created_at"=>1711246231.848191,
"enqueued_at"=>1711310158.025517,
"error_message"=>"wrong number of arguments (given 2, expected 0)",
"error_class"=>"ArgumentError",
"failed_at"=>1711303458.045075,
"retry_count"=>1,
"retried_at"=>1711310158.026992},
@parent=#<Sidekiq::DeadSet:0x0000000104698700 @_size=0, @name="dead">,
@queue="default",
@score=1711310158.027395,
@value=
"{\"retry\":1,\"queue\":\"default\",\"class\":\"DefaultJob\",\"args\":[1,2],\"jid\":\"a6cbfb82ac86b63346f0d4bc\",
\"created_at\":1711246231.848191,\"enqueued_at\":1711310158.025517,\"error_message\":\"wrong number of arguments
(given 2, expected 0)\",\"error_class\":\"ArgumentError\",\"failed_at\":1711303458.045075,\"retry_count\":1,
\"retried_at\":1711310158.026992}">
> ls dead_job
Sidekiq::SortedEntry#methods: add_to_queue at delete error? kill parent reschedule retry score
Sidekiq::JobRecord#methods:
[] args bid created_at display_args display_class enqueued_at error_backtrace item jid klass latency
parse queue tags value
5. Running (workers)
> running_set = Sidekiq::WorkSet.new
#<Sidekiq::WorkSet:0x0000000108022bd8>
> ls running_set
Sidekiq::WorkSet#methods: each size
> running_job = running_set.to_a.first
["host:52943:3e9049b30362",
"131j",
#<Sidekiq::Work:0x0000000107d74300
@hsh=
{"queue"=>"default",
"payload"=>
"{\"retry\":0,\"queue\":\"default\",\"args\":[],\"class\":\"DefaultJob\",
\"jid\":\"aa97eece59aecd9875b1b08e\",\"created_at\":1711312487.234532,
\"enqueued_at\":1711312487.234657}",
"run_at"=>1711312487},
@job=nil,
@process_id="host:52943:3e9049b30362",
@thread_id="131j">]
> running_job[2].job
#<Sidekiq::JobRecord:0x000000010876c4e8
@args=nil,
@item=
{"retry"=>0,
"queue"=>"default",
"args"=>[],
"class"=>"DefaultJob",
"jid"=>"1dcd75b196cec06b13d3bb3f",
"created_at"=>1711318424.041814,
"enqueued_at"=>1711318424.041895},
@queue="default",
@value=
"{\"retry\":0,\"queue\":\"default\",\"args\":[],\"class\":\"DefaultJob\",
\"jid\":\"1dcd75b196cec06b13d3bb3f\",\"created_at\":1711318424.041814,
\"enqueued_at\":1711318424.041895}">
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment