Skip to content

Commit d839ad4

Browse files
rosaclaude
andcommitted
Rename silence_queries to silence_sql_logs
The setting silences all SQL statements (SELECT, INSERT, UPDATE, etc.), not just queries. silence_sql_logs is more accurate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b78c3fe commit d839ad4

File tree

19 files changed

+278
-188
lines changed

19 files changed

+278
-188
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ All the options available to Active Record for multiple databases can be used he
366366

367367
### Other configuration settings
368368

369-
_Note_: The settings in this section should be set in your `config/application.rb` or your environment config like this: `config.solid_queue.silence_queries = true`
369+
_Note_: The settings in this section should be set in your `config/application.rb` or your environment config like this: `config.solid_queue.silence_sql_logs = true`
370370

371371
There are several settings that control how Solid Queue works that you can set as well:
372372
- `logger`: the logger you want Solid Queue to use. Defaults to the app logger.
@@ -383,7 +383,7 @@ There are several settings that control how Solid Queue works that you can set a
383383
- `process_heartbeat_interval`: the heartbeat interval that all processes will follow—defaults to 60 seconds.
384384
- `process_alive_threshold`: how long to wait until a process is considered dead after its last heartbeat—defaults to 5 minutes.
385385
- `shutdown_timeout`: time the supervisor will wait since it sent the `TERM` signal to its supervised processes before sending a `QUIT` version to them requesting immediate termination—defaults to 5 seconds.
386-
- `silence_queries`: whether to silence Active Record logs emitted by Solid Queue's internal queries (polling, heartbeats, maintenance, etc.)—defaults to `true`. Queries from job execution are not silenced.
386+
- `silence_sql_logs`: whether to silence Active Record SQL logs emitted by Solid Queue's internal operations (polling, heartbeats, maintenance, enqueuing, etc.)—defaults to `true`. SQL from job execution is not silenced.
387387
- `supervisor_pidfile`: path to a pidfile that the supervisor will create when booting to prevent running more than one supervisor in the same host, or in case you want to use it for a health check. It's `nil` by default.
388388
- `preserve_finished_jobs`: whether to keep finished jobs in the `solid_queue_jobs` table—defaults to `true`.
389389
- `clear_finished_jobs_after`: period to keep finished jobs around, in case `preserve_finished_jobs` is true — defaults to 1 day. When installing Solid Queue, [a recurring job](#recurring-tasks) is automatically configured to clear finished jobs every hour on the 12th minute in batches. You can edit the `recurring.yml` configuration to change this as you see fit.

app/models/solid_queue/claimed_execution.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,16 @@ def discard
8989
end
9090

9191
def failed_with(error)
92-
transaction do
93-
job.failed_with(error)
94-
destroy!
92+
silencing_sql_logs do
93+
transaction do
94+
job.failed_with(error)
95+
destroy!
96+
end
9597
end
9698
end
9799

98100
def unblock_next_job
99-
job.unblock_next_blocked_job
101+
silencing_sql_logs { job.unblock_next_blocked_job }
100102
end
101103

102104
private
@@ -108,9 +110,11 @@ def execute
108110
end
109111

110112
def finished
111-
transaction do
112-
job.finished!
113-
destroy!
113+
silencing_sql_logs do
114+
transaction do
115+
job.finished!
116+
destroy!
117+
end
114118
end
115119
end
116120
end

app/models/solid_queue/job.rb

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ def enqueue_all(active_jobs)
1313
active_jobs.each { |job| job.scheduled_at ||= Time.current }
1414
active_jobs_by_job_id = active_jobs.index_by(&:job_id)
1515

16-
transaction do
17-
jobs = create_all_from_active_jobs(active_jobs)
18-
prepare_all_for_execution(jobs).tap do |enqueued_jobs|
19-
enqueued_jobs.each do |enqueued_job|
20-
active_jobs_by_job_id[enqueued_job.active_job_id].provider_job_id = enqueued_job.id
21-
active_jobs_by_job_id[enqueued_job.active_job_id].successfully_enqueued = true
16+
silencing_sql_logs do
17+
transaction do
18+
jobs = create_all_from_active_jobs(active_jobs)
19+
prepare_all_for_execution(jobs).tap do |enqueued_jobs|
20+
enqueued_jobs.each do |enqueued_job|
21+
active_jobs_by_job_id[enqueued_job.active_job_id].provider_job_id = enqueued_job.id
22+
active_jobs_by_job_id[enqueued_job.active_job_id].successfully_enqueued = true
23+
end
2224
end
2325
end
2426
end
@@ -29,9 +31,11 @@ def enqueue_all(active_jobs)
2931
def enqueue(active_job, scheduled_at: Time.current)
3032
active_job.scheduled_at = scheduled_at
3133

32-
create_from_active_job(active_job).tap do |enqueued_job|
33-
active_job.provider_job_id = enqueued_job.id if enqueued_job.persisted?
34-
active_job.successfully_enqueued = enqueued_job.persisted?
34+
silencing_sql_logs do
35+
create_from_active_job(active_job).tap do |enqueued_job|
36+
active_job.provider_job_id = enqueued_job.id if enqueued_job.persisted?
37+
active_job.successfully_enqueued = enqueued_job.persisted?
38+
end
3539
end
3640
end
3741

app/models/solid_queue/process/executor.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ module Executor
1313

1414
def fail_all_claimed_executions_with(error)
1515
if claims_executions?
16-
claimed_executions.fail_all_with(error)
16+
silencing_sql_logs { claimed_executions.fail_all_with(error) }
1717
end
1818
end
1919

2020
def release_all_claimed_executions
2121
if claims_executions?
22-
claimed_executions.release_all
22+
silencing_sql_logs { claimed_executions.release_all }
2323
end
2424
end
2525

app/models/solid_queue/record.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ def supports_insert_conflict_target?
2727
def use_index(*indexes)
2828
optimizer_hints "INDEX(#{quoted_table_name} #{indexes.join(', ')})"
2929
end
30+
31+
def silencing_sql_logs(&block)
32+
SolidQueue.silencing_sql_logs(&block)
33+
end
34+
end
35+
36+
def silencing_sql_logs(&block)
37+
self.class.silencing_sql_logs(&block)
3038
end
3139
end
3240
end

lib/active_job/queue_adapters/solid_queue_adapter.rb

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,16 @@ def enqueue_after_transaction_commit?
1616
end
1717

1818
def enqueue(active_job) # :nodoc:
19-
silence_queries { SolidQueue::Job.enqueue(active_job) }
19+
SolidQueue::Job.enqueue(active_job)
2020
end
2121

2222
def enqueue_at(active_job, timestamp) # :nodoc:
23-
silence_queries { SolidQueue::Job.enqueue(active_job, scheduled_at: Time.at(timestamp)) }
23+
SolidQueue::Job.enqueue(active_job, scheduled_at: Time.at(timestamp))
2424
end
2525

2626
def enqueue_all(active_jobs) # :nodoc:
27-
silence_queries { SolidQueue::Job.enqueue_all(active_jobs) }
27+
SolidQueue::Job.enqueue_all(active_jobs)
2828
end
29-
30-
private
31-
def silence_queries(&block)
32-
if SolidQueue.silence_queries? && ActiveRecord::Base.logger
33-
ActiveRecord::Base.logger.silence(&block)
34-
else
35-
yield
36-
end
37-
end
3829
end
3930
end
4031
end

lib/solid_queue.rb

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ module SolidQueue
3232

3333
mattr_accessor :shutdown_timeout, default: 5.seconds
3434

35-
mattr_accessor :silence_queries, default: true
35+
mattr_accessor :silence_sql_logs, default: true
3636

3737
mattr_accessor :supervisor_pidfile
3838
mattr_accessor :supervisor, default: false
@@ -61,23 +61,31 @@ def supervisor?
6161
supervisor
6262
end
6363

64-
def silence_queries?
65-
silence_queries
64+
def silencing_sql_logs(&block)
65+
if silence_sql_logs? && ActiveRecord::Base.logger
66+
ActiveRecord::Base.logger.silence(&block)
67+
else
68+
yield
69+
end
70+
end
71+
72+
def silence_sql_logs?
73+
silence_sql_logs
6674
end
6775

6876
def silence_polling=(value)
69-
SolidQueue.deprecator.warn("use silence_queries instead of silence_polling")
70-
self.silence_queries = value
77+
SolidQueue.deprecator.warn("use silence_sql_logs instead of silence_polling")
78+
self.silence_sql_logs = value
7179
end
7280

7381
def silence_polling
74-
SolidQueue.deprecator.warn("use silence_queries instead of silence_polling")
75-
silence_queries
82+
SolidQueue.deprecator.warn("use silence_sql_logs instead of silence_polling")
83+
silence_sql_logs
7684
end
7785

7886
def silence_polling?
79-
SolidQueue.deprecator.warn("use silence_queries? instead of silence_polling?")
80-
silence_queries?
87+
SolidQueue.deprecator.warn("use silence_sql_logs? instead of silence_polling?")
88+
silence_sql_logs?
8189
end
8290

8391
def preserve_finished_jobs?

lib/solid_queue/app_executor.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22

33
module SolidQueue
44
module AppExecutor
5-
def wrap_in_app_executor(silence: true, &block)
6-
if silence && SolidQueue.silence_queries? && ActiveRecord::Base.logger
7-
original = block
8-
block = proc { ActiveRecord::Base.logger.silence(&original) }
9-
end
10-
5+
def wrap_in_app_executor(&block)
116
if SolidQueue.app_executor
127
SolidQueue.app_executor.wrap(source: "application.solid_queue", &block)
138
else
@@ -32,5 +27,9 @@ def create_thread(&block)
3227
raise
3328
end
3429
end
30+
31+
def silencing_sql_logs(&block)
32+
SolidQueue.silencing_sql_logs(&block)
33+
end
3534
end
3635
end

lib/solid_queue/dispatcher.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ def poll
3737

3838
def dispatch_next_batch
3939
SolidQueue.instrument(:polling) do
40-
ScheduledExecution.dispatch_next_batch(batch_size)
40+
silencing_sql_logs do
41+
ScheduledExecution.dispatch_next_batch(batch_size)
42+
end
4143
end
4244
end
4345

@@ -50,7 +52,9 @@ def stop_concurrency_maintenance
5052
end
5153

5254
def all_work_completed?
53-
SolidQueue::ScheduledExecution.none?
55+
silencing_sql_logs do
56+
SolidQueue::ScheduledExecution.none?
57+
end
5458
end
5559

5660
def set_procline

lib/solid_queue/dispatcher/concurrency_maintenance.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ def initialize(interval, batch_size)
1313

1414
def start
1515
@concurrency_maintenance_task = Concurrent::TimerTask.new(run_now: true, execution_interval: interval) do
16-
expire_semaphores
17-
unblock_blocked_executions
16+
wrap_in_app_executor do
17+
silencing_sql_logs do
18+
expire_semaphores
19+
unblock_blocked_executions
20+
end
21+
end
1822
end
1923

2024
@concurrency_maintenance_task.add_observer do |_, _, error|
@@ -30,15 +34,11 @@ def stop
3034

3135
private
3236
def expire_semaphores
33-
wrap_in_app_executor do
34-
Semaphore.expired.in_batches(of: batch_size, &:delete_all)
35-
end
37+
Semaphore.expired.in_batches(of: batch_size, &:delete_all)
3638
end
3739

3840
def unblock_blocked_executions
39-
wrap_in_app_executor do
40-
BlockedExecution.unblock(batch_size)
41-
end
41+
BlockedExecution.unblock(batch_size)
4242
end
4343
end
4444
end

0 commit comments

Comments
 (0)