Skip to content

Commit 8f343d9

Browse files
Merge branch 'main' into feature/clear-ar-connections-flag
2 parents b969a72 + e20d376 commit 8f343d9

File tree

10 files changed

+44
-15
lines changed

10 files changed

+44
-15
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
env:
4242
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
4343
ports:
44-
- 33060:3306
44+
- 33066:3306
4545
options: --health-cmd "mysql -h localhost -e \"select now()\"" --health-interval 1s --health-timeout 5s --health-retries 30
4646
postgres:
4747
image: postgres:15.1

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ GEM
109109
psych (5.2.2)
110110
date
111111
stringio
112-
puma (6.4.3)
112+
puma (7.0.2)
113113
nio4r (~> 2.0)
114114
raabro (1.4.0)
115115
racc (1.8.1)
@@ -203,7 +203,7 @@ DEPENDENCIES
203203
mocha
204204
mysql2
205205
pg
206-
puma
206+
puma (~> 7.0)
207207
rdoc
208208
rubocop-rails-omakase
209209
solid_queue!

app/models/solid_queue/job.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class EnqueueError < StandardError; end
1010

1111
class << self
1212
def enqueue_all(active_jobs)
13+
active_jobs.each { |job| job.scheduled_at ||= Time.current }
1314
active_jobs_by_job_id = active_jobs.index_by(&:job_id)
1415

1516
transaction do

app/models/solid_queue/recurring_task.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def create_or_update_all(tasks)
4848
end
4949

5050
def delay_from_now
51-
[ (next_time - Time.current).to_f, 0 ].max
51+
[ (next_time - Time.current).to_f, 0.1 ].max
5252
end
5353

5454
def next_time

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ services:
88
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
99
volumes:
1010
- db:/var/lib/mysql
11-
ports: [ "127.0.0.1:33060:3306" ]
11+
ports: [ "127.0.0.1:33066:3306" ]
1212
postgres:
1313
image: postgres:15.1
1414
environment:

lib/puma/plugin/solid_queue.rb

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,27 @@ def start(launcher)
1111
monitor_solid_queue
1212
end
1313

14-
launcher.events.on_booted do
15-
@solid_queue_pid = fork do
16-
Thread.new { monitor_puma }
17-
SolidQueue::Supervisor.start
14+
if Gem::Version.new(Puma::Const::VERSION) < Gem::Version.new("7")
15+
launcher.events.on_booted do
16+
@solid_queue_pid = fork do
17+
Thread.new { monitor_puma }
18+
SolidQueue::Supervisor.start
19+
end
20+
end
21+
22+
launcher.events.on_stopped { stop_solid_queue }
23+
launcher.events.on_restart { stop_solid_queue }
24+
else
25+
launcher.events.after_booted do
26+
@solid_queue_pid = fork do
27+
Thread.new { monitor_puma }
28+
SolidQueue::Supervisor.start
29+
end
1830
end
19-
end
2031

21-
launcher.events.on_stopped { stop_solid_queue }
22-
launcher.events.on_restart { stop_solid_queue }
32+
launcher.events.after_stopped { stop_solid_queue }
33+
launcher.events.before_restart { stop_solid_queue }
34+
end
2335
end
2436

2537
private

solid_queue.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
3535
spec.add_development_dependency "appraisal"
3636
spec.add_development_dependency "debug", "~> 1.9"
3737
spec.add_development_dependency "mocha"
38-
spec.add_development_dependency "puma"
38+
spec.add_development_dependency "puma", "~> 7.0"
3939
spec.add_development_dependency "mysql2"
4040
spec.add_development_dependency "pg"
4141
spec.add_development_dependency "sqlite3"

test/dummy/config/database.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ default: &default
3333
username: root
3434
pool: 20
3535
host: "127.0.0.1"
36-
port: 33060
36+
port: 33066
3737
<% end %>
3838

3939
development:

test/integration/instrumentation_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ class InstrumentationTest < ActiveSupport::TestCase
327327

328328
events = subscribed("enqueue_recurring_task.solid_queue") do
329329
schedulers.each(&:start)
330-
sleep 1.01
330+
wait_while_with_timeout(1.1.second) { SolidQueue::RecurringExecution.count < 2 }
331331
schedulers.each(&:stop)
332332
end
333333

test/models/solid_queue/job_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,22 @@ class DiscardableNonOverlappingGroupedJob2 < NonOverlappingJob
356356
assert_equal "enqueued inside a rolled back transaction", job.arguments.dig("arguments", 0)
357357
end
358358

359+
test "enqueue_all assigns scheduled_at if missing" do
360+
freeze_time do
361+
active_jobs = [
362+
AddToBufferJob.new(1),
363+
AddToBufferJob.new(2).set(wait: 5.minutes)
364+
]
365+
366+
ActiveJob.perform_all_later(active_jobs)
367+
368+
jobs = SolidQueue::Job.where(active_job_id: active_jobs.map(&:job_id)).order(:id)
369+
370+
assert_equal Time.current, jobs[0].scheduled_at
371+
assert_equal 5.minutes.from_now, jobs[1].scheduled_at
372+
end
373+
end
374+
359375
private
360376
def assert_ready(&block)
361377
assert_job_counts(ready: 1, &block)

0 commit comments

Comments
 (0)