Index: src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java (revision 1642838) +++ src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionTest.java (revision ) @@ -496,4 +496,19 @@ assertEquals(7, comp.getMinimumTimestamp(r17, inactive)); } + // OAK-2318 + @Test + public void getMinimumTimestampSingleClusterId() { + Map inactive = Maps.newHashMap(); + RevisionComparator comp = new RevisionComparator(1); + + Revision r1 = new Revision(1, 0, 1); + comp.add(r1, new Revision(1, 0, 0)); + + assertEquals(1, comp.getMinimumTimestamp(r1, inactive)); + + Revision r2 = new Revision(2, 0, 1); + assertEquals(2, comp.getMinimumTimestamp(r2, inactive)); + } + } Index: src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java (revision 1642838) +++ src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java (revision ) @@ -554,7 +554,14 @@ return timestamp; } // go through all known cluster nodes - for (List list : map.values()) { + for (Map.Entry> e : map.entrySet()) { + if (revision.getClusterId() == currentClusterNodeId + && e.getKey() == currentClusterNodeId) { + // range and revision is for current cluster node + // no need to adjust timestamp + continue; + } + List list = e.getValue(); RevisionRange range; for (int i = list.size() - 1; i >= 0; i--) { range = list.get(i);