Just checked out the latest Hibernate source from
http://anonhibernate.labs.jboss.com/trunk/Hibernate3, but I can't find a method
testNoVersioningProvided() in there ... where should this be included?
Anyway, my guess is still remains: TreeCache doesn't work fine if you mix
non-versioning and versioning calls in the same transaction. So either one
could fix TreeCache such that DefaultDataVersion.ZERO is again correctly
assigned to WorkSpaceNodeImpl when using a non-versioning call, either you pass
in via OptimisticTreeCache a DefaultDataVersion.ZERO, as I tried.
Same way, problem nr 2 can be fixed by adding to writeUpdate() and writeLoad():
if ( source != null ) {
| ...
| } else
| option.setDataVersion(DefaultDataVersion.ZERO);
and modifying :
public boolean newerThan(DataVersion dataVersion) {
| if ( previousVersion == null ) {
| log.warn( "Unexpected optimistic lock check on inserted data" );
| return false;
| }
| ...
Replacing the null parameter in writeLoad to currentVersion may have the same
effect.
But I'm still confused by the warning issued by the code above. Why shouldn't
there be an optimistic lock check on inserted data? Based on what I read in the
TreeCache documentation and from what I saw in the code, everything accessed by
a transaction is put into it's workspace (both read/write, it seems). At commit
time, everything in the workspace is being checked for newer versions against
the cache (see
org.jboss.cache.interceptors.OptimisticValidatorInterceptor.simpleValidate())
which, as I understand it, boils down to obtaining both optimistic read and
write locks, which is neat and exactly what I want.
Being non-familiar with the JBoss code, I may be totally wrong or looking at
the wrong root cause, but this is the only explanation IMHO I'm able to see.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3957298#3957298
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3957298
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user