This is an automated email from the ASF dual-hosted git repository.

lhotari pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit e23e01f7090748a27f490f934e0c138dc4405c22
Author: 陈家名 <[email protected]>
AuthorDate: Fri Jun 5 18:39:05 2026 +0800

    [fix][client] Preserve equals in FieldParser map values (#25907)
    
    (cherry picked from commit f0a3149abedaf0bf0497a9e15134444569de2b16)
---
 .../main/java/org/apache/pulsar/common/util/FieldParser.java |  2 +-
 .../java/org/apache/pulsar/common/util/FieldParserTest.java  | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git 
a/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java 
b/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java
index 10c1951ab20..d6aa2c876b1 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java
@@ -346,7 +346,7 @@ public final class FieldParser {
         String[] tokens = trim(strValue).split(",");
         Map<K, V> map = new HashMap<>();
         for (String token : tokens) {
-            String[] keyValue = trim(token).split("=");
+            String[] keyValue = trim(token).split("=", 2);
             checkArgument(keyValue.length == 2,
                     strValue + " map-value is not in correct format 
key1=value,key2=value2");
             map.put(convert(trim(keyValue[0]), keyType), 
convert(trim(keyValue[1]), valueType));
diff --git 
a/pulsar-common/src/test/java/org/apache/pulsar/common/util/FieldParserTest.java
 
b/pulsar-common/src/test/java/org/apache/pulsar/common/util/FieldParserTest.java
index b22170fa465..1f9a1e26882 100644
--- 
a/pulsar-common/src/test/java/org/apache/pulsar/common/util/FieldParserTest.java
+++ 
b/pulsar-common/src/test/java/org/apache/pulsar/common/util/FieldParserTest.java
@@ -95,6 +95,18 @@ public class FieldParserTest {
         public Set<String> stringSet;
     }
 
+    @Test
+    public void testMapWithEqualsSignAndEmptyValue() {
+        Map<String, String> properties = new HashMap<>();
+        properties.put("stringStringMap", "key1=value=1,key2=");
+
+        MyConfig config = new MyConfig();
+        FieldParser.update(properties, config);
+
+        assertEquals(config.stringStringMap.get("key1"), "value=1");
+        assertEquals(config.stringStringMap.get("key2"), "");
+    }
+
     @Test
     public void testNullStrValue() throws Exception {
         class TestMap {

Reply via email to