fix(core): improve database initialization error handling #33820
+433
−59
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Current Behavior
When database initialization fails due to filesystem issues, permission problems, or environment incompatibilities (like WAL mode not being supported), Nx shows generic error messages that don't provide actionable guidance to users. For example:
This makes it difficult for users to diagnose and resolve issues, especially in restricted environments like Docker containers, network filesystems, or WSL1.
Expected Behavior
With this PR, database initialization errors now provide:
Context-specific error messages - Different guidance based on the error type:
Automatic WAL mode fallback - When WAL journal mode is not supported by the filesystem, Nx now automatically falls back to DELETE journal mode instead of failing. This improves compatibility with:
WSL1 detection - Proactively detects WSL1 environments (which have known WAL incompatibilities) and uses DELETE mode from the start, avoiding failed attempts and retries.
Better cleanup on retry - When database initialization fails and needs to retry, all auxiliary files (WAL and SHM files) are also cleaned up, not just the main database file.
Actionable reporting instructions - All error messages now include:
NX_NATIVE_FILE_LOGGING=nx::native::db=trace)nx reset