Fix potential cause of db corruption #260
Merged
+6
−1
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.
We've had 2 instances of db corruption lately, which appears to be because of the Effect/non-Effect db access code. They're both connecting to the same file, but have been using different Journal modes. In the right circumstances, that will cause the file to become corrupt. AI fix explanation:
When Connection A (rollback) and Connection B (WAL) both access the same database:
- Connection A may overwrite pages that Connection B expects to be at a certain state
- Connection B's WAL entries reference page states that Connection A has modified
- The -shm shared memory state becomes inconsistent with actual file state
- B-tree page references become invalid ("2nd reference to page" errors we saw)