"floefliep" wrote : The insert warning: it no longer occurs since writeLoad() no
longer passes in a previousVersion=null
Perhaps that is the reasoning. But my experience was that this scenario was actually
previously caused by this "(re)validate in any subsequent transaction(s)" check
in most cases and that it was much more the "if ( this == dataVersion )" check
that stopped the exceptions. But either way...
"floefliep" wrote : query-cache-0.6-second gapFirst, I was wrong about .6
seconds as I forgot a division of the timestamp by 100 in my manual calculation. This
basically comes from o.h.c.UpdateTimestampsCache. This is responsible for deciding
whether or not cached query results should be considered invalid; it does this through
some timestamping. Whenever Hibernate performs DML operations against a set of
"table spaces", it notifies the UpdateTimestampsCache in a two phase process
(preinvalidate and invalidate). invalidate() is responsible for setting the appropriate
timetamp value into the underlying cache region that is then later used in the
isUpToDate() checks. However, that invalidate() call happens during Hibernate's
after-transaction-completion process. Which of course fails when using TreeCache because
it does not like this put() outside the scope of an active transaction. And basically
this all means that query caching is totally useless here.
"floefliep" wrote : CMT edge case
For example, in my tests, it creeps up in trying to clean up the test data. Consider:
| s = openSession();
| s.delete( item );
|
where item is a detached instance and where we are relying on flush-on-completion with
CMT. In this case, Hibernate has made no TreeCache calls and thus TreeCache has not had a
chance to register its synchronization. Now, at transaction commit Hibernate's
synchronization gets a beforeCompletion callback and starts its flush processing; at that
point it now calls into TreeCache which causes TreeCache to register its synch - but that
is obviously too late in the game since because it registers in the midst of the
beforeCompletion phase it will (at least) not get a
"floefliep" wrote : Weird validated node in next transaction
In my experience, it *appears* that it does not matter if you even access the node at
all... But I need to verify this some more.
"floefliep" wrote : I replaced in your latest OptimisticTreeCache:
So I am missing something. You mean to tell me that TreeCache.remove() *fails* if the
node does not exist even when you explicitly specify "fail silently"? I needed
the "protection check" in OptimisitcTreeCache.remove() because there I cannot
explcitly set the fail-silectly mode...
"floefliep" wrote : Exceptions all over the place
Other than whats discussed above? What are they?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3957727#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...