You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Dolan, Kelly" <kd...@inmedius.com> on 2013/07/26 21:42:59 UTC

What is the expected state of ItemState.modCount on commit of a transaction?

In an XA transaction environment, is ItemState.modCount expected to be 0 on success of the commit?


I am logging details of PropertyState objects when modCount and overlayedState change.

Transaction A begins and ends w/o exception (in a Session object).

1. PSObject_1 has modCount=0, no overlayedState (triggered by a call to NodeImpl.lock())
2. PSObject_1 modCount=0, sets overlayedState=PSObject_2 has modCount=0 (SharedItemStateManager$Update.begin() on ItemState.connect())
3. PSObject_2 sets modCount=1, no overlayedState (SharedItemStateManager$Update.begin() on state.getOverlayedState().touch())
4. PSObject_1 sets modCount=1, overlayedState=PSObject_2 has modCount=1 (SharedItemStateManager$Update.end() on ChangeLog.persisted())

Transaction B fails w/ b8027f5b-2400-4ce7-b8c2-3d3edf163528/{http://www.jcp.org/jcr/1.0}lockOwner has been modified externally. (Transaction B occurs in a Session object but is a different Session object used by Transaction A.)

1. PSObject_3 has modCount=0, no overlayedState (triggered by a call to NodeImpl.lock())
2. PSObject_3 modCount=0, sets overlayedState=PSObject_2 (SAME PSOBJECT_2 AS IN TRANS A) has modCount=1 (SharedItemStateManager$Update.begin() on ItemState.connect())

Should modCount for PSObject_2 be 0 here? Or is this expected?


Thanks,
Kelly

--
Kelly E. Dolan, Software Architect
Inmedius, a Boeing Company | www.inmedius.com<http://www.inmedius.com>
P: 412-459-0310 x211 | F: 412-459-0311