Adapt _process_response for runtime database selection#827
Merged
albertyw merged 2 commits intojazzband:masterfrom Sep 27, 2025
Merged
Adapt _process_response for runtime database selection#827albertyw merged 2 commits intojazzband:masterfrom
albertyw merged 2 commits intojazzband:masterfrom
Conversation
albertyw
approved these changes
Sep 22, 2025
Member
albertyw
left a comment
There was a problem hiding this comment.
I can confirm that there are no other transaction.atomic decorators, though there are 3 other with transaction.atomics in models.py
| collector = DataCollector() | ||
| collector.stop_python_profiler() | ||
| silk_request = collector.request | ||
| with transaction.atomic(using=router.db_for_write(models.SQLQuery)): |
Member
There was a problem hiding this comment.
It would be helpful to add a comment here describing why this is a with block instead of a decorator. This was actually the subject of a discussion in #801 but it did not go over the possibility of the database mutating at runtime.
Contributor
Author
There was a problem hiding this comment.
comment added, ty :)
albertyw
approved these changes
Sep 27, 2025
albertyw
approved these changes
Sep 27, 2025
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.
Previously, _process_response used a @transaction.atomic decorator, which evaluated the database at import time. Since the database can change at runtime, this caused connection errors in certain scenarios (in my case, multitenant server that uses request host to identify database).
This PR updates _process_response to:
Use a runtime-evaluated database alias inside a with transaction.atomic(using=...) block.
Impact:
Fixes runtime database connection issues.
Ensures profiling and response processing continue to work as intended.