Stop WAL checkpointer before fork; one thread owns the flock

Unify startup: initializer starts every non-test process, Puma and Resque
stop before fork and start again in the child. Only the contender thread
releases the lock. Drop Puma::CLI / single_puma_process? special cases.

Co-authored-by: Thomas Klemm <github@tklemm.eu>
This commit is contained in:
Cursor Agent
2026-10-07 19:00:40 +00:00
parent 88acc4e026
commit 61631ea5f9
7 changed files with 24 additions and 71 deletions
-9
View File
@@ -35,15 +35,6 @@ class SqliteWalCheckpointTest < ActiveSupport::TestCase
assert_empty checkpoint_threads
end
test "single_puma_process? treats only literal zero as single-process" do
assert SqliteWalCheckpoint.single_puma_process?(0)
assert SqliteWalCheckpoint.single_puma_process?("0")
assert_not SqliteWalCheckpoint.single_puma_process?("auto")
assert_not SqliteWalCheckpoint.single_puma_process?(2)
assert_not SqliteWalCheckpoint.single_puma_process?("2")
assert_not SqliteWalCheckpoint.single_puma_process?(8)
end
test "tick checkpoints through the elected lock holder" do
db_path = build_wal_database(rows: 50)
SqliteWalCheckpoint.database_path_override = db_path