Skip to content

Commit ed30280

Browse files
committed
Fix index on blocked_executions for releasing and add index on semaphores
Also, include `job_id` in the ORDER when releasing blocked executions. Thanks to @djmb for the suggestions.
1 parent 7c3007a commit ed30280

File tree

5 files changed

+7
-4
lines changed

5 files changed

+7
-4
lines changed

Diff for: app/models/solid_queue/blocked_execution.rb

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ class BlockedExecution < SolidQueue::Execution
55
has_one :semaphore, foreign_key: :key, primary_key: :concurrency_key
66

77
scope :releasable, -> { left_outer_joins(:semaphore).merge(Semaphore.available.or(Semaphore.where(id: nil))) }
8-
scope :ordered, -> { order(priority: :asc) }
98

109
class << self
1110
def unblock(count)

Diff for: app/models/solid_queue/execution.rb

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ class Execution < SolidQueue::Record
44

55
self.abstract_class = true
66

7+
scope :ordered, -> { order(priority: :asc, job_id: :asc) }
8+
79
belongs_to :job
810

911
alias_method :discard, :destroy

Diff for: app/models/solid_queue/ready_execution.rb

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
module SolidQueue
22
class ReadyExecution < Execution
33
scope :queued_as, ->(queue_name) { where(queue_name: queue_name) }
4-
scope :ordered, -> { order(priority: :asc, job_id: :asc) }
54

65
assume_attributes_from_job
76

Diff for: db/migrate/20231103204612_create_solid_queue_concurrency_controls.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def change
1313

1414
t.datetime :created_at, null: false
1515

16-
t.index [ :priority, :concurrency_key, :queue_name, :job_id ], name: "index_solid_queue_blocked_executions_for_release"
16+
t.index [ :priority, :concurrency_key, :job_id ], name: "index_solid_queue_blocked_executions_for_release"
1717
end
1818

1919
create_table :solid_queue_semaphores do |t|
@@ -22,6 +22,8 @@ def change
2222
t.datetime :expires_at, null: false, index: true
2323

2424
t.timestamps
25+
26+
t.index [ :key, :value ]
2527
end
2628
end
2729
end

Diff for: test/dummy/db/schema.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
t.string "concurrency_key", null: false
2727
t.datetime "created_at", null: false
2828
t.index ["job_id"], name: "index_solid_queue_blocked_executions_on_job_id", unique: true
29-
t.index ["priority", "concurrency_key", "queue_name", "job_id"], name: "index_solid_queue_blocked_executions_for_release"
29+
t.index ["priority", "concurrency_key", "job_id"], name: "index_solid_queue_blocked_executions_for_release"
3030
end
3131

3232
create_table "solid_queue_claimed_executions", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
@@ -102,6 +102,7 @@
102102
t.datetime "created_at", null: false
103103
t.datetime "updated_at", null: false
104104
t.index ["expires_at"], name: "index_solid_queue_semaphores_on_expires_at"
105+
t.index ["key", "value"], name: "index_solid_queue_semaphores_on_key_and_value"
105106
t.index ["key"], name: "index_solid_queue_semaphores_on_key", unique: true
106107
end
107108

0 commit comments

Comments
 (0)