You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by lh...@apache.org on 2025/11/17 14:23:16 UTC
(pulsar) 01/02: [fix]Fixed getChildren('/') on Oxia based provider (#24863)
This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 409a3be4c1a43b9ebaa23f9d4f9a0e1ff19969d6
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Thu Oct 16 21:54:09 2025 -0700
[fix]Fixed getChildren('/') on Oxia based provider (#24863)
(cherry picked from commit e6560657e20d30103f2f01c3a24600dad1ba9ab6)
---
.../metadata/impl/oxia/OxiaMetadataStore.java | 2 +-
.../apache/pulsar/metadata/MetadataStoreTest.java | 22 +++++-----------------
2 files changed, 6 insertions(+), 18 deletions(-)
diff --git a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/oxia/OxiaMetadataStore.java b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/oxia/OxiaMetadataStore.java
index 77a5eac88fd..705bafda868 100644
--- a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/oxia/OxiaMetadataStore.java
+++ b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/oxia/OxiaMetadataStore.java
@@ -133,7 +133,7 @@ public class OxiaMetadataStore extends AbstractMetadataStore {
@Override
public CompletableFuture<List<String>> getChildrenFromStore(String path) {
- var pathWithSlash = path + "/";
+ var pathWithSlash = path.endsWith("/") ? path : path + "/";
return client
.list(pathWithSlash, pathWithSlash + "/")
diff --git a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataStoreTest.java b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataStoreTest.java
index 7a333391dc9..b679ae863a6 100644
--- a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataStoreTest.java
+++ b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataStoreTest.java
@@ -668,27 +668,15 @@ public class MetadataStoreTest extends BaseMetadataStoreTest {
store.put("/a/a-2", "value1".getBytes(StandardCharsets.UTF_8), Optional.empty()).join();
store.put("/b/c/b/1", "value1".getBytes(StandardCharsets.UTF_8), Optional.empty()).join();
- List<String> subPaths = store.getChildren("/").get();
- Set<String> ignoredRootPaths = Set.of("zookeeper");
- Set<String> expectedSet = Set.of("a", "b");
- for (String subPath : subPaths) {
- if (ignoredRootPaths.contains(subPath)) {
- continue;
- }
- assertThat(expectedSet).contains(subPath);
- }
+ List<String> subPaths = new ArrayList<>(store.getChildren("/").get());
+ subPaths.remove("zookeeper"); // ignored
+ assertThat(subPaths).containsExactlyInAnyOrderElementsOf(Set.of("a", "b"));
List<String> subPaths2 = store.getChildren("/a").get();
- Set<String> expectedSet2 = Set.of("a-1", "a-2");
- for (String subPath : subPaths2) {
- assertThat(expectedSet2).contains(subPath);
- }
+ assertThat(subPaths2).containsExactlyInAnyOrderElementsOf(Set.of("a-1", "a-2"));
List<String> subPaths3 = store.getChildren("/b").get();
- Set<String> expectedSet3 = Set.of("c");
- for (String subPath : subPaths3) {
- assertThat(expectedSet3).contains(subPath);
- }
+ assertThat(subPaths3).containsExactlyInAnyOrderElementsOf(Set.of("c"));
}
@Test(dataProvider = "impl")