Author: alexparvulescu Date: Thu Jun 2 13:31:50 2016 New Revision: 1746573
URL: http://svn.apache.org/viewvc?rev=1746573&view=rev Log: OAK-4423 Possible overflow in checkpoint creation - fix for oak-segment Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java Modified: jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java?rev=1746573&r1=1746572&r2=1746573&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java (original) +++ jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java Thu Jun 2 13:31:50 2016 @@ -416,7 +416,11 @@ public class SegmentNodeStore implements } NodeBuilder cp = checkpoints.child(name); - cp.setProperty("timestamp", now + lifetime); + if (Long.MAX_VALUE - now > lifetime) { + cp.setProperty("timestamp", now + lifetime); + } else { + cp.setProperty("timestamp", Long.MAX_VALUE); + } cp.setProperty("created", now); NodeBuilder props = cp.setChildNode("properties"); Modified: jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java?rev=1746573&r1=1746572&r2=1746573&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java (original) +++ jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java Thu Jun 2 13:31:50 2016 @@ -182,4 +182,13 @@ public class CheckpointTest { String cp0 = store.checkpoint(10); assertNotNull(store.retrieve(cp0)); } + + @Test + public void testCheckpointMax() throws CommitFailedException, IOException { + SegmentNodeStore store = SegmentNodeStore.builder(new MemoryStore()).build(); + String cp0 = store.checkpoint(Long.MAX_VALUE); + String cp1 = store.checkpoint(Long.MAX_VALUE); + assertNotNull(store.retrieve(cp0)); + assertNotNull(store.retrieve(cp1)); + } }
