This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new f0a3149abed [fix][client] Preserve equals in FieldParser map values
(#25907)
f0a3149abed is described below
commit f0a3149abedaf0bf0497a9e15134444569de2b16
Author: 陈家名 <[email protected]>
AuthorDate: Fri Jun 5 18:39:05 2026 +0800
[fix][client] Preserve equals in FieldParser map values (#25907)
---
.../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 b30a359d191..cb0b6a58419 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
@@ -358,7 +358,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 {