LOG4J2-431 small fix to prevent spurious buffer.force() calls Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/63aed83d Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/63aed83d Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/63aed83d
Branch: refs/heads/LOG4J2-431 Commit: 63aed83d6abb149935954370341f4d0beab85440 Parents: a5325b3 Author: rpopma <[email protected]> Authored: Thu Sep 18 00:44:47 2014 +0900 Committer: rpopma <[email protected]> Committed: Thu Sep 18 00:44:47 2014 +0900 ---------------------------------------------------------------------- .../log4j/core/appender/MemoryMappedFileManager.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/63aed83d/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java index 29f8c54..04d4ef1 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java @@ -111,9 +111,8 @@ public class MemoryMappedFileManager extends OutputStreamManager { } mappedBuffer.put(bytes, offset, length); - if (isForce) { - flush(); - } + // no need to call flush() if force is true, + // already done in AbstractOutputStreamAppender.append } private synchronized void remap() { @@ -205,6 +204,15 @@ public class MemoryMappedFileManager extends OutputStreamManager { public int getRegionLength() { return regionLength; } + + /** + * Returns {@code true} if the content of the buffer should be forced to the storage device on every write, + * {@code false} otherwise. + * @return whether each write should be force-sync'ed + */ + public boolean isImmediateFlush() { + return isForce; + } /** {@code OutputStream} subclass that does not write anything. */ static class DummyOutputStream extends OutputStream {
