Sync before close

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/c5cbc084
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/c5cbc084
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/c5cbc084

Branch: refs/heads/master
Commit: c5cbc0843d9635072d09379ed053968a2e670387
Parents: 9fe0179
Author: Geoff Macartney <[email protected]>
Authored: Fri Sep 8 10:21:25 2017 +0100
Committer: Geoff Macartney <[email protected]>
Committed: Fri Sep 8 10:21:25 2017 +0100

----------------------------------------------------------------------
 .../core/mgmt/persist/FileBasedStoreObjectAccessor.java | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c5cbc084/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java
 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java
index 6a3de10..9387fe3 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java
@@ -22,6 +22,7 @@ import java.io.File;
 import java.io.FileDescriptor;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.SyncFailedException;
 import java.util.Date;
 
@@ -90,8 +91,15 @@ public class FileBasedStoreObjectAccessor implements 
PersistenceObjectStore.Stor
         try {
             FileUtil.setFilePermissionsTo600(tmpFile);
             final FileOutputStream tempStream = new FileOutputStream(tmpFile);
-            Streams.copyClose(bytes.openStream(), tempStream);
-            syncFileSystem(tempStream.getFD());
+            final InputStream byteStream = bytes.openStream();
+            try {
+                Streams.copy(byteStream, tempStream);
+                syncFileSystem(tempStream.getFD());
+            } finally {
+                Streams.closeQuietly(byteStream);
+                Streams.closeQuietly(tempStream);
+            }
+
             FileBasedObjectStore.moveFile(tmpFile, file);
         } catch (IOException e) {
             throw Exceptions.propagateAnnotated("Problem writing data to file 
"+file+" (via temporary file "+tmpFile+")", e);

Reply via email to