Author: amitj
Date: Wed Dec 20 04:43:49 2017
New Revision: 1818737
URL: http://svn.apache.org/viewvc?rev=1818737&view=rev
Log:
OAK-7093: ActiveDelete synchronization with BlobTracker leaves temp files
- Fixed by not calling the method which returns the iterator over records file
as not needed
- Added a simple check to a test to assert empty tmp dir
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreTrackerGCTest.java
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java?rev=1818737&r1=1818736&r2=1818737&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
Wed Dec 20 04:43:49 2017
@@ -145,7 +145,7 @@ public class BlobIdTracker implements Cl
@Override public void remove(File recs, Options options) throws
IOException {
if (options == Options.ACTIVE_DELETION) {
- get();
+ globalMerge();
deleteTracker.track(recs);
}
store.removeRecords(recs);
Modified:
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreTrackerGCTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreTrackerGCTest.java?rev=1818737&r1=1818736&r2=1818737&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreTrackerGCTest.java
(original)
+++
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreTrackerGCTest.java
Wed Dec 20 04:43:49 2017
@@ -31,9 +31,13 @@ import java.util.Set;
import java.util.concurrent.ScheduledFuture;
import ch.qos.logback.classic.Level;
+import com.google.common.base.StandardSystemProperty;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
+import com.google.common.io.Files;
+import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.api.Blob;
+import org.apache.jackrabbit.oak.commons.FileIOUtils;
import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
import org.apache.jackrabbit.oak.plugins.blob.BlobTrackingStore;
import org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector;
@@ -81,6 +85,7 @@ import static org.apache.jackrabbit.oak.
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeNoException;
import static org.junit.Assume.assumeThat;
@@ -202,13 +207,21 @@ public class DataStoreTrackerGCTest {
@Test
public void consistencyCheckNoActiveDeletion() throws Exception {
- Cluster cluster = new Cluster("cluster1");
- BlobStore s = cluster.blobStore;
- BlobIdTracker tracker = (BlobIdTracker) ((BlobTrackingStore)
s).getTracker();
- DataStoreState state = init(cluster.nodeStore, 0);
+ File tmpFolder = folder.newFolder();
+ System.setProperty(StandardSystemProperty.JAVA_IO_TMPDIR.key(),
tmpFolder.getAbsolutePath());
- // Since datastore in consistent state and only active deletions the
missing list should be empty
- assertEquals(0, cluster.gc.checkConsistency());
+ try {
+ Cluster cluster = new Cluster("cluster1");
+ BlobStore s = cluster.blobStore;
+ BlobIdTracker tracker = (BlobIdTracker) ((BlobTrackingStore)
s).getTracker();
+ DataStoreState state = init(cluster.nodeStore, 0);
+
+ // Since datastore in consistent state and only active deletions
the missing list should be empty
+ assertEquals(0, cluster.gc.checkConsistency());
+ assertTrue(FileUtils.listFiles(tmpFolder, null, true).size() == 0);
+ } finally {
+ System.clearProperty(StandardSystemProperty.JAVA_IO_TMPDIR.key());
+ }
}
@Test