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 fr...@apache.org on 2016/10/20 08:05:41 UTC
svn commit: r1765761 -
/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
Author: frm
Date: Thu Oct 20 08:05:41 2016
New Revision: 1765761
URL: http://svn.apache.org/viewvc?rev=1765761&view=rev
Log:
OAK-4963 - Ensure proper finalization of test resources
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java?rev=1765761&r1=1765760&r2=1765761&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java Thu Oct 20 08:05:41 2016
@@ -85,18 +85,42 @@ import org.slf4j.LoggerFactory;
* Tests for SegmentNodeStore DataStore GC
*/
public class SegmentDataStoreBlobGCIT {
+
private static final Logger log = LoggerFactory.getLogger(SegmentDataStoreBlobGCIT.class);
- SegmentNodeStore nodeStore;
- FileStore store;
- DataStoreBlobStore blobStore;
- Date startDate;
- SegmentGCOptions gcOptions = defaultGCOptions();
+ private static InputStream randomStream(int seed, int size) {
+ Random r = new Random(seed);
+ byte[] data = new byte[size];
+ r.nextBytes(data);
+ return new ByteArrayInputStream(data);
+ }
+
+ private SegmentNodeStore nodeStore;
+
+ private FileStore store;
+
+ private DataStoreBlobStore blobStore;
+
+ private SegmentGCOptions gcOptions = defaultGCOptions();
@Rule
public TemporaryFolder folder = new TemporaryFolder(new File("target"));
- protected SegmentNodeStore getNodeStore(BlobStore blobStore) throws Exception {
+ @After
+ public void closeFileStore() throws Exception {
+ if (store != null) {
+ store.close();
+ }
+ }
+
+ @After
+ public void closeBlobStore() throws Exception {
+ if (blobStore != null) {
+ blobStore.close();
+ }
+ }
+
+ private SegmentNodeStore getNodeStore(BlobStore blobStore) throws Exception {
if (nodeStore == null) {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
FileStoreBuilder builder = fileStoreBuilder(getWorkDir())
@@ -119,7 +143,7 @@ public class SegmentDataStoreBlobGCIT {
return setUp(10);
}
- protected DataStoreBlobStore getBlobStore(File folder) throws Exception {
+ private DataStoreBlobStore getBlobStore(File folder) throws Exception {
return DataStoreUtils.getBlobStore(folder);
}
@@ -128,8 +152,7 @@ public class SegmentDataStoreBlobGCIT {
blobStore = getBlobStore(folder.newFolder());
}
nodeStore = getNodeStore(blobStore);
- startDate = new Date();
-
+
NodeBuilder a = nodeStore.getRoot().builder();
/* Create garbage by creating in-lined blobs (size < 16KB) */
@@ -399,14 +422,11 @@ public class SegmentDataStoreBlobGCIT {
List<File> markedFiles = FileFilterUtils.filterList(
FileFilterUtils.prefixFileFilter("marked-"),
rootFile.get(0).listFiles());
- InputStream is = null;
- try {
- is = new FileInputStream(markedFiles.get(0));
- Set<String> records = FileIOUtils.readStringsAsSet(is, true);
- assertEquals(expected.size(), records.size());
- assertEquals(expected, records);
+ try (InputStream is = new FileInputStream(markedFiles.get(0))) {
+ Set<String> records = FileIOUtils.readStringsAsSet(is, true);
+ assertEquals(expected.size(), records.size());
+ assertEquals(expected, records);
} finally {
- Closeables.close(is, false);
FileUtils.forceDelete(rootFile.get(0));
}
}
@@ -432,7 +452,7 @@ public class SegmentDataStoreBlobGCIT {
return gc;
}
- protected Set<String> iterate() throws Exception {
+ private Set<String> iterate() throws Exception {
Iterator<String> cur = blobStore.getAllChunkIds(0);
Set<String> existing = Sets.newHashSet();
@@ -442,31 +462,21 @@ public class SegmentDataStoreBlobGCIT {
return existing;
}
- @After
- public void close() throws Exception {
- if (store != null) {
- store.close();
- }
- }
-
- static InputStream randomStream(int seed, int size) {
- Random r = new Random(seed);
- byte[] data = new byte[size];
- r.nextBytes(data);
- return new ByteArrayInputStream(data);
- }
-
/**
* Waits for some time and adds additional blobs after blob referenced identified to simulate
* long running blob id collection phase.
*/
- class TestGarbageCollector extends MarkSweepGarbageCollector {
- long maxLastModifiedInterval;
- String root;
- GarbageCollectableBlobStore blobStore;
- Set<String> additionalBlobs;
+ private class TestGarbageCollector extends MarkSweepGarbageCollector {
+
+ private long maxLastModifiedInterval;
+
+ private String root;
+
+ private GarbageCollectableBlobStore blobStore;
+
+ private Set<String> additionalBlobs;
- public TestGarbageCollector(BlobReferenceRetriever marker, GarbageCollectableBlobStore blobStore,
+ TestGarbageCollector(BlobReferenceRetriever marker, GarbageCollectableBlobStore blobStore,
Executor executor, String root, int batchCount, long maxLastModifiedInterval,
@Nullable String repositoryId) throws IOException {
super(marker, blobStore, executor, root, batchCount, maxLastModifiedInterval, repositoryId);
@@ -478,9 +488,7 @@ public class SegmentDataStoreBlobGCIT {
@Override
protected void markAndSweep(boolean markOnly, boolean forceBlobRetrieve) throws Exception {
- boolean threw = true;
- GarbageCollectorFileState fs = new GarbageCollectorFileState(root);
- try {
+ try (GarbageCollectorFileState fs = new GarbageCollectorFileState(root)) {
Stopwatch sw = Stopwatch.createStarted();
LOG.info("Starting Test Blob garbage collection");
@@ -499,19 +507,14 @@ public class SegmentDataStoreBlobGCIT {
LOG.info("Slept {} to make additional blobs old", maxLastModifiedInterval + 100);
long deleteCount = sweep(fs, markStart, forceBlobRetrieve);
- threw = false;
-
+
LOG.info("Blob garbage collection completed in {}. Number of blobs deleted [{}]", sw.toString(),
deleteCount, maxLastModifiedInterval);
}
- } finally {
- if (!LOG.isTraceEnabled()) {
- Closeables.close(fs, threw);
- }
}
}
- public HashSet<String> createAdditional() throws Exception {
+ private HashSet<String> createAdditional() throws Exception {
HashSet<String> blobSet = new HashSet<String>();
NodeBuilder a = nodeStore.getRoot().builder();
int number = 5;
@@ -531,5 +534,6 @@ public class SegmentDataStoreBlobGCIT {
return blobSet;
}
}
+
}