fix: avoid reusing singleton field template instances across libraries - #1503
Open
JasonReb0rn wants to merge 1 commit into
Open
fix: avoid reusing singleton field template instances across libraries#1503JasonReb0rn wants to merge 1 commit into
JasonReb0rn wants to merge 1 commit into
Conversation
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
DEFAULT_FIELD_TEMPLATES in constants.py is a tuple of pre-built TextFieldTemplate/DatetimeFieldTemplate instances, reused as-is whenever a library is created (Library.create_library(), MigrationTo200). Once SQLAlchemy flushes those instances to a session, it remembers them as persistent. So any library created after the first one in the same process gets skipped entirely and silently ends up with no default field templates.
Fix: replace the shared tuple with a default_field_templates() function that builds fresh instances each call, and update both calls accordingly.
Mostly invisible in normal single-library app usage, but affects anything creating multiple libraries per process (e.g. the test suite).
Tasks Completed