Skip to content

Fix embedded DB lock contention by closing nocache DoltDBs and plumbing DBLoadParams through CREATE DATABASE / clone / stats#10375

Merged
coffeegoddd merged 2 commits intomainfrom
db/stats
Jan 27, 2026
Merged

Fix embedded DB lock contention by closing nocache DoltDBs and plumbing DBLoadParams through CREATE DATABASE / clone / stats#10375
coffeegoddd merged 2 commits intomainfrom
db/stats

Conversation

@coffeegoddd
Copy link
Copy Markdown
Contributor

Summary

This change fixes an embedded / driver reopen failure where a two-phase flow (CREATE DATABASE then later Ping) could still
hit the database is locked by another dolt process even with disable_singleton_cache + fail-fast lock behavior enabled.
Key updates:
• Close underlying DoltDBs in nocache mode: sqle.DoltDatabaseProvider.Close() now closes all underlying *doltdb.DoltDB
instances when DisableSingletonCacheParam is in effect, ensuring .dolt/noms/LOCK is released on engine shutdown.
• Plumb DBLoadParams into provider-managed DB creation paths:
• CREATE DATABASE / UNDROP DATABASE now use env.LoadWithoutDB so DBLoadParams can be applied before any DB is opened.
• dolt_clone applies provider DBLoadParams to the clone env before registration.
• registerNewDatabase defensively applies provider DBLoadParams to the env.
• Propagate DBLoadParams into stats backing store: statspro now uses LoadWithoutDB for new stats storage and copies
DBLoadParams from the host env so embedded-mode settings apply consistently.
• Regression coverage: adds a test that creates a DB via the SQL engine, closes the engine, and asserts the LOCK is
released.

Why

Embedded callers rely on deterministic reopen semantics under contention. Previously, the SQL provider close path didn’t
close the underlying *doltdb.DoltDB for newly created DBs in nocache mode, leaving the journal manifest LOCK held and
causing retries / reopens to fail.

@coffeegoddd
Copy link
Copy Markdown
Contributor Author

@coffeegoddd DOLT

comparing_percentages
100.000000 to 100.000000
version result total
80225a3 ok 5937471
version total_tests
80225a3 5937471
correctness_percentage
100.0

@coffeegoddd coffeegoddd merged commit f600064 into main Jan 27, 2026
23 of 26 checks passed
@coffeegoddd coffeegoddd deleted the db/stats branch January 27, 2026 23:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants