[ https://issues.apache.org/jira/browse/OPENJPA-2792?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pawel Veselov updated OPENJPA-2792: ----------------------------------- Summary: Race condition in using compatibility flags (turns on cascade on detach) (was: Race condition in using compatibility flags) > Race condition in using compatibility flags (turns on cascade on detach) > ------------------------------------------------------------------------ > > Key: OPENJPA-2792 > URL: https://issues.apache.org/jira/browse/OPENJPA-2792 > Project: OpenJPA > Issue Type: Bug > Components: kernel > Affects Versions: 2.4.2 > Reporter: Pawel Veselov > Priority: Major > > Compatibility object is used in a lot of placed to determine behavior of the > implementation. > However, compatibility values are set during execution, without regard for > other execution threads. > Looking at {{OpenJPAConfigurationImpl.getCompatibilityInstance()}} once can > see that a singleton is used. > However, broker implementation does this: > {code:java} > boolean origCascade = _compat.getCascadeWithDetach(); > _compat.setCascadeWithDetach(true); > try { > new DetachManager(this, true, call) > .detachAll(new ManagedObjectCollection(states)); > } > finally { > _compat.setCascadeWithDetach(origCascade); > } > {code} > This is: > # turning cascade behavior for other brokers to detach on cascade > # eventually leads to stuck "true" state, if a broker picks up the > compatibility value when another broker has set it temporarily to true. > Creating of the compatibility object is somewhat complicated, because it can > come from compatibility plugin and/or from specification instance. As a brute > force solution, I'll just return {{compatibility.clone()}} from > {{OpenJPAConfigurationImpl.getCompatibilityInstance()}}, it should take care > of this, but there is probably a deeper issue here, especially if there is > code paths that expect the compatibility object to be an actual singleton. -- This message was sent by Atlassian JIRA (v7.6.14#76016)