LOG4J2-1343 synchronize on the ByteBufferDestination to protect against concurrent modification
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/acf8e347 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/acf8e347 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/acf8e347 Branch: refs/heads/LOG4J2-1356 Commit: acf8e3478e80b9222108ed6a428b9aa3cdc98a65 Parents: 19bafa4 Author: rpopma <[email protected]> Authored: Fri Apr 8 19:49:23 2016 +0900 Committer: rpopma <[email protected]> Committed: Fri Apr 8 19:49:23 2016 +0900 ---------------------------------------------------------------------- .../log4j/core/layout/TextEncoderHelper.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/acf8e347/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java index 698072d..3e59c8a 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java @@ -51,11 +51,13 @@ public class TextEncoderHelper { } public void encodeText(final StringBuilder text, final ByteBufferDestination destination) { - try { - encodeText0(text, destination); - } catch (final Exception ex) { - logEncodeTextException(ex, text, destination); - encodeTextFallBack(text, destination); + synchronized (destination) { + try { + encodeText0(text, destination); + } catch (final Exception ex) { + logEncodeTextException(ex, text, destination); + encodeTextFallBack(text, destination); + } } } @@ -98,9 +100,11 @@ public class TextEncoderHelper { } public void encodeText(final CharBuffer charBuf, final ByteBufferDestination destination) { - charsetEncoder.reset(); - final ByteBuffer byteBuf = destination.getByteBuffer(); - encode(charBuf, true, destination, byteBuf); + synchronized (destination) { + charsetEncoder.reset(); + final ByteBuffer byteBuf = destination.getByteBuffer(); + encode(charBuf, true, destination, byteBuf); + } } private ByteBuffer encode(final CharBuffer charBuf, final boolean endOfInput,
