Hello, Cameron, Thanks for reporting this.
*Sam*, could you confirm that this is a valid fix or suggest a proper one filing a JIRA issue? — Denis > On Feb 26, 2017, at 1:25 AM, Cameron Braid <came...@braid.com.au> wrote: > > I have just discovered that the ignite hibernate layer 2 cache region > factory does something weird with tracking changes - the wrong > regions/caches were being updated - I would end up with cache entries for > other regions in one region. > > for example if I say loaded updated a product entity then updated a > customer entity the product cache could contain the update to the customer. > > It looks like someone didn't finish the implementation as there was a note > in source : /** Map needed to provide the same transaction context for > different regions. */ > > So I made the following two lines of change in > modules/hibernate/src/main/java/org/apache/ignite/cache/hibernate/HibernateRegionFactory > > Line 102 in 1.8 : > > - private final ThreadLocal threadLoc = new ThreadLocal(); > + private ConcurrentMap<String, ThreadLocal> threadLocMap = new > ConcurrentHashMap<>(); > > Line 222 in 1.8 : > > ThreadLocal threadLocalForCache(String cacheName) { > - return threadLoc; > + return threadLocMap.computeIfAbsent(cacheName, (k)->new > ThreadLocal());; > } > > > Cameron