You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2016/01/18 12:03:38 UTC
svn commit: r1725230 -
/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionAndCleanupIT.java
Author: mduerig
Date: Mon Jan 18 11:03:38 2016
New Revision: 1725230
URL: http://svn.apache.org/viewvc?rev=1725230&view=rev
Log:
OAK-3348: Cross gc sessions might introduce references to pre-compacted segments
More aggressive test
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionAndCleanupIT.java
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionAndCleanupIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionAndCleanupIT.java?rev=1725230&r1=1725229&r2=1725230&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionAndCleanupIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionAndCleanupIT.java Mon Jan 18 11:03:38 2016
@@ -457,33 +457,39 @@ public class CompactionAndCleanupIT {
try {
// add some content
- NodeBuilder root = nodeStore.getRoot().builder();
- root.setChildNode("test").setProperty("blob", createBlob(nodeStore, 1024 * 1024));
- nodeStore.merge(root, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ NodeBuilder preGCBuilder = nodeStore.getRoot().builder();
+ preGCBuilder.setChildNode("test").setProperty("blob", createBlob(nodeStore, 1024 * 1024));
+ nodeStore.merge(preGCBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
// remove it again so we have something to gc
- root = nodeStore.getRoot().builder();
- root.getChildNode("test").remove();
- nodeStore.merge(root, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ preGCBuilder = nodeStore.getRoot().builder();
+ preGCBuilder.getChildNode("test").remove();
+ nodeStore.merge(preGCBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
// with a new builder simulate exceeding the update limit.
// This will cause changes to be pre-written to segments
- root = nodeStore.getRoot().builder();
+ preGCBuilder = nodeStore.getRoot().builder();
+ preGCBuilder.setChildNode("test").setChildNode("a").setChildNode("b").setProperty("foo", "bar");
for (int k = 0; k < getInteger("update.limit", 10000); k += 2) {
- root.setChildNode("test").remove();
+ preGCBuilder.setChildNode("dummy").remove();
}
- root.setChildNode("test");
// case 1: merge above changes before compact
if ("merge-before-compact".equals(ref)) {
- nodeStore.merge(root, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ NodeBuilder builder = nodeStore.getRoot().builder();
+ builder.setChildNode("n");
+ nodeStore.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ nodeStore.merge(preGCBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
}
fileStore.compact();
// case 2: merge above changes after compact
if ("merge-after-compact".equals(ref)) {
- nodeStore.merge(root, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ NodeBuilder builder = nodeStore.getRoot().builder();
+ builder.setChildNode("n");
+ nodeStore.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ nodeStore.merge(preGCBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
}
} finally {
fileStore.close();