From eefe098a33d630ca3fa67e1f1973807f5771bc63 Mon Sep 17 00:00:00 2001 From: sharanggupta Date: Wed, 11 Nov 2026 22:36:32 +0000 Subject: [PATCH] [ISSUE #11512] fix(common): parse compression type with Locale.ROOT --- .../common/compression/CompressionType.java | 4 +++- .../common/compression/CompressionTypeTest.java | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/org/apache/rocketmq/common/compression/CompressionType.java b/common/src/main/java/org/apache/rocketmq/common/compression/CompressionType.java index d748fc47a2d..9c371ad025c 100644 --- a/common/src/main/java/org/apache/rocketmq/common/compression/CompressionType.java +++ b/common/src/main/java/org/apache/rocketmq/common/compression/CompressionType.java @@ -17,6 +17,8 @@ package org.apache.rocketmq.common.compression; +import java.util.Locale; + import org.apache.rocketmq.common.sysflag.MessageSysFlag; public enum CompressionType { @@ -49,7 +51,7 @@ public int getValue() { } public static CompressionType of(String name) { - switch (name.trim().toUpperCase()) { + switch (name.trim().toUpperCase(Locale.ROOT)) { case "LZ4": return CompressionType.LZ4; case "ZSTD": diff --git a/common/src/test/java/org/apache/rocketmq/common/compression/CompressionTypeTest.java b/common/src/test/java/org/apache/rocketmq/common/compression/CompressionTypeTest.java index f9586bd2da8..d57fa1ba682 100644 --- a/common/src/test/java/org/apache/rocketmq/common/compression/CompressionTypeTest.java +++ b/common/src/test/java/org/apache/rocketmq/common/compression/CompressionTypeTest.java @@ -16,6 +16,8 @@ */ package org.apache.rocketmq.common.compression; +import java.util.Locale; + import org.apache.rocketmq.common.sysflag.MessageSysFlag; import org.junit.Test; @@ -39,6 +41,18 @@ public void testCompressionTypeOf() { assertThrows(RuntimeException.class, () -> CompressionType.of("UNKNOWN")); } + @Test + public void testCompressionTypeOfIsLocaleIndependent() { + Locale previous = Locale.getDefault(); + try { + Locale.setDefault(new Locale("tr", "TR")); + assertEquals(CompressionType.ZLIB, CompressionType.of("zlib")); + assertEquals(CompressionType.ZLIB, CompressionType.of("Zlib")); + } finally { + Locale.setDefault(previous); + } + } + @Test public void testCompressionTypeFindByValue() { assertEquals(CompressionType.LZ4, CompressionType.findByValue(1));