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


Reply via email to