Author: amitj
Date: Wed Jul 20 03:56:59 2016
New Revision: 1753432

URL: http://svn.apache.org/viewvc?rev=1753432&view=rev
Log:
OAK-4200:  [BlobGC] Improve collection times of blobs available

* Changed instancedId from System.currentTimeMillis() to UUID
* Removed filter for not downloading local files

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java?rev=1753432&r1=1753431&r2=1753432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTracker.java
 Wed Jul 20 03:56:59 2016
@@ -41,7 +41,6 @@ import org.slf4j.LoggerFactory;
 
 import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.base.Predicates.alwaysTrue;
-import static com.google.common.collect.Iterables.filter;
 import static com.google.common.collect.Iterables.transform;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.io.Files.asByteSource;
@@ -51,6 +50,7 @@ import static com.google.common.io.Files
 import static java.io.File.createTempFile;
 import static java.lang.System.currentTimeMillis;
 import static java.util.Collections.synchronizedList;
+import static java.util.UUID.randomUUID;
 import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
@@ -86,7 +86,7 @@ public class BlobIdTracker implements Cl
     private static final String mergedFileSuffix = ".refs";
 
     /* Local instance identifier */
-    private final String instanceId = String.valueOf(currentTimeMillis());
+    private final String instanceId = randomUUID().toString();
 
     private final SharedDataStore datastore;
 
@@ -179,13 +179,8 @@ public class BlobIdTracker implements Cl
     private void globalMerge() throws IOException {
         try {
             // Download all the blob reference files except the local one from 
the data store
-            Iterable<DataRecord> refRecords = filter(
-                datastore.getAllMetadataRecords(fileNamePrefix), new 
Predicate<DataRecord>() {
-                    @Override
-                    public boolean apply(DataRecord input) {
-                        return 
!input.getIdentifier().toString().contains(instanceId);
-                    }
-                });
+            Iterable<DataRecord> refRecords = 
datastore.getAllMetadataRecords(fileNamePrefix);
+
             // Download all the corresponding reference files
             List<File> refFiles = newArrayList(
                 transform(refRecords,

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerTest.java?rev=1753432&r1=1753431&r2=1753432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerTest.java
 Wed Jul 20 03:56:59 2016
@@ -53,6 +53,7 @@ import static org.apache.jackrabbit.oak.
     .SharedStoreRecordType.BLOBREFERENCES;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeNoException;
 import static org.junit.Assume.assumeThat;
 
@@ -106,8 +107,7 @@ public class BlobIdTrackerTest {
         Set<String> retrieved = retrieve(tracker);
 
         assertEquals("Extra elements after add", initAdd, retrieved);
-        assertEquals("Different ids from the datastore",
-            initAdd, 
read(dataStore.getAllMetadataRecords(BLOBREFERENCES.getType())));
+        
assertTrue(read(dataStore.getAllMetadataRecords(BLOBREFERENCES.getType())).isEmpty());
     }
 
     @Test
@@ -116,11 +116,11 @@ public class BlobIdTrackerTest {
         ScheduledFuture<?> scheduledFuture =
             scheduler.schedule(tracker.new SnapshotJob(), 0, 
TimeUnit.MILLISECONDS);
         scheduledFuture.get();
-        remove(tracker, folder.newFile(), initAdd, range(1, 2));
+        assertEquals("Extra elements after add", initAdd, retrieve(tracker));
 
-        Set<String> retrieved = retrieve(tracker);
+        remove(tracker, folder.newFile(), initAdd, range(1, 2));
 
-        assertEquals("Extra elements after add", initAdd, retrieved);
+        assertEquals("Extra elements after remove", initAdd, 
retrieve(tracker));
     }
 
     private static Set<String> read(List<DataRecord> recs)


Reply via email to