I reopened it and gave it a more pertinent subject. Working on other stuff atm, so help here would be appreciated. Only part of evictNaturalIdResolution needs to be called here. I would look at extracting a method from the part of evictNaturalIdResolution that handles the shared cache and using that in NaturalIdXrefDelegate#cache()
On Thu 15 Mar 2012 10:29:44 AM CDT, Demetz, Guenther wrote: > Hi Steve, > > in HHH-7160 we forgot to consider the 2nd-Level-Cache when removing the key > from naturalIdToPkMap: > > private static class NaturalIdResolutionCache implements Serializable { > ... > final CachedNaturalId initial = pkToNaturalIdMap.get( pk ); > if ( initial != null ) { > if ( areSame( naturalIdValues, initial.getValues() ) ) { > return false; > } > naturalIdToPkMap.remove( initial ); // OK for first level-cache, > // but if persister.hasNaturalIdCache() then > CachedNaturalId must also be evicted from second level cache too > > The dilemma: > non-static method evictNaturalIdResolution cannot be called here ( we are > in a static context) > > I have already test-case which demonstrates the bug: > session.bySimpleNaturalId(...).load(obsolete_key) resolves and returns > object from 2nd-LevelCache > > How should I proceed? Should I open another issue for this? > > best regards > Guenther > > > -----Original Message----- > From: Steve Ebersole (JIRA) [mailto:nore...@atlassian.com] > Sent: Thursday, March 15, 2012 12:02 AM > To: Demetz, Guenther > Subject: [Hibernate-JIRA] Closed: (HHH-7160) Method > NaturalIdXrefDelegate#cache() misses to remove obsolete entry in > naturalIdToPkMap when NaturalId values changed > > > [ > https://hibernate.onjira.com/browse/HHH-7160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel > ] > > Steve Ebersole closed HHH-7160. > ------------------------------- > > Resolution: Out of Date > > This was already addressed as part of another issue > >> Method NaturalIdXrefDelegate#cache() misses to remove obsolete entry >> in naturalIdToPkMap when NaturalId values changed >> ---------------------------------------------------------------------- >> ------------------------------------------------ >> >> Key: HHH-7160 >> URL: https://hibernate.onjira.com/browse/HHH-7160 >> Project: Hibernate ORM >> Issue Type: Bug >> Components: core >> Affects Versions: 4.1.1 >> Environment: Hibernate4.1.1 >> Reporter: Guenther Demetz >> Labels: naturalId >> Attachments: TestCaseNaturalIdChangeBetweenPersistAndFlush.jar >> >> Original Estimate: 1h >> Remaining Estimate: 1h >> >> Method NaturalIdXrefDelegate#cache() misses to remove obsolete entry >> in naturalIdToPkMap when NaturalId values changed, thus NaturalIdAccess >> delivers results even by searching with obsolete values (see attached >> Testcase). >> Cause: >> following instruction is missing in Method NaturalIdXrefDelegate#cache(): >> if ( initial != null ) { >> if ( areSame( naturalIdValues, initial.getValues()) ) { >> return false; >> } >> naturalIdToPkMap.remove(initial); //<-- this instruciton is missing >> } > > -- > This message is automatically generated by JIRA. > For more information on JIRA, see: http://www.atlassian.com/software/jira > > > > _______________________________________________ > hibernate-dev mailing list > hibernate-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/hibernate-dev -- st...@hibernate.org http://hibernate.org _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev