Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.5.3
-
None
Description
RepositoryException lost in ItemManagerImpl#nodeExists, ItemManagerImpl#itemExists(HierarchyEntry), ItemManagerImpl#propertyExists, ItemManagerImpl#itemExists(ItemState)
/**
- @see ItemManager#nodeExists(Path)
*/
public boolean nodeExists(Path path)Unknown macro: { try { // session-sanity & permissions are checked upon itemExists(ItemState) NodeState nodeState = hierMgr.getNodeState(path); return itemExists(nodeState); } catch (PathNotFoundException pnfe) { return false; } catch (ItemNotFoundException infe) { return false; } catch (RepositoryException re) { return false; } }
The catch block for RepositoryException should probably wrap the exception as a RuntimeException as it might happen for unknown reason.
Changing this might break backward compatibility.
The issue was detected when trying to implement a synchronization service with a content repository exposed by a jackrabbit-spi implementation. If the content repository becomes non-responsive while checking whether a node exists or not, the RepositoryException is lost in ItemManager#nodeExists resulting in deletion of the local node corresponding to the remote node.