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)