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 c326d8e2203 [fix][misc] Topic name from persistence name should decode
local name (#22879)
c326d8e2203 is described below
commit c326d8e2203b6e9be37f4f2066fd7e90a9b9fb54
Author: 萧易客 <[email protected]>
AuthorDate: Tue Jun 11 12:46:04 2024 +0800
[fix][misc] Topic name from persistence name should decode local name
(#22879)
---
.../src/main/java/org/apache/pulsar/common/naming/TopicName.java | 5 ++---
.../test/java/org/apache/pulsar/common/naming/TopicNameTest.java | 6 ++++++
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git
a/pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicName.java
b/pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicName.java
index eebca0e0d72..e051e01495d 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicName.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicName.java
@@ -358,17 +358,16 @@ public class TopicName implements ServiceUnitId {
String localName;
if (parts.size() == 4) {
tenant = parts.get(0);
- cluster = null;
namespacePortion = parts.get(1);
domain = parts.get(2);
- localName = parts.get(3);
+ localName = Codec.decode(parts.get(3));
return String.format("%s://%s/%s/%s", domain, tenant,
namespacePortion, localName);
} else if (parts.size() == 5) {
tenant = parts.get(0);
cluster = parts.get(1);
namespacePortion = parts.get(2);
domain = parts.get(3);
- localName = parts.get(4);
+ localName = Codec.decode(parts.get(4));
return String.format("%s://%s/%s/%s/%s", domain, tenant, cluster,
namespacePortion, localName);
} else {
throw new IllegalArgumentException("Invalid managedLedger name: "
+ mlName);
diff --git
a/pulsar-common/src/test/java/org/apache/pulsar/common/naming/TopicNameTest.java
b/pulsar-common/src/test/java/org/apache/pulsar/common/naming/TopicNameTest.java
index 835045f9167..485bea3f1ad 100644
---
a/pulsar-common/src/test/java/org/apache/pulsar/common/naming/TopicNameTest.java
+++
b/pulsar-common/src/test/java/org/apache/pulsar/common/naming/TopicNameTest.java
@@ -267,6 +267,12 @@ public class TopicNameTest {
} catch (IllegalArgumentException e) {
// Exception is expected.
}
+
+ // case5: local name with special characters e.g. a:b:c
+ String topicName = "persistent://tenant/namespace/a:b:c";
+ String persistentNamingEncoding =
"tenant/namespace/persistent/a%3Ab%3Ac";
+ assertEquals(TopicName.get(topicName).getPersistenceNamingEncoding(),
persistentNamingEncoding);
+
assertEquals(TopicName.fromPersistenceNamingEncoding(persistentNamingEncoding),
topicName);
}