Repository: zookeeper
Updated Branches:
  refs/heads/master 3408b62b5 -> 0c5b32006


ZOOKEEPER-2870: Improve the efficiency of AtomicFileOutputStream

Author: Fangmin Lyu <allen...@fb.com>

Reviewers: Michael Han <h...@apache.org>

Closes #331 from lvfangmin/ZOOKEEPER-2870


Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/0c5b3200
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/0c5b3200
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/0c5b3200

Branch: refs/heads/master
Commit: 0c5b320060bdda854b530dc8a22993ba8cbbd655
Parents: 3408b62
Author: Fangmin Lyu <allen...@fb.com>
Authored: Thu Aug 10 13:14:22 2017 -0700
Committer: Michael Han <h...@apache.org>
Committed: Thu Aug 10 13:14:22 2017 -0700

----------------------------------------------------------------------
 .../zookeeper/common/AtomicFileOutputStream.java     | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zookeeper/blob/0c5b3200/src/java/main/org/apache/zookeeper/common/AtomicFileOutputStream.java
----------------------------------------------------------------------
diff --git 
a/src/java/main/org/apache/zookeeper/common/AtomicFileOutputStream.java 
b/src/java/main/org/apache/zookeeper/common/AtomicFileOutputStream.java
index 26035bf..740ae8f 100644
--- a/src/java/main/org/apache/zookeeper/common/AtomicFileOutputStream.java
+++ b/src/java/main/org/apache/zookeeper/common/AtomicFileOutputStream.java
@@ -35,10 +35,10 @@ import org.slf4j.LoggerFactory;
  * A FileOutputStream that has the property that it will only show up at its
  * destination once it has been entirely written and flushed to disk. While
  * being written, it will use a .tmp suffix.
- * 
+ *
  * When the output stream is closed, it is flushed, fsynced, and will be moved
  * into place, overwriting any file that already exists at that location.
- * 
+ *
  * <b>NOTE</b>: on Windows platforms, it will not atomically replace the target
  * file - instead the target file is deleted before this one is moved into
  * place.
@@ -63,6 +63,17 @@ public class AtomicFileOutputStream extends 
FilterOutputStream {
                 .getAbsoluteFile();
     }
 
+    /**
+     * The default write method in FilterOutputStream does not call the write
+     * method of its underlying input stream with the same arguments. Instead
+     * it writes the data byte by byte, override it here to make it more
+     * efficient.
+     */
+    @Override
+    public void write(byte b[], int off, int len) throws IOException {
+        out.write(b, off, len);
+    }
+
     @Override
     public void close() throws IOException {
         boolean triedToClose = false, success = false;

Reply via email to