Repository navigation
fix(db): failed commits drop the response's background work; read-only finalization keeps loaded rows; savepoint rollback clears the write marker - #823
Merged
Conversation
…y finalization keeps loaded rows; savepoint rollback clears the write marker (#807, #808, #809) Claude-Session: https://claude.ai/code/session_01FXHA3ZicrtZ4C5QPEgxfgq
… database skill Claude-Session: https://claude.ai/code/session_01FXHA3ZicrtZ4C5QPEgxfgq
A commit issued mid-request (fastapi-users commits in create/update) cleared the write marker, so finalization took the read-only path and dropped the request's on_commit callbacks (session-version eviction, UserCreated). Root commits now leave an untracked mark that only finalization or a full rollback clears. mark_written no longer begins a transaction; write listeners are registered once per session class. A swallowed commit-abort still yields exactly one JSON 500. Claude-Session: https://claude.ai/code/session_01FXHA3ZicrtZ4C5QPEgxfgq
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Deploying simple-module-python with
|
| Latest commit: |
350ff9c
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://5a25fdfd.simple-module-python.pages.dev |
| Branch Preview URL: | https://fix-db-review-sessions.simple-module-python.pages.dev |
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.
Summary
CommitBeforeResponseMiddleware, the original response is now unwound. Its background tasks and streaming body never run, and exactly one JSON 500 is sent, even if inner code swallows the signal. Before, the endpoint's background tasks still ran and their writes were committed after the client got a 500.SessionTransaction.close()) instead of callingsession.rollback(). Loaded objects therefore aren't expired, and aStreamingResponsebody or background task can read already-loaded attributes without aMissingGreenlet. The connection is still released before the body streams. Loaded objects keep their values: usepopulate_existing()to refresh them.on_commitcallbacks;mark_writtennever begins a transaction;tenantsowner guard now goes throughmark_writteninstead of setting the flag directly.docs/database/sessions.md,docs/framework-conventions.md, the database skill, theget_dbdocstring and the CHANGELOG are updated.Verification
make lintand the docs build passed, along with these suites:make test-py: 7736 passedmake test-js: passedmake doctor: cleanCloses #807
Closes #808
Closes #809
Test plan
https://claude.ai/code/session_01FXHA3ZicrtZ4C5QPEgxfgq