This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-4.1 by this push:
new 71a8668aeaf [fix]Fixed getChildren('/') on Oxia based provider (#24863)
71a8668aeaf is described below
commit 71a8668aeaf6215272456a9e35fff3feaef68330
Author: Matteo Merli <[email protected]>
AuthorDate: Thu Oct 16 21:54:09 2025 -0700
[fix]Fixed getChildren('/') on Oxia based provider (#24863)
---
.../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 058e447d49a..d055dd7da55 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
@@ -149,7 +149,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 2af6760cbc4..9bd2ddd5e8f 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
@@ -667,27 +667,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")