Fix CRR alter leak and restore binding on failed remote switch#363
Draft
cursor[bot] wants to merge 1 commit into
Draft
Fix CRR alter leak and restore binding on failed remote switch#363cursor[bot] wants to merge 1 commit into
cursor[bot] wants to merge 1 commit into
Conversation
- Commit crsql alter sessions in AdeDb.run() when ALTER fails, matching migrate-time behavior so duplicate-column races cannot leave CRR tables stuck mid-alter and block automation_runs writes. - Restore previous projectBinding in appStore when switchRemoteProject fails so renderer state stays aligned with the active remote project. Regression tests in kvDb.test.ts (CRR) and appStore.test.ts. Co-authored-by: Arul Sharma <arul28@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
This was referenced May 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Bug and impact
CRR alter session leak (
AdeDb.run)When a runtime
ALTER TABLEon a CRR table fails (e.g. two processes racesafeAlterand the loser hits “duplicate column”),AdeDb.run()rethrew without callingcrsql_commit_alter, leaving the table stuck mid-alter. Subsequent writes to that table (e.g.automation_runs) could fail until manual DB repair.Failed remote project switch (
appStore)switchRemoteProjectclearedprojectBindingbefore open and did not restore it on failure. The UI could show a remote project with a null binding, diverging from preload/main and risking wrong-target behavior after the transition ended.Root cause
makeMigrateDb); the post-openAdeDb.runwrapper did not.Fix
crsql_commit_alterin thecatchpath ofAdeDb.run()before rethrowing.previousBindingwhenswitchRemoteProjectfails for the active generation.Validation
npx vitest run src/renderer/state/appStore.test.ts -t "restores projectBinding when switchRemoteProject fails"kvDb.test.ts(runs when crsqlite is available on macOS CI)