This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push:
new 58bc057cfb OAK-11500: Remove usage of Guava io.Closeable (#2129)
58bc057cfb is described below
commit 58bc057cfb8fee66535e19485b69fe4515e28cef
Author: Julian Reschke <[email protected]>
AuthorDate: Tue Mar 4 07:41:51 2025 +0100
OAK-11500: Remove usage of Guava io.Closeable (#2129)
* OAK-11500: Remove usage of Guava io.Closeable
* OAK-11500: Remove usage of Guava io.Closeable
---
.../blob/AbstractSharedCachingDataStore.java | 3 +-
.../jackrabbit/oak/plugins/blob/FileCache.java | 9 +----
.../plugins/blob/MarkSweepGarbageCollector.java | 25 +++++++++-----
.../plugins/blob/datastore/DataStoreBlobStore.java | 24 ++++++-------
.../oak/plugins/blob/datastore/FSBackend.java | 10 +++---
.../plugins/blob/datastore/OakFileDataStore.java | 10 +++---
.../oak/plugins/blob/UploadStagingCacheTest.java | 11 ++----
.../datastore/BlobIdTrackerClusterSharedTest.java | 5 ++-
.../apache/jackrabbit/oak/commons/FileIOUtils.java | 25 +++-----------
.../ActiveDeletedBlobCollectorFactory.java | 7 ++--
.../jackrabbit/oak/run/DataStoreCheckCommand.java | 17 ++--------
.../jackrabbit/oak/run/DataStoreCommand.java | 9 +++--
.../oak/segment/DefaultSegmentWriter.java | 10 ++++--
.../plugins/document/mongo/MongoDocumentStore.java | 3 +-
.../oak/plugins/document/MongoBlobGCTest.java | 39 +++++++---------------
15 files changed, 82 insertions(+), 125 deletions(-)
diff --git
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
index 5bb8a907ca..dcd57525b4 100644
---
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
+++
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
@@ -58,7 +58,6 @@ import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.guava.common.base.Stopwatch;
import org.apache.jackrabbit.guava.common.collect.Iterators;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import
org.apache.jackrabbit.guava.common.util.concurrent.ListeningExecutorService;
/**
@@ -335,7 +334,7 @@ public abstract class AbstractSharedCachingDataStore
extends AbstractDataStore
copyInputStreamToFile(in, tmpFile);
return new LazyFileInputStream(tmpFile);
} finally {
- Closeables.close(in, false);
+ in.close();
}
} else {
return new FileInputStream(cached);
diff --git
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java
index 88db2ebd5f..847d41d0f1 100644
---
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java
+++
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/FileCache.java
@@ -49,7 +49,6 @@ import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.guava.common.base.Stopwatch;
import org.apache.jackrabbit.guava.common.cache.AbstractCache;
-import org.apache.jackrabbit.guava.common.io.Closeables;
/**
*/
@@ -110,18 +109,12 @@ public class FileCache extends AbstractCache<String,
File> implements Closeable
if (cachedFile.exists()) {
return cachedFile;
} else {
- InputStream is = null;
- boolean threw = true;
long startNanos = System.nanoTime();
- try {
- is = loader.load(key);
+ try (InputStream is = loader.load(key)) {
copyInputStreamToFile(is, cachedFile);
- threw = false;
} catch (Exception e) {
LOG.warn("Error reading object for id [{}] from
backend", key, e);
throw e;
- } finally {
- Closeables.close(is, threw);
}
if (LOG.isDebugEnabled()) {
LOG.debug("Loaded file: {} in {}", key,
(System.nanoTime() - startNanos) / 1_000_000);
diff --git
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
index 578377ded5..5fe7f6bea0 100644
---
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
+++
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
@@ -58,7 +58,6 @@ import org.apache.commons.collections4.ListValuedMap;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
import org.apache.jackrabbit.guava.common.base.Stopwatch;
import org.apache.jackrabbit.guava.common.collect.Iterators;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.jackrabbit.guava.common.util.concurrent.ListenableFutureTask;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
@@ -303,14 +302,10 @@ public class MarkSweepGarbageCollector implements
BlobGarbageCollector {
stat.setStartTime(markers.get(uniqueSessionId).getLastModified());
}
- LineNumberReader reader = null;
- try {
- reader = new LineNumberReader(new
InputStreamReader(refRec.getStream()));
+ try (LineNumberReader reader = new
LineNumberReader(new InputStreamReader(refRec.getStream()))) {
while (reader.readLine() != null) {
}
stat.setNumLines(reader.getLineNumber());
- } finally {
- Closeables.close(reader, true);
}
}
}
@@ -380,7 +375,13 @@ public class MarkSweepGarbageCollector implements
BlobGarbageCollector {
} finally {
statsCollector.updateDuration(sw.elapsed(TimeUnit.MILLISECONDS),
TimeUnit.MILLISECONDS);
if (!LOG.isTraceEnabled() && !traceOutput) {
- Closeables.close(fs, threw);
+ try {
+ fs.close();
+ } catch (IOException ioe) {
+ if (!threw) {
+ throw ioe;
+ }
+ }
}
}
}
@@ -769,7 +770,13 @@ public class MarkSweepGarbageCollector implements
BlobGarbageCollector {
}
} finally {
if (!traceOutput && (!LOG.isTraceEnabled() && candidates == 0)) {
- Closeables.close(fs, threw);
+ try {
+ fs.close();
+ } catch (IOException ioe) {
+ if (!threw) {
+ throw ioe;
+ }
+ }
}
sw.stop();
consistencyStatsCollector.updateDuration(sw.elapsed(TimeUnit.MILLISECONDS),
TimeUnit.MILLISECONDS);
@@ -1091,7 +1098,7 @@ public class MarkSweepGarbageCollector implements
BlobGarbageCollector {
} finally {
if (idsIter instanceof Closeable) {
try {
- Closeables.close((Closeable) idsIter, false);
+ ((Closeable)idsIter).close();
} catch (Exception e) {
LOG.debug("Error closing iterator");
}
diff --git
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
index 240e519ca6..24aa6b0b65 100644
---
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
+++
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
@@ -79,7 +79,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.guava.common.collect.Iterators;
-import org.apache.jackrabbit.guava.common.io.Closeables;
/**
* BlobStore wrapper for DataStore. Wraps Jackrabbit 2 DataStore and expose
them as BlobStores
@@ -341,9 +340,15 @@ public class DataStoreBlobStore
stats.uploadFailed();
throw new IOException(e);
} finally {
- //DataStore does not closes the stream internally
+ //DataStore does not close the stream internally
//So close the stream explicitly
- Closeables.close(stream, threw);
+ try {
+ stream.close();
+ } catch (IOException ioe) {
+ if (!threw) {
+ throw ioe;
+ }
+ }
}
}
@@ -364,15 +369,10 @@ public class DataStoreBlobStore
//This is inefficient as repeated calls for same blobId would involve
opening new Stream
//instead clients should directly access the stream from DataRecord by
special casing for
//BlobStore which implements DataStore
- InputStream stream = getInputStream(encodedBlobId);
- boolean threw = true;
- try {
+ try (InputStream stream = getInputStream(encodedBlobId)) {
IOUtils.skipFully(stream, pos);
int readCount = stream.read(buff, off, length);
- threw = false;
return readCount;
- } finally {
- Closeables.close(stream, threw);
}
}
@@ -439,13 +439,9 @@ public class DataStoreBlobStore
@Override
public byte[] call() throws Exception {
boolean threw = true;
- InputStream stream = getStream(blobId.blobId);
- try {
+ try (InputStream stream = getStream(blobId.blobId)) {
byte[] result = IOUtils.toByteArray(stream);
- threw = false;
return result;
- } finally {
- Closeables.close(stream, threw);
}
}
});
diff --git
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java
index 7822b115b4..6ebb1fecd5 100644
---
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java
+++
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java
@@ -30,7 +30,6 @@ import java.util.List;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
@@ -189,12 +188,13 @@ public class FSBackend extends AbstractSharedBackend {
try {
File file = new File(fsPathDir, name);
- FileOutputStream os = new FileOutputStream(file);
- try {
+ try (FileOutputStream os = new FileOutputStream(file)) {
IOUtils.copyLarge(input, os);
} finally {
- Closeables.close(os, true);
- Closeables.close(input, true);
+ try {
+ input.close();
+ } catch (IOException swallowed) {
+ }
}
} catch (IOException e) {
LOG.error("Exception while adding metadata record with name {},
{}",
diff --git
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java
index 7ad09d04c1..1cddd3713c 100644
---
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java
+++
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java
@@ -33,7 +33,6 @@ import java.util.List;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
@@ -139,12 +138,13 @@ public class OakFileDataStore extends FileDataStore
implements SharedDataStore {
try {
File file = new File(getPath(), name);
- FileOutputStream os = new FileOutputStream(file);
- try {
+ try (FileOutputStream os = new FileOutputStream(file)) {
IOUtils.copyLarge(input, os);
} finally {
- Closeables.close(os, true);
- Closeables.close(input, true);
+ try {
+ input.close();
+ } catch (IOException swallowed) {
+ }
}
} catch (IOException e) {
LOG.error("Exception while adding metadata record with name {},
{}",
diff --git
a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
index 77ffbf5b21..82748f1e81 100644
---
a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
+++
b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
@@ -42,7 +42,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import ch.qos.logback.classic.Level;
import org.apache.jackrabbit.guava.common.collect.Iterators;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.jackrabbit.guava.common.io.Closer;
import org.apache.jackrabbit.guava.common.util.concurrent.Futures;
import org.apache.jackrabbit.guava.common.util.concurrent.ListenableFuture;
@@ -693,7 +692,7 @@ public class UploadStagingCacheTest extends
AbstractDataStoreCacheTest {
// Create pre-upgrade load
File home = folder.newFolder();
File pendingUploadsFile = new File(home,
DataStoreCacheUpgradeUtils.UPLOAD_MAP);
- createGibberishLoad(home, pendingUploadsFile);
+ createGibberishLoad(pendingUploadsFile);
LogCustomizer lc =
LogCustomizer.forLogger(DataStoreCacheUpgradeUtils.class.getName())
.filter(Level.WARN)
@@ -717,13 +716,9 @@ public class UploadStagingCacheTest extends
AbstractDataStoreCacheTest {
}
- private void createGibberishLoad(File home, File pendingUploadFile) throws
IOException {
- BufferedWriter writer = null;
- try {
- writer = new BufferedWriter(new FileWriter(pendingUploadFile,
StandardCharsets.UTF_8));
+ private void createGibberishLoad(File pendingUploadFile) throws
IOException {
+ try (BufferedWriter writer = new BufferedWriter(new
FileWriter(pendingUploadFile, StandardCharsets.UTF_8))) {
FileIOUtils.writeAsLine(writer,
"jerhgiuheirghoeoorqehgsjlwjpfkkwpkf", false);
- } finally {
- Closeables.close(writer, true);
}
}
diff --git
a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerClusterSharedTest.java
b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerClusterSharedTest.java
index 28bc17d3af..4ac3dac862 100644
---
a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerClusterSharedTest.java
+++
b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/BlobIdTrackerClusterSharedTest.java
@@ -41,7 +41,6 @@ import org.junit.rules.TemporaryFolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.jackrabbit.guava.common.io.Closeables.close;
import static java.lang.String.valueOf;
import static java.util.UUID.randomUUID;
import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
@@ -224,11 +223,11 @@ public class BlobIdTrackerClusterSharedTest {
Set<String> retrieved = new HashSet<>();
Iterator<String> iter = tracker.get();
log.info("retrieving blob ids");
- while(iter.hasNext()) {
+ while (iter.hasNext()) {
retrieved.add(iter.next());
}
if (iter instanceof Closeable) {
- close((Closeable)iter, true);
+ ((Closeable)iter).close();
}
return retrieved;
}
diff --git
a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java
b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java
index b4a9e6a3c0..6f9a120d5a 100644
---
a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java
+++
b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/FileIOUtils.java
@@ -20,7 +20,6 @@ import static java.io.File.createTempFile;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.commons.io.FileUtils.forceDelete;
import static org.apache.commons.io.IOUtils.copyLarge;
-import static org.apache.jackrabbit.guava.common.io.Closeables.close;
import static
org.apache.jackrabbit.oak.commons.sort.EscapeUtils.escapeLineBreak;
import static
org.apache.jackrabbit.oak.commons.sort.EscapeUtils.unescapeLineBreaks;
import static
org.apache.jackrabbit.oak.commons.sort.ExternalSort.mergeSortedFiles;
@@ -140,25 +139,20 @@ public final class FileIOUtils {
* @throws IOException
*/
public static void append(List<File> files, File appendTo, boolean delete)
throws IOException {
- OutputStream appendStream = null;
- boolean threw = true;
- try {
- appendStream = new BufferedOutputStream(new
FileOutputStream(appendTo, true));
+ try (OutputStream appendStream = new BufferedOutputStream(new
FileOutputStream(appendTo, true))) {
for (File f : files) {
try (InputStream iStream = new FileInputStream(f)) {
copyLarge(iStream, appendStream);
}
}
- threw = false;
} finally {
if (delete) {
for (File f : files) {
f.delete();
}
}
- close(appendStream, threw);
}
}
@@ -227,11 +221,9 @@ public final class FileIOUtils {
*/
public static int writeStrings(Iterator<String> iterator, File f, boolean
escape,
@NotNull Function<String, String> transformer, @Nullable Logger
logger, @Nullable String message) throws IOException {
- BufferedWriter writer = new BufferedWriter(new FileWriter(f, UTF_8));
- boolean threw = true;
int count = 0;
- try {
+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(f,
UTF_8))) {
while (iterator.hasNext()) {
writeAsLine(writer, transformer.apply(iterator.next()),
escape);
count++;
@@ -241,9 +233,6 @@ public final class FileIOUtils {
}
}
}
- threw = false;
- } finally {
- close(writer, threw);
}
return count;
}
@@ -257,13 +246,10 @@ public final class FileIOUtils {
* @throws IOException
*/
public static Set<String> readStringsAsSet(InputStream stream, boolean
unescape) throws IOException {
- BufferedReader reader = null;
Set<String> set = new HashSet<>();
- boolean threw = true;
- try {
- reader = new BufferedReader(new InputStreamReader(stream, UTF_8));
- String line = null;
+ try (BufferedReader reader = new BufferedReader(new
InputStreamReader(stream, UTF_8))) {
+ String line;
while ((line = reader.readLine()) != null) {
if (unescape) {
set.add(unescapeLineBreaks(line));
@@ -271,9 +257,6 @@ public final class FileIOUtils {
set.add(line);
}
}
- threw = false;
- } finally {
- close(reader, threw);
}
return set;
}
diff --git
a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectorFactory.java
b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectorFactory.java
index 92ee7e34cc..323c2056aa 100644
---
a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectorFactory.java
+++
b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectorFactory.java
@@ -38,7 +38,6 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.io.filefilter.IOFileFilter;
@@ -324,7 +323,11 @@ public class ActiveDeletedBlobCollectorFactory {
long startBlobTrackerSyncTime = clock.getTime();
// Synchronize deleted blob ids with the blob id tracker
try {
- Closeables.close(idTempDeleteWriter, true);
+ try {
+ idTempDeleteWriter.close();
+ } catch (IOException ex) {
+ LOG.warn("IOException thrown while closing
idTempDeleteWriter", ex);
+ }
if (blobIdsTracked && numBlobsDeleted > 0) {
BlobTracker tracker = ((BlobTrackingStore)
blobStore).getTracker();
diff --git
a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
index 389b9bb351..1d55c0c768 100644
---
a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
+++
b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.oak.run;
import static org.apache.jackrabbit.guava.common.base.Stopwatch.createStarted;
-import static org.apache.jackrabbit.guava.common.io.Closeables.close;
import static java.io.File.createTempFile;
import static java.util.Arrays.asList;
import static org.apache.commons.io.FileUtils.forceDelete;
@@ -47,7 +46,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.jackrabbit.guava.common.base.Splitter;
import org.apache.jackrabbit.guava.common.base.Stopwatch;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.jackrabbit.guava.common.io.Closer;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
@@ -426,10 +424,8 @@ public class DataStoreCheckCommand implements Command {
private static void retrieveBlobReferences(GarbageCollectableBlobStore
blobStore, BlobReferenceRetriever marker,
File marked, String dsType, boolean isVerbose) throws IOException {
- final BufferedWriter writer = new BufferedWriter(new
FileWriter(marked, StandardCharsets.UTF_8));
final AtomicInteger count = new AtomicInteger();
- boolean threw = true;
- try {
+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(marked,
StandardCharsets.UTF_8))) {
final GarbageCollectableBlobStore finalBlobStore = blobStore;
System.out.println("Starting dump of blob references");
@@ -464,9 +460,6 @@ public class DataStoreCheckCommand implements Command {
System.out.println(count.get() + " blob references found");
System.out.println("Finished in " +
watch.elapsed(TimeUnit.SECONDS) + " seconds");
- threw = false;
- } finally {
- close(writer, threw);
}
}
@@ -543,14 +536,11 @@ public class DataStoreCheckCommand implements Command {
}
public void traverse(String ... paths) throws IOException {
- BufferedWriter writer = null;
final AtomicInteger count = new AtomicInteger();
- boolean threw = true;
System.out.println("Starting dump of blob references by
traversing");
Stopwatch watch = createStarted();
- try {
- writer = new BufferedWriter(new FileWriter(references,
StandardCharsets.UTF_8));
+ try (BufferedWriter writer = new BufferedWriter(new
FileWriter(references, StandardCharsets.UTF_8))) {
if (paths.length == 0) {
traverseChildren(nodeStore.getRoot(), "/", writer, count);
} else {
@@ -570,9 +560,6 @@ public class DataStoreCheckCommand implements Command {
System.out.println(count.get() + " blob references found");
System.out.println("Finished in " +
watch.elapsed(TimeUnit.SECONDS) + " seconds");
- threw = false;
- } finally {
- Closeables.close(writer, threw);
}
}
diff --git
a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
index 1ead8f7cc7..225e6589a5 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
@@ -41,7 +41,6 @@ import java.util.stream.StreamSupport;
import org.apache.jackrabbit.guava.common.base.Splitter;
import org.apache.jackrabbit.guava.common.base.Stopwatch;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.jackrabbit.guava.common.io.Closer;
import joptsimple.OptionParser;
import org.apache.commons.io.FileUtils;
@@ -239,7 +238,13 @@ public class DataStoreCommand implements Command {
FileUtils.copyFile(referencesTemp, references);
} finally {
- Closeables.close(writer, threw);
+ try {
+ writer.close();
+ } catch (IOException ex) {
+ if (!threw) {
+ throw ex;
+ }
+ }
}
} else if (dataStoreOpts.dumpIds()) {
log.info("Initiating dump of data store IDs");
diff --git
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
index 259e16dcf1..0b070810ae 100644
---
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
+++
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/DefaultSegmentWriter.java
@@ -55,7 +55,6 @@ import java.util.Map;
import javax.jcr.PropertyType;
import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
@@ -645,7 +644,14 @@ public class DefaultSegmentWriter implements SegmentWriter
{
threw = false;
return id;
} finally {
- Closeables.close(stream, threw);
+ try {
+ stream.close();
+ } catch (IOException ex) {
+ if (!threw) {
+ throw ex;
+ }
+ LOG.warn("IOException thrown while closing stream", ex);
+ }
}
}
diff --git
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
index a91470d0ed..8bd3a48e12 100644
---
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
+++
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
@@ -44,7 +44,6 @@ import java.util.stream.StreamSupport;
import org.apache.jackrabbit.guava.common.base.Stopwatch;
import org.apache.jackrabbit.guava.common.collect.Iterables;
import org.apache.jackrabbit.guava.common.collect.Iterators;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import org.apache.jackrabbit.guava.common.util.concurrent.AtomicDouble;
import com.mongodb.Block;
import com.mongodb.DBObject;
@@ -2030,7 +2029,7 @@ public class MongoDocumentStore implements DocumentStore {
clusterNodesConnection.close();
}
try {
- Closeables.close(throttlingMetricsUpdater, false);
+ throttlingMetricsUpdater.close();
} catch (IOException e) {
LOG.warn("Error occurred while closing throttlingMetricsUpdater",
e);
}
diff --git
a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
index 8c5b97018e..aa4a58ff6f 100644
---
a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
+++
b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
@@ -36,7 +36,6 @@ import ch.qos.logback.classic.Level;
import org.apache.commons.lang3.StringUtils;
import org.apache.jackrabbit.guava.common.base.Splitter;
import org.apache.jackrabbit.guava.common.base.Stopwatch;
-import org.apache.jackrabbit.guava.common.io.Closeables;
import com.mongodb.BasicDBObject;
import com.mongodb.ReadPreference;
import com.mongodb.client.MongoCollection;
@@ -398,26 +397,18 @@ public class MongoBlobGCTest extends
AbstractMongoConnectionTest {
}
private static void assertBlobReferences(Set<String> expected, String
rootFolder) throws IOException {
- InputStream is = null;
- try {
- is = new FileInputStream(getMarkedFile(rootFolder));
+ try (InputStream is = new FileInputStream(getMarkedFile(rootFolder))) {
Set<String> records = FileIOUtils.readStringsAsSet(is, true);
assertEquals(expected, records);
- } finally {
- Closeables.close(is, false);
}
}
private static void assertBlobReferenceRecords(int expected, String
rootFolder) throws IOException {
- InputStream is = null;
- try {
- is = new FileInputStream(getMarkedFile(rootFolder));
+ try (InputStream is = new FileInputStream(getMarkedFile(rootFolder))) {
Set<String> records = FileIOUtils.readStringsAsSet(is, true);
for (String rec : records) {
assertEquals(expected,
Splitter.on(",").omitEmptyStrings().splitToList(rec).size());
}
- } finally {
- Closeables.close(is, false);
}
}
@@ -509,42 +500,36 @@ public class MongoBlobGCTest extends
AbstractMongoConnectionTest {
this.maxLastModifiedInterval = maxLastModifiedInterval;
this.additionalBlobs = new HashSet<>();
}
-
+
@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");
-
+
// Sleep a little more than the max interval to get over the
interval for valid blobs
Thread.sleep(maxLastModifiedInterval + 1000);
LOG.info("Slept {} to make blobs old", maxLastModifiedInterval
+ 1000);
-
+
long markStart = System.currentTimeMillis();
mark(fs);
LOG.info("Mark finished");
-
+
additionalBlobs = createAdditional();
-
+
if (!markOnly) {
Thread.sleep(maxLastModifiedInterval + 100);
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 {
HashSet<String> blobSet = new HashSet<String>();
DocumentNodeStore s = mk.getNodeStore();