diff --git a/CHANGELOG.md b/CHANGELOG.md index 80381997f..e619fe4be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ All notable changes to this project will be documented in this file. - superset: Pin `luxon` to version 3.6.1 to fix build ([#1315], [#1316]) - nifi: Use a patched version of logback to fix corrupted logs ([#1314]) - zookeeper: Use a patched version of logback to fix corrupted logs ([#1320]) +- kafka: Use patched version of reload4j to fix corrupted logs ([#1330]) ### Fixed @@ -124,6 +125,7 @@ All notable changes to this project will be documented in this file. [#1322]: https://github.com/stackabletech/docker-images/pull/1322 [#1323]: https://github.com/stackabletech/docker-images/pull/1323 [#1326]: https://github.com/stackabletech/docker-images/pull/1326 +[#1330]: https://github.com/stackabletech/docker-images/pull/1330 ## [25.7.0] - 2025-07-23 diff --git a/kafka/Dockerfile b/kafka/Dockerfile index f9dffb9dd..29f49ed92 100644 --- a/kafka/Dockerfile +++ b/kafka/Dockerfile @@ -3,7 +3,7 @@ FROM local-image/kafka/kcat AS kcat FROM local-image/kafka/kafka-opa-plugin AS kafka-opa-plugin - +FROM local-image/shared/reload4j AS patched-reload4j FROM local-image/java-devel AS kafka-builder ARG PRODUCT_VERSION @@ -18,8 +18,12 @@ WORKDIR /stackable COPY --chown=${STACKABLE_USER_UID}:0 kafka/stackable/jmx/ /stackable/jmx/ COPY --chown=${STACKABLE_USER_UID}:0 kafka/stackable/patches/patchable.toml /stackable/src/kafka/stackable/patches/patchable.toml COPY --chown=${STACKABLE_USER_UID}:0 kafka/stackable/patches/${PRODUCT_VERSION} /stackable/src/kafka/stackable/patches/${PRODUCT_VERSION} +COPY --chown=${STACKABLE_USER_UID}:0 --from=patched-reload4j /stackable/.m2/repository /stackable/patched-reload4j-libs RUN < +Date: Wed, 5 Nov 2025 12:27:34 +0100 +Subject: fix: move buffer into function to prevent race + +--- + src/main/java/org/apache/log4j/helpers/Transform.java | 4 ++-- + src/main/java/org/apache/log4j/xml/XMLLayout.java | 10 +--------- + 2 files changed, 3 insertions(+), 11 deletions(-) + +diff --git a/src/main/java/org/apache/log4j/helpers/Transform.java b/src/main/java/org/apache/log4j/helpers/Transform.java +index ad77e165..5f0aba25 100644 +--- a/src/main/java/org/apache/log4j/helpers/Transform.java ++++ b/src/main/java/org/apache/log4j/helpers/Transform.java +@@ -76,11 +76,11 @@ public class Transform { + /** + * Ensures that embeded CDEnd strings (]]>) are handled properly within message, NDC and throwable tag text. + * +- * @param buf StringBuffer holding the XML data to this point. The initial CDStart (<![CDATA[) and final CDEnd ++ * @param buf StringBuilder holding the XML data to this point. The initial CDStart (<![CDATA[) and final CDEnd + * (]]>) of the CDATA section are the responsibility of the calling method. + * @param str The String that is inserted into an existing CDATA Section within buf. + */ +- static public void appendEscapingCDATA(final StringBuffer buf, final String str) { ++ static public void appendEscapingCDATA(final StringBuilder buf, final String str) { + if (str != null) { + int end = str.indexOf(CDATA_END); + if (end < 0) { +diff --git a/src/main/java/org/apache/log4j/xml/XMLLayout.java b/src/main/java/org/apache/log4j/xml/XMLLayout.java +index 4f0d99f3..35ef30d8 100644 +--- a/src/main/java/org/apache/log4j/xml/XMLLayout.java ++++ b/src/main/java/org/apache/log4j/xml/XMLLayout.java +@@ -64,9 +64,7 @@ import java.util.Arrays; + public class XMLLayout extends Layout { + + private final int DEFAULT_SIZE = 256; +- private final int UPPER_LIMIT = 2048; + +- private StringBuffer buf = new StringBuffer(DEFAULT_SIZE); + private boolean locationInfo = false; + private boolean properties = false; + +@@ -121,13 +119,7 @@ public class XMLLayout extends Layout { + */ + public String format(final LoggingEvent event) { + +- // Reset working buffer. If the buffer is too large, then we need a new +- // one in order to avoid the penalty of creating a large array. +- if (buf.capacity() > UPPER_LIMIT) { +- buf = new StringBuffer(DEFAULT_SIZE); +- } else { +- buf.setLength(0); +- } ++ StringBuilder buf = new StringBuilder(DEFAULT_SIZE); + + // We yield to the \r\n heresy. + diff --git a/shared/reload4j/stackable/patches/1.2.25/patchable.toml b/shared/reload4j/stackable/patches/1.2.25/patchable.toml new file mode 100644 index 000000000..6e432c699 --- /dev/null +++ b/shared/reload4j/stackable/patches/1.2.25/patchable.toml @@ -0,0 +1,2 @@ +mirror = "https://github.com/stackabletech/reload4j.git" +base = "2dfce6aac8e9881f60b6c9fda3fdc1e79e2c14b3" diff --git a/shared/reload4j/stackable/patches/patchable.toml b/shared/reload4j/stackable/patches/patchable.toml new file mode 100644 index 000000000..ae6d696e5 --- /dev/null +++ b/shared/reload4j/stackable/patches/patchable.toml @@ -0,0 +1,2 @@ +upstream = "https://github.com/qos-ch/reload4j.git" +default-mirror = "https://github.com/stackabletech/reload4j.git"