Index: src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java (revision 948355) +++ src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java (working copy) @@ -337,8 +337,6 @@ removeListener(hierMgr); // discard all transient changes disposeAllTransientItemStates(); - // dispose our (i.e. 'local') state manager - stateMgr.dispose(); } //< more methods for listing and retrieving transient ItemState instances > Index: src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java (revision 948355) +++ src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java (working copy) @@ -178,6 +178,9 @@ obsMgr.dispose(); obsMgr = null; } + // remove hierarchy manager as listener to avoid + // unnecessary work during stateMgr.dispose() + stateMgr.removeListener(hierMgr); stateMgr.dispose(); }