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

P: 412-459-0310 x211 | F: 412-459-0311