Artem Bilan created LOGBACK-1270: ------------------------------------ Summary: PatternLayoutBase concurrent access race condition Key: LOGBACK-1270 URL: https://jira.qos.ch/browse/LOGBACK-1270 Project: logback Issue Type: Bug Components: logback-core Affects Versions: 1.1.10 Reporter: Artem Bilan Assignee: Logback dev list
I found the race condition in the Logback: |PatternLayoutBase.java| |{color:#000000}StringBuilder recycledStringBuilder = new StringBuilder(INTIAL_STRING_BUILDER_SIZE);{color}| |{color:#000000}...{color}| |{color:#000000}protected String writeLoopOnConverters(E event) \{{color}| |{color:#000000} StringBuilder strBuilder = getRecycledStringBuilder();{color}| |{color:#000000}...{color}| |{color:#000000}}{color}| | | |{color:#000000} private StringBuilder getRecycledStringBuilder() \{{color}| |{color:#000000} if (recycledStringBuilder.length() > MAX_STRING_BUILDER_LENGTH) \{{color}| |{color:#000000} recycledStringBuilder = new StringBuilder(INTIAL_STRING_BUILDER_SIZE);{color}| |{color:#000000} }{color}| |{color:#000000} recycledStringBuilder.setLength(0);{color}| |{color:#000000} return recycledStringBuilder;{color}| |{color:#000000} } {color}| So, when we have multi-threaded appender, we end up with the issue writing to the same {{StringBuilder}} concurrently. See this consequent commits in Logback: [https://github.com/qos-ch/logback/commit/6ddea70a42055adb3a9d1dd844c2f2bb0333353b] [https://github.com/qos-ch/logback/commit/4938ee75971c9003e7a12ce0dadbadae8dd263c5] The problem with the last one that it isn't backported to {{1.1.x}}. Since the fix has been done in \{\{master}}, please, consider to backport it into \{\{1.1.x}}. -- This message was sent by Atlassian JIRA (v7.3.1#73012) _______________________________________________ logback-dev mailing list logback-dev@qos.ch http://mailman.qos.ch/mailman/listinfo/logback-dev