DBIx-QuickDB
view release on metacpan or search on metacpan
0.000051 2026-06-13 22:02:33-07:00 America/Los_Angeles
0.000050 2026-06-10 14:14:43-07:00 America/Los_Angeles
- Watcher teardown blocks on the reap after sending SIGKILL instead of racing a deadline that was too short at low QDB_STOP_GRACE.
- t/Pool wraps every server-spawning db()/fetch_db() in the resource-skip helper so a semaphore-exhausted host skips instead of failing.
0.000049 2026-06-09 17:14:55-07:00 America/Los_Angeles
- Added Driver::destroy_quietly(): fast-destroy teardown for disposable clones (cleanup => 1) that kills, reaps, and removes the data dir immediately instead of a graceful shutdown that can block 2*QDB_STOP_GRACE+2 seconds.
- Added an opt-in fast_destroy attribute: DESTROY uses destroy_quietly() when cleanup => 1, falls through to the graceful path when cleanup => 0, and is inherited by clones via clone_data().
- Added per-driver fast_stop_sig() for fast/forced teardown: default SIGKILL, PostgreSQL overrides to SIGQUIT so the postmaster releases its SysV semaphores instead of leaking them; watcher escalates to SIGKILL if it does not stop promptly.
- Added a watcher fast-eliminate request (SIGUSR1) that kills with fast_stop_sig, reaps, and deletes the data dir; blocked (not ignored) across the startup exec so a request racing startup stays pending instead of being dropped.
- The graceful teardown path (stop()/eliminate()) now escalates a stuck shutdown through fast_stop_sig before SIGKILL, so it releases SysV semaphores instead of leaking them.
- get_db() and the pool tests skip_all instead of failing when a host is out of System V semaphores/shared memory; added skipall_on_resource_error(), also covering the DBIx::QuickDB->import path (t/QuickDB) and mid-run pool clone builds (t/Pool).
- On a start timeout, start() now reports the server's launch log and whether its process is still alive, instead of only the often-empty error log.
- Added t/fast_destroy.t, t/watcher_fast_kill.t, and t/resource_skip.t.
0.000048 2026-06-06 10:53:27-07:00 America/Los_Angeles
- Fixed a pid-reuse race that could shut down the wrong database server. After a server was stopped, its watcher exited and the OS could recycle the watcher's pid; a later teardown signal (e.g. eliminate() from the watcher object's DESTROY, which...
- Removed two redundant pid-signalling paths that carried the same pid-reuse hazard: the post-wait() server-pid poll in Driver::stop() (the watcher already reaps the server before it exits, so stop() now just trusts wait()) and the direct server-...
- Added t/clone_sequence.t, an explicit PostgreSQL regression asserting a clone of a stopped source continues its SERIAL sequence with the exact next id (no SEQ_LOG_VALS +32 jump); the broad Pool test only checks id ordering
0.000047 2026-06-05 22:35:47-07:00 America/Los_Angeles
0.000046 2026-06-03 14:58:27-07:00 America/Los_Angeles
- Made the server start timeout tunable via the QDB_START_TIMEOUT environment variable, keeping the previous 10s default. Slow hosts (e.g. CPAN smoke boxes) could need longer to bring a server up -- especially a clone doing crash recovery -- and ...
- Restored the watcher's graceful-shutdown window to its original 4s default (0.000045 had raised it to 15s); it remains tunable via QDB_STOP_GRACE. Normal consumers keep the original timeouts; only callers that opt in via the environment get lon...
- Coordinated the shutdown timeouts so they cannot fight each other: the watcher escalates to SIGKILL at QDB_STOP_GRACE and gives up at twice that, and the driver-side waits (for the watcher to exit, and for the server pid to die) now outlast tha...
- The Pool tests now request generous start/stop timeouts (via QDB_START_TIMEOUT and QDB_STOP_GRACE) so their build/clone/start/stop cycles do not spuriously fail on slow smoke hosts; this affects only the tests, not the library defaults
0.000045 2026-06-02 11:34:03-07:00 America/Los_Angeles
- Switched PostgreSQL shutdown back to SIGTERM (smart shutdown) for a proper, clean shutdown when possible. The earlier hang risk is now covered: stop() disconnects our own lingering handles first, forces a CHECKPOINT, and the watcher's SIGKILL g...
- Driver stop() now forces a CHECKPOINT (PostgreSQL) before shutting the server down. If the shutdown is slow enough to be SIGKILLed, the data dir is already consistent, so cloning it no longer triggers crash recovery that jumps SERIAL sequences ...
- Increased the watcher's graceful-shutdown window before escalating to SIGKILL (4s -> 15s) and made it configurable via the QDB_STOP_GRACE environment variable, so slow hosts can finish a clean shutdown
- Made the Pool tests tolerant of non-deterministic SERIAL ids (verify row values and that ids are strictly increasing, rather than exact id values)
- Fixed t/stop_socket_cleanup.t failing on platforms without DBI/IO::Socket::UNIX (e.g. Windows, smoke hosts lacking DBI): it now skips cleanly instead of dying
0.000044 2026-06-01 14:23:16-07:00 America/Los_Angeles
- Driver stop() now confirms the server is gone by its pid instead of waiting for the unix socket file to disappear, and removes a stale socket left behind by a SIGKILLed server. Fixes FreeBSD smoke failures where a slow shutdown was SIGKILLed an...
0.000043 2026-05-29 13:09:21-07:00 America/Los_Angeles
- Stop PostgreSQL with SIGINT (fast shutdown) instead of SIGTERM (smart shutdown) to avoid hangs/SIGKILL and leaked sockets on slow hosts
0.000042 2026-05-25 17:30:00-07:00 America/Los_Angeles
- Add DuckDB driver (optional DBD::DuckDB + duckdb CLI; tests skip if absent)
- Add [PruneCruft] to dist.ini so build artifacts (blib/,
pm_to_blib, MYMETA.*) no longer leak into release tarballs.
- Fix provider_info running mariadb-install-db with no args, which created a
143MB 'data' dir in CWD (GH #11)
- Exclude 'data/' from dist tarball via GatherDir as a safeguard
- Fix DB-QUICK-CLONE temp dirs and server processes leaking after tests (GH #10)
- Set SIGTERM/SIGINT to SIG_IGN before watcher exec to prevent race
condition where watcher is killed before signal handlers are installed
- Add fallback in Driver::DESTROY to kill server directly and clean up
dir if watcher fails to do so
0.000041 2026-04-07 17:13:03-07:00 America/Los_Angeles
- Fix clone_dir cp fallback copying source dir into dest instead of contents
- Add unit tests for all clone_dir implementations
- Fix Windows warnings and test failures:
- SQLite version_string no longer warns when sqlite3 binary is missing
- Pool no longer warns about undefined $ENV{USER} on Windows
- Pool clear_old_cache closes file handle before remove_tree (Windows file locking)
- Test files no longer warn about undefined $ENV{HOME} on Windows
- Pool instance_dir test uses canonical paths for cross-platform comparison
- Fix PostgreSQL initdb failure when system locale is non-UTF8
( run in 0.782 second using v1.01-cache-2.11-cpan-df04353d9ac )