[hibernate-dev] Natural ID caching bug?

Steve Ebersole steve at hibernate.org
Fri Mar 30 12:28:28 EDT 2012


You mean the stats aren't being updated...  Yes, that does look like an 
oversight.

On Fri 30 Mar 2012 09:01:36 AM CDT, Galder Zamarreño wrote:
> Hi guys,
>
> I think there's a bug in the Natural ID support impl in Hibernate and wanted to confirm with you:
>
> For entity caching, EntityInsertAction does:
>
> boolean put = persister.getCacheAccessStrategy().insert( ck, cacheEntry, version );			
> if ( put&&  factory.getStatistics().isStatisticsEnabled() ) {
>    factory.getStatisticsImplementor().secondLevelCachePut( getPersister().getCacheAccessStrategy().getRegion().getName() );
> }
>
> But for natural id caching, insert() return is ignored and only afterInsert()'s result is taken into accound:
>
> NaturalIdXrefDelegate:
>
> case INSERT: {
>     naturalIdCacheAccessStrategy.insert( naturalIdCacheKey, pk );
>
>    ( (EventSource) session() ).getActionQueue().registerProcess(
>       new AfterTransactionCompletionProcess() {
> 	@Override
> 	public void doAfterTransactionCompletion(boolean success, SessionImplementor session) {
> 		final boolean put = naturalIdCacheAccessStrategy.afterInsert( naturalIdCacheKey, pk );
>
> 		if ( put&&  justAddedToLocalCache&&  factory.getStatistics().isStatisticsEnabled() ) {
> 		   factory.getStatisticsImplementor().naturalIdCachePut(
> 		naturalIdCacheAccessStrategy.getRegion().getName() );
>
> > From what I've understood, both natural id caching and entity caching should behave in the same way.
>
> Infinispan does not implement afterInsert() because it's not an asynchornous caching strategy, so natural id cache puts on insert are not currently being updated.
>
> Cheers,
> --
> Galder Zamarreño
> Sr. Software Engineer
> Infinispan, JBoss Cache
>
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev

--
steve at hibernate.org
http://hibernate.org



More information about the hibernate-dev mailing list