Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java (revision 1760296) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java (working copy) @@ -806,6 +806,8 @@ update.equals(LEASE_END_KEY, null, previousLeaseEndTime); // plus it must still be active .. update.equals(STATE, null, ClusterNodeState.ACTIVE.name()); + // plus it must not have a recovery lock on it + update.notEquals(REV_RECOVERY_LOCK, RecoverLockState.ACQUIRED.name()); // @TODO: to make it 100% failure proof we could introduce // yet another field to clusterNodes: a runtimeId that we // create (UUID) at startup each time - and against that Index: oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfoTest.java =================================================================== --- oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfoTest.java (revision 1760296) +++ oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfoTest.java (working copy) @@ -126,7 +126,6 @@ } // OAK-4779 - @Ignore @Test public void renewLeaseWhileRecoveryRunning() throws Exception { ClusterNodeInfo info = newClusterNodeInfo(1);