Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChangeLog.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChangeLog.java (revision 940808) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChangeLog.java (working copy) @@ -219,7 +219,7 @@ * * @param other other change log */ - public void merge(ChangeLog other) { + public void merge(ItemStateManager parent, ChangeLog other) { // Remove all states from our 'added' set that have now been deleted Iterator iter = other.deletedStates(); while (iter.hasNext()) { @@ -228,7 +228,18 @@ deletedStates.put(state.getId(), state); } // also remove from possibly modified state - modifiedStates.remove(state.getId()); + //restore the old deleted values (the change should not be made) + if(modifiedStates.remove(state.getId()) != null) { + ItemState modifiedState; + try { + modifiedState = parent.getItemState(state.getId()); + deletedStates.put(modifiedState.getId(), modifiedState); + } catch (NoSuchItemStateException ex) { + ex.printStackTrace(); + } catch (ItemStateException ex) { + ex.printStackTrace(); + } + } } // only add modified states that are not already 'added' Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java (revision 940808) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java (working copy) @@ -349,7 +349,7 @@ throws ReferentialIntegrityException, StaleItemStateException, ItemStateException { if (txLog != null) { - txLog.merge(changeLog); + txLog.merge(sharedStateMgr, changeLog); } else { super.update(changeLog); }