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 ad...@apache.org on 2017/08/09 12:47:48 UTC
svn commit: r1804513 -
/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java
Author: adulceanu
Date: Wed Aug 9 12:47:48 2017
New Revision: 1804513
URL: http://svn.apache.org/viewvc?rev=1804513&view=rev
Log:
OAK-5902 - Cold standby should allow syncing of blobs bigger than 2.2 GB
Fixed deletion of temporary spool file with DeleteOnCloseFileInputStream after writing blob to blob store
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java?rev=1804513&r1=1804512&r2=1804513&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoder.java Wed Aug 9 12:47:48 2017
@@ -22,6 +22,7 @@ import static java.util.Collections.empt
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -41,6 +42,33 @@ public class ResponseDecoder extends Byt
private static final String TMP_DIR = System.getProperty("java.io.tmpdir");
private static final Logger log = LoggerFactory.getLogger(ResponseDecoder.class);
+ static class DeleteOnCloseFileInputStream extends FileInputStream {
+ private static final Logger log = LoggerFactory.getLogger(ResponseDecoder.class);
+
+ private File file;
+
+ public DeleteOnCloseFileInputStream(String fileName) throws FileNotFoundException {
+ this(new File(fileName));
+ }
+
+ public DeleteOnCloseFileInputStream(File file) throws FileNotFoundException {
+ super(file);
+ this.file = file;
+ }
+
+ public void close() throws IOException {
+ try {
+ super.close();
+ } finally {
+ if (file != null) {
+ log.debug("Processing input stream finished! Deleting file {}", file.getAbsolutePath());
+ file.delete();
+ file = null;
+ }
+ }
+ }
+ }
+
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
int length = in.readInt();
@@ -130,7 +158,7 @@ public class ResponseDecoder extends Byt
if ((mask & (1 << 1)) != 0) {
log.debug("Received entire blob {}", blobId);
- FileInputStream fis = new FileInputStream(tempFile);
+ FileInputStream fis = new DeleteOnCloseFileInputStream(tempFile);
out.add(new GetBlobResponse(null, blobId, fis, fis.getChannel().size()));
}
}