This is an automated email from the ASF dual-hosted git repository.
merlimat 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 02d12a65cc1 [fix][test] Fix flaky
BacklogQuotaManagerTest.createNamespaces (HTTP 409 cascade) (#25680)
02d12a65cc1 is described below
commit 02d12a65cc106ee05314a6ceb261ae1672c68f0f
Author: Lari Hotari <[email protected]>
AuthorDate: Wed May 6 08:16:40 2026 +0300
[fix][test] Fix flaky BacklogQuotaManagerTest.createNamespaces (HTTP 409
cascade) (#25680)
---
.../broker/auth/MockedPulsarServiceBaseTest.java | 1 +
.../broker/service/BacklogQuotaManagerTest.java | 28 ++++++++++++++++------
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
index 550bc513902..c1629c723a3 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
@@ -733,6 +733,7 @@ public abstract class MockedPulsarServiceBaseTest extends
TestRetrySupport {
*/
public static void deleteNamespaceWithRetry(String ns, boolean force,
PulsarAdmin admin) throws Exception {
Awaitility.await()
+ .atMost(20, TimeUnit.SECONDS)
.pollDelay(500, TimeUnit.MILLISECONDS)
.until(() -> {
try {
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java
index 6ac258d0ba8..9a85b65b1e7 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java
@@ -201,14 +201,28 @@ public class BacklogQuotaManagerTest {
}
@BeforeMethod(alwaysRun = true)
- void createNamespaces() throws PulsarAdminException {
+ void createNamespaces() throws Exception {
config.setPreciseTimeBasedBacklogQuotaCheck(false);
- admin.namespaces().createNamespace("prop/ns-quota");
- admin.namespaces().setNamespaceReplicationClusters("prop/ns-quota",
Sets.newHashSet("usc"), false);
- admin.namespaces().createNamespace("prop/quotahold");
- admin.namespaces().setNamespaceReplicationClusters("prop/quotahold",
Sets.newHashSet("usc"), false);
- admin.namespaces().createNamespace("prop/quotaholdasync");
-
admin.namespaces().setNamespaceReplicationClusters("prop/quotaholdasync",
Sets.newHashSet("usc"), false);
+ createNamespaceForTest("prop/ns-quota");
+ createNamespaceForTest("prop/quotahold");
+ createNamespaceForTest("prop/quotaholdasync");
+ }
+
+ /**
+ * If a previous test's @AfterMethod timed out before the namespace was
fully removed, the
+ * leftover would otherwise cascade as HTTP 409 here and fail every
subsequent test.
+ * Force-delete and retry so each test starts with clean namespace state.
+ */
+ private void createNamespaceForTest(String ns) throws Exception {
+ try {
+ admin.namespaces().createNamespace(ns);
+ } catch (PulsarAdminException.ConflictException e) {
+ log.warn().attr("namespace", ns)
+ .log("Namespace already exists from previous test —
force-deleting and recreating");
+ deleteNamespaceWithRetry(ns, true);
+ admin.namespaces().createNamespace(ns);
+ }
+ admin.namespaces().setNamespaceReplicationClusters(ns,
Sets.newHashSet("usc"), false);
}
@AfterMethod(alwaysRun = true)