Conversation
…ults are known getProperties() caches its result, so a call made before the first EntityManager was created permanently lacked the EM level defaults. Only install the cache once emEmptyPropsProperties is set, so a caller racing with the first createEntityManager() can no longer make an incomplete map stick, and make both fields volatile for visibility.
Contributor
Author
|
Closing unmerged: CI showed that always merging the EntityManager level defaults breaks TestSchemaGenDrop, which feeds emf.getProperties() back into createEntityManagerFactory - those values are user readable (enums, live instances, unprefixed keys) and cannot be consumed as configuration. OPENJPA-2982 is closed as Not A Problem and the underlying contract question is tracked in OPENJPA-3006. |
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.
EntityManagerFactoryImpl.getProperties()cached its result even when no EntityManager existed yet, so the EM-level defaults were then missing from that map for good. The cache is now only installed once those defaults are known, and both fields arevolatileso a caller racing with the firstcreateEntityManager()cannot install an incomplete map either.TestEMFPropertiesCachecovers both orderings.