stefan-egli commented on code in PR #1393: URL: https://github.com/apache/jackrabbit-oak/pull/1393#discussion_r1548214913
########## oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java: ########## @@ -1263,6 +1265,77 @@ private Iterator<NodeDocument> candidates(long fromModified, long toModified, in // OAK-10199 END + @SuppressWarnings("unchecked") + /** + * Test when a revision on a parent is becoming garbage on a property + * but not on "_revision" as it is (potentially but in this case indeed) + * still required by a child (2:/parent/child "ck"). + * Note that this is not involving and branch commits. + */ + @Test + public void parentWithGarbageGCChildIndependent() throws Exception { // rename me + assumeTrue(fixture.hasSinglePersistence()); + NodeBuilder nb = store1.getRoot().builder(); + NodeBuilder parent = nb.child("parent"); + parent.setProperty("pk", "pv"); + parent.child("child").setProperty("ck", "cv"); + store1.merge(nb, EmptyHook.INSTANCE, CommitInfo.EMPTY); + store1.runBackgroundOperations(); + nb = store1.getRoot().builder(); + nb.child("parent").setProperty("pk", "pv2"); + nb.child("parent").child("child").setProperty("ck", "cv2"); + store1.merge(nb, EmptyHook.INSTANCE, CommitInfo.EMPTY); + nb = store1.getRoot().builder(); + nb.child("parent").setProperty("pk", "pv3"); + store1.merge(nb, EmptyHook.INSTANCE, CommitInfo.EMPTY); + // not doing a bgops == sweep here to cause "cv2" revision + // not being considered as commited by sweep + // (the test goal is to cause that resolution to fail in case + // we would delete the parent's _revisions entry) + + // enable the detailed gc flag + writeField(gc, "detailedGCEnabled", true, true); + + // wait two hours + clock.waitUntil(clock.getTime() + HOURS.toMillis(2)); + + // now make a child change so that only parent (and root) gets GCed + nb = store1.getRoot().builder(); + nb.child("parent").child("child").setProperty("ck", "cv2"); Review Comment: good point - it's slightly different though : that code is actually superfluous, it was copied from `parentGCChildIndependent()` and I forgot to delete them. The test case is indeed slightly different in that it wants a revision GCed from the parent that is still needed in a child I've now removed these lines and added a corresponding comment a few lines above - in https://github.com/apache/jackrabbit-oak/pull/1393/commits/21e8b289447790b69c78291335983b19c9471a7c -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@jackrabbit.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org