diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-01-25 12:47:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-25 12:47:35 +0100 |
commit | 819533f55f0f137d30c6828b7851a7e0d3010ed7 (patch) | |
tree | 0637d92818761b9bb30e59efd00e337d9a5721e6 | |
parent | f4f936857e88f74299b0e414a8bbbf001bedd476 (diff) | |
parent | 92ddf9296928f5babf559e175edafe38b5c3afcb (diff) |
Merge pull request #4777 from vespa-engine/hmusum/make-sure-to-close-file
Make sure to close file to avoid leaking file descriptors
4 files changed, 20 insertions, 0 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java index 906182396d9..dbd8fdda052 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java @@ -120,6 +120,7 @@ public class FileServer { } target.receive(fileData, new ReplayStatus(success ? 0 : 1, success ? "OK" : errorDescription)); + fileData.close(); log.log(LogLevel.DEBUG, "Done serving reference '" + reference.toString() + "' with file '" + file.getAbsolutePath() + "'"); } diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java index dabdba2bfc0..ceb43ab3d51 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java @@ -64,4 +64,10 @@ public abstract class FileReferenceData { * @return number of bytes */ public abstract long size(); + + /** + * Close underlying files + * + */ + public abstract void close(); } diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDataBlob.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDataBlob.java index 3759cbe2ef7..94f3a28790e 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDataBlob.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDataBlob.java @@ -41,4 +41,9 @@ public class FileReferenceDataBlob extends FileReferenceData { public long size() { return content.length; } + + @Override + public void close() { + // no-op + } } diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java index 1681843a818..397ec48c4b8 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java @@ -49,4 +49,12 @@ public class LazyFileReferenceData extends FileReferenceData { throw new RuntimeException(e); } } + + public void close() { + try { + channel.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } } |