1. Havn't looked at the 1.3 code closely. But we should try to revert the semantics back unless there is a reason for it.
2. For the last issue, I think the proper solution is a strict 2pc protocol. But it will be costly, I am afraid. Maybe, in the future, we can make this an option for users that need more strict *correctness*?
Thanks for spotting this, yes, this is a major problem that crept in when refactoring the OptimisticTxInterceptor for 'general use'. I'll look into this and sort it out.
This is now fixed in CVS, but note that calls to tx.setRollbackOnly() during the beforeCompletion() phase will not propagate the rollback back to the originating cache because the commits and rollbacks on remote caches are called as part of a Synchronization.afterCompletion() call on the originating cache, just as Brian mentioned above.
I'll spend a few cycles looking into what the overhead would be like to implement a proper 2PC commit here, but this still does need more thought and discussion.