This is an automated email from the ASF dual-hosted git repository.

zixuan 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 c544ea3aae1 [fix][test] Fix flaky test deleteNamespaceGracefully 
(#18220)
c544ea3aae1 is described below

commit c544ea3aae1a8be8e7bcd4f89fb1899ce0a3350f
Author: fengyubiao <[email protected]>
AuthorDate: Thu Nov 24 15:20:44 2022 +0800

    [fix][test] Fix flaky test deleteNamespaceGracefully (#18220)
---
 .../apache/pulsar/broker/admin/AdminApi2Test.java  |  14 +-
 .../apache/pulsar/broker/admin/AdminApiTest.java   |  32 ++--
 .../pulsar/broker/admin/AdminApiTlsAuthTest.java   |   2 +-
 .../apache/pulsar/broker/admin/AdminRestTest.java  |   2 +-
 .../apache/pulsar/broker/admin/NamespacesTest.java |   2 +-
 .../pulsar/broker/admin/v1/V1_AdminApiTest.java    |   2 +-
 .../broker/auth/MockedPulsarServiceBaseTest.java   |  42 +++--
 .../namespace/NamespaceOwnershipListenerTests.java |   6 +-
 .../OwnerShipForCurrentServerTestBase.java         |   3 +-
 .../ResourceGroupConfigListenerTest.java           |   2 +-
 .../broker/service/BacklogQuotaManagerTest.java    |  27 ++-
 .../BrokerServiceBundlesCacheInvalidationTest.java |   2 +-
 .../pulsar/broker/service/BrokerTestBase.java      | 184 ---------------------
 .../broker/service/CanPausedNamespaceService.java  |  66 --------
 .../broker/service/PersistentTopicE2ETest.java     |   4 +-
 .../broker/transaction/TransactionTestBase.java    |  24 +--
 .../client/api/DispatcherBlockConsumerTest.java    |   3 +-
 .../client/api/SimpleProducerConsumerTest.java     |   2 +-
 18 files changed, 85 insertions(+), 334 deletions(-)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
index d04d0c12d6f..6809b4402d7 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
@@ -164,7 +164,7 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         pulsar.getConfiguration().setForceDeleteNamespaceAllowed(true);
         for (String tenant : admin.tenants().getTenants()) {
             for (String namespace : admin.namespaces().getNamespaces(tenant)) {
-                deleteNamespaceGraceFullyByMultiPulsars(namespace, true, 
admin, pulsar,
+                deleteNamespaceWithRetry(namespace, true, admin, pulsar,
                         mockPulsarSetup.getPulsar());
             }
             admin.tenants().deleteTenant(tenant, true);
@@ -1515,7 +1515,7 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         assertFalse(admin.topics().getList(namespace).isEmpty());
 
         try {
-            deleteNamespaceGraceFully(namespace, false);
+            admin.namespaces().deleteNamespace(namespace, false);
             fail("should have failed due to namespace not empty");
         } catch (PulsarAdminException e) {
             // Expected: cannot delete non-empty tenant
@@ -1526,7 +1526,7 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         assertTrue(admin.topics().getList(namespace).isEmpty());
 
         // delete namespace
-        deleteNamespaceGraceFully(namespace, false);
+        deleteNamespaceWithRetry(namespace, false);
         
assertFalse(admin.namespaces().getNamespaces(tenant).contains(namespace));
         assertTrue(admin.namespaces().getNamespaces(tenant).isEmpty());
 
@@ -1607,7 +1607,7 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         assertFalse(admin.topics().getList(namespace).isEmpty());
 
         try {
-            deleteNamespaceGraceFully(namespace, false);
+            admin.namespaces().deleteNamespace(namespace, false);
             fail("should have failed due to namespace not empty");
         } catch (PulsarAdminException e) {
             // Expected: cannot delete non-empty tenant
@@ -1618,7 +1618,7 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         assertTrue(admin.topics().getList(namespace).isEmpty());
 
         // delete namespace
-        deleteNamespaceGraceFully(namespace, false);
+        deleteNamespaceWithRetry(namespace, false);
         
assertFalse(admin.namespaces().getNamespaces(tenant).contains(namespace));
         assertTrue(admin.namespaces().getNamespaces(tenant).isEmpty());
 
@@ -1667,7 +1667,7 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         });
         producer.close();
         admin.topics().delete(topic);
-        deleteNamespaceGraceFully(namespace, false);
+        deleteNamespaceWithRetry(namespace, false);
         Awaitility.await().untilAsserted(() -> {
             assertTrue(admin.namespaces().getNamespaces(tenant).isEmpty());
         });
@@ -1880,7 +1880,7 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         final String topic = "persistent://" + namespaceName + "/test" + 
UUID.randomUUID();
         pulsarClient.newProducer(Schema.DOUBLE).topic(topic).create().close();
         Awaitility.await().untilAsserted(() -> 
assertNotNull(admin.schemas().getSchemaInfo(topic)));
-        deleteNamespaceGraceFully(namespaceName, true);
+        deleteNamespaceWithRetry(namespaceName, true);
         try {
             admin.schemas().getSchemaInfo(topic);
             Assert.fail("fail");
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
index 5a845ac9e73..b303386c65f 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
@@ -202,7 +202,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         pulsar.getConfiguration().setForceDeleteNamespaceAllowed(true);
         for (String tenant : admin.tenants().getTenants()) {
             for (String namespace : admin.namespaces().getNamespaces(tenant)) {
-                deleteNamespaceGraceFully(namespace, true);
+                deleteNamespaceWithRetry(namespace, true);
             }
             admin.tenants().deleteTenant(tenant, true);
         }
@@ -297,7 +297,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         Awaitility.await()
                 .untilAsserted(() -> 
assertEquals(admin.clusters().getClusters(), List.of("test")));
 
-        deleteNamespaceGraceFully("prop-xyz/ns1", false);
+        deleteNamespaceWithRetry("prop-xyz/ns1", false);
         admin.clusters().deleteCluster("test");
         assertEquals(admin.clusters().getClusters(), new ArrayList<>());
 
@@ -526,7 +526,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
                 String.format("%s:%d", parts[0], 
pulsar.getListenPortHTTPS().get()));
         Assert.assertEquals(nsMap2.size(), 2);
 
-        deleteNamespaceGraceFully("prop-xyz/ns1", false);
+        deleteNamespaceWithRetry("prop-xyz/ns1", false);
         admin.clusters().deleteCluster("test");
         assertEquals(admin.clusters().getClusters(), new ArrayList<>());
     }
@@ -757,7 +757,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
             assertEquals(e.getStatusCode(), 409);
             assertEquals(e.getMessage(), "The tenant still has active 
namespaces");
         }
-        deleteNamespaceGraceFully("prop-xyz/ns1", false);
+        deleteNamespaceWithRetry("prop-xyz/ns1", false);
         admin.tenants().deleteTenant("prop-xyz");
         assertEquals(admin.tenants().getTenants(), new ArrayList<>());
 
@@ -786,7 +786,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         
assertEquals(admin.namespaces().getPolicies("prop-xyz/ns3").bundles.getNumBundles(),
 4);
         
assertEquals(admin.namespaces().getPolicies("prop-xyz/ns3").bundles.getBoundaries().size(),
 5);
 
-        deleteNamespaceGraceFully("prop-xyz/ns3", false);
+        deleteNamespaceWithRetry("prop-xyz/ns3", false);
 
         try {
             admin.namespaces().createNamespace("non-existing/ns1");
@@ -860,7 +860,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         }
         assertTrue(i < 10);
 
-        deleteNamespaceGraceFully("prop-xyz/ns1", false);
+        deleteNamespaceWithRetry("prop-xyz/ns1", false);
         assertEquals(admin.namespaces().getNamespaces("prop-xyz"), 
List.of("prop-xyz/ns2"));
 
         try {
@@ -1289,7 +1289,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
 
     @Test(dataProvider = "numBundles")
     public void testDeleteNamespaceBundle(Integer numBundles) throws Exception 
{
-        deleteNamespaceGraceFully("prop-xyz/ns1", false);
+        deleteNamespaceWithRetry("prop-xyz/ns1", false);
         admin.namespaces().createNamespace("prop-xyz/ns1-bundles", numBundles);
         
admin.namespaces().setNamespaceReplicationClusters("prop-xyz/ns1-bundles", 
Set.of("test"));
 
@@ -1301,7 +1301,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
 
         assertEquals(admin.namespaces().getTopics("prop-xyz/ns1-bundles"), new 
ArrayList<>());
 
-        deleteNamespaceGraceFully("prop-xyz/ns1-bundles", false);
+        deleteNamespaceWithRetry("prop-xyz/ns1-bundles", false);
         assertEquals(admin.namespaces().getNamespaces("prop-xyz", "test"), new 
ArrayList<>());
     }
 
@@ -1388,14 +1388,14 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         assertFalse(admin.topics().getList(namespace).isEmpty());
 
         try {
-            deleteNamespaceGraceFully(namespace, false);
+            admin.namespaces().deleteNamespace(namespace, false);
             fail("should have failed due to namespace not empty");
         } catch (PulsarAdminException e) {
             // Expected: cannot delete non-empty tenant
         }
 
         // delete namespace forcefully
-        deleteNamespaceGraceFully(namespace, true);
+        deleteNamespaceWithRetry(namespace, true);
         
assertFalse(admin.namespaces().getNamespaces(tenant).contains(namespace));
         assertTrue(admin.namespaces().getNamespaces(tenant).isEmpty());
 
@@ -2287,7 +2287,7 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         assertEquals(result.someNewIntField, 0);
         assertNull(result.someNewString);
 
-        deleteNamespaceGraceFully("prop-xyz/ns1", false);
+        deleteNamespaceWithRetry("prop-xyz/ns1", false);
         admin.tenants().deleteTenant("prop-xyz");
         assertEquals(admin.tenants().getTenants(), new ArrayList<>());
     }
@@ -3202,9 +3202,9 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         admin.topics().delete(topic1);
         admin.topics().delete(topic2);
         admin.topics().delete(topic3);
-        deleteNamespaceGraceFully(namespace1, false);
-        deleteNamespaceGraceFully(namespace2, false);
-        deleteNamespaceGraceFully(namespace3, false);
+        deleteNamespaceWithRetry(namespace1, false);
+        deleteNamespaceWithRetry(namespace2, false);
+        deleteNamespaceWithRetry(namespace3, false);
     }
 
     @Test
@@ -3217,11 +3217,11 @@ public class AdminApiTest extends 
MockedPulsarServiceBaseTest {
         String ns = BrokerTestUtil.newUniqueName("prop-xyz/ns");
 
         admin.namespaces().createNamespace(ns, 24);
-        deleteNamespaceGraceFully(ns, false);
+        deleteNamespaceWithRetry(ns, false);
 
         // Re-create and re-delete
         admin.namespaces().createNamespace(ns, 32);
-        deleteNamespaceGraceFully(ns, false);
+        deleteNamespaceWithRetry(ns, false);
     }
 
     @Test
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java
index 90a21d78bcd..bd23e0d7e4e 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java
@@ -459,7 +459,7 @@ public class AdminApiTlsAuthTest extends 
MockedPulsarServiceBaseTest {
             admin.topics().delete("tenant1/ns1/foobar", true);
 
             log.info("Deleting namespace");
-            deleteNamespaceGraceFully("tenant1/ns1", false, admin);
+            deleteNamespaceWithRetry("tenant1/ns1", false, admin);
         }
     }
 
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminRestTest.java 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminRestTest.java
index c44c80163d9..eb6083cebe1 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminRestTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminRestTest.java
@@ -117,7 +117,7 @@ public class AdminRestTest extends 
MockedPulsarServiceBaseTest {
     protected void cleanup() throws Exception {
         // cleanup.
         admin.topics().delete(topicName);
-        deleteNamespaceGraceFully(namespaceName, false);
+        deleteNamespaceWithRetry(namespaceName, false);
         admin.tenants().deleteTenant(tenantName);
         admin.clusters().deleteCluster(clusterName);
         // super cleanup.
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
index b4019c317c9..2b0a8c60b69 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java
@@ -2017,7 +2017,7 @@ public class NamespacesTest extends 
MockedPulsarServiceBaseTest {
             if (StringUtils.isEmpty(ns)){
                 continue;
             }
-            deleteNamespaceGraceFully(ns, true);
+            deleteNamespaceWithRetry(ns, true);
         }
         
pulsar.getConfiguration().setForceDeleteNamespaceAllowed(forceDeleteNamespaceAllowedOriginalValue);
     }
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java
index 674d0539a37..3b43874f180 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java
@@ -183,7 +183,7 @@ public class V1_AdminApiTest extends 
MockedPulsarServiceBaseTest {
         pulsar.getConfiguration().setForceDeleteNamespaceAllowed(true);
         for (String tenant : admin.tenants().getTenants()) {
             for (String namespace : admin.namespaces().getNamespaces(tenant)) {
-                deleteNamespaceGraceFullyByMultiPulsars(namespace, true, 
admin, pulsar,
+                deleteNamespaceWithRetry(namespace, true, admin, pulsar,
                         mockPulsarSetup.getPulsar());
             }
         }
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 d035320b680..1a558b63433 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
@@ -35,6 +35,7 @@ import java.net.URI;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashSet;
@@ -62,7 +63,6 @@ import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.broker.intercept.CounterBrokerInterceptor;
 import org.apache.pulsar.broker.namespace.NamespaceService;
 import org.apache.pulsar.broker.service.BrokerTestBase;
-import org.apache.pulsar.broker.service.CanPausedNamespaceService;
 import org.apache.pulsar.broker.service.PulsarMetadataEventSynchronizer;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.PulsarAdminBuilder;
@@ -87,6 +87,7 @@ import org.mockito.Mockito;
 import org.mockito.internal.util.MockUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.testcontainers.shaded.org.awaitility.Awaitility;
 
 /**
  * Base class for all tests that need a Pulsar instance without a ZK and BK 
cluster.
@@ -384,7 +385,7 @@ public abstract class MockedPulsarServiceBaseTest extends 
TestRetrySupport {
                 : 
createConfigurationMetadataStore()).when(pulsar).createConfigurationMetadataStore(any());
 
         Supplier<NamespaceService> namespaceServiceSupplier =
-                () -> 
spyWithClassAndConstructorArgs(CanPausedNamespaceService.class, pulsar);
+                () -> spyWithClassAndConstructorArgs(NamespaceService.class, 
pulsar);
         
doReturn(namespaceServiceSupplier).when(pulsar).getNamespaceServiceProvider();
 
         
doReturn(sameThreadOrderedSafeExecutor).when(pulsar).getOrderedExecutor();
@@ -669,27 +670,44 @@ public abstract class MockedPulsarServiceBaseTest extends 
TestRetrySupport {
     }
 
     /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
+     * see {@link BrokerTestBase#deleteNamespaceWithRetry(String, boolean, 
PulsarAdmin, Collection)}
      */
-    protected void deleteNamespaceGraceFully(String ns, boolean force)
+    protected void deleteNamespaceWithRetry(String ns, boolean force)
             throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, pulsar);
+        BrokerTestBase.deleteNamespaceWithRetry(ns, force, admin, pulsar);
     }
 
     /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
+     * see {@link BrokerTestBase#deleteNamespaceWithRetry(String, boolean, 
PulsarAdmin, Collection)}
      */
-    protected void deleteNamespaceGraceFully(String ns, boolean force, 
PulsarAdmin admin)
+    protected void deleteNamespaceWithRetry(String ns, boolean force, 
PulsarAdmin admin)
             throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, pulsar);
+        BrokerTestBase.deleteNamespaceWithRetry(ns, force, admin, pulsar);
     }
 
     /**
-     * see see {@link BrokerTestBase#deleteNamespaceGraceFully(String, 
boolean, PulsarAdmin, Collection)}
+     * see {@link MockedPulsarServiceBaseTest#deleteNamespaceWithRetry(String, 
boolean, PulsarAdmin, Collection)}
      */
-    protected void deleteNamespaceGraceFullyByMultiPulsars(String ns, boolean 
force, PulsarAdmin admin,
-                                                           
PulsarService...pulsars) throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, pulsars);
+    public static void deleteNamespaceWithRetry(String ns, boolean force, 
PulsarAdmin admin, PulsarService...pulsars)
+            throws Exception {
+        deleteNamespaceWithRetry(ns, force, admin, Arrays.asList(pulsars));
+    }
+
+    /**
+     * 1. Pause system "__change_event" topic creates.
+     * 2. Do delete namespace with retry because maybe fail by race-condition 
with create topics.
+     */
+    public static void deleteNamespaceWithRetry(String ns, boolean force, 
PulsarAdmin admin,
+                                                Collection<PulsarService> 
pulsars) throws Exception {
+        Awaitility.await().atMost(5, TimeUnit.SECONDS).until(() -> {
+            try {
+                // Maybe fail by race-condition with create topics, just retry.
+                admin.namespaces().deleteNamespace(ns, force);
+                return true;
+            } catch (Exception ex) {
+                return false;
+            }
+        });
     }
 
     private static final Logger log = 
LoggerFactory.getLogger(MockedPulsarServiceBaseTest.class);
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceOwnershipListenerTests.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceOwnershipListenerTests.java
index 0b1f687cc6b..02787aa1435 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceOwnershipListenerTests.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceOwnershipListenerTests.java
@@ -99,7 +99,7 @@ public class NamespaceOwnershipListenerTests extends 
BrokerTestBase {
         Assert.assertTrue(onLoad.get());
         Assert.assertTrue(unLoad.get());
         admin.topics().delete(topic);
-        deleteNamespaceGraceFully(namespace, false);
+        deleteNamespaceWithRetry(namespace, false);
     }
 
     @Test
@@ -120,7 +120,7 @@ public class NamespaceOwnershipListenerTests extends 
BrokerTestBase {
         }
 
         admin.topics().deletePartitionedTopic(topicName);
-        deleteNamespaceGraceFully(namespace, false);
+        deleteNamespaceWithRetry(namespace, false);
     }
 
     @Test
@@ -170,6 +170,6 @@ public class NamespaceOwnershipListenerTests extends 
BrokerTestBase {
         Assert.assertEquals(onLoad.get(), 1);
         Assert.assertEquals(unLoad.get(), 1);
         admin.topics().delete(topic);
-        deleteNamespaceGraceFully(namespace, false);
+        deleteNamespaceWithRetry(namespace, false);
     }
 }
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipForCurrentServerTestBase.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipForCurrentServerTestBase.java
index 5f93711dc69..65fd9395631 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipForCurrentServerTestBase.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipForCurrentServerTestBase.java
@@ -45,7 +45,6 @@ import org.apache.pulsar.broker.PulsarService;
 import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.broker.auth.SameThreadOrderedSafeExecutor;
 import org.apache.pulsar.broker.intercept.CounterBrokerInterceptor;
-import org.apache.pulsar.broker.service.CanPausedNamespaceService;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.PulsarClient;
 import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended;
@@ -133,7 +132,7 @@ public class OwnerShipForCurrentServerTestBase {
         doReturn(new 
ZKMetadataStore(mockZooKeeperSession)).when(pulsar).createLocalMetadataStore(null);
         doReturn(new 
ZKMetadataStore(mockZooKeeperSession)).when(pulsar).createConfigurationMetadataStore(null);
         Supplier<NamespaceService> namespaceServiceSupplier = () -> 
spyWithClassAndConstructorArgs(
-                CanPausedNamespaceService.class, pulsar);
+                NamespaceService.class, pulsar);
         
doReturn(namespaceServiceSupplier).when(pulsar).getNamespaceServiceProvider();
 
         SameThreadOrderedSafeExecutor executor = new 
SameThreadOrderedSafeExecutor();
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupConfigListenerTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupConfigListenerTest.java
index 8210af278a4..90c26530850 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupConfigListenerTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupConfigListenerTest.java
@@ -197,7 +197,7 @@ public class ResourceGroupConfigListenerTest extends 
MockedPulsarServiceBaseTest
                 assertNull(pulsar.getResourceGroupServiceManager()
                         
.getNamespaceResourceGroup(NamespaceName.get(namespaceName))));
 
-        deleteNamespaceGraceFully(namespaceName, false);
+        deleteNamespaceWithRetry(namespaceName, false);
         deleteResourceGroup(rgName);
     }
 
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 b619d72f1e8..a7e5dc09480 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
@@ -40,6 +40,7 @@ import org.apache.bookkeeper.mledger.Position;
 import org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl;
 import org.apache.pulsar.broker.PulsarService;
 import org.apache.pulsar.broker.ServiceConfiguration;
+import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
 import org.apache.pulsar.broker.service.persistent.PersistentTopic;
 import org.apache.pulsar.client.admin.GetStatsOptions;
 import org.apache.pulsar.client.admin.PulsarAdmin;
@@ -83,27 +84,19 @@ public class BacklogQuotaManagerTest {
     private static final int MAX_ENTRIES_PER_LEDGER = 5;
 
     /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
+     * see {@link MockedPulsarServiceBaseTest#deleteNamespaceWithRetry(String, 
boolean, PulsarAdmin, Collection)}
      */
-    protected void deleteNamespaceGraceFully(String ns, boolean force)
+    protected void deleteNamespaceWithRetry(String ns, boolean force)
             throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, pulsar);
+        MockedPulsarServiceBaseTest.deleteNamespaceWithRetry(ns, force, admin, 
pulsar);
     }
 
     /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
+     * see {@link MockedPulsarServiceBaseTest#deleteNamespaceWithRetry(String, 
boolean, PulsarAdmin, Collection)}
      */
-    protected void deleteNamespaceGraceFully(String ns, boolean force, 
PulsarAdmin admin)
+    protected void deleteNamespaceWithRetry(String ns, boolean force, 
PulsarAdmin admin)
             throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, pulsar);
-    }
-
-    /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
-     */
-    protected void deleteNamespaceGraceFullyByMultiPulsars(String ns, boolean 
force, PulsarAdmin admin,
-                                                           
PulsarService...pulsars) throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, pulsars);
+        MockedPulsarServiceBaseTest.deleteNamespaceWithRetry(ns, force, admin, 
pulsar);
     }
 
     @DataProvider(name = "backlogQuotaSizeGB")
@@ -186,9 +179,9 @@ public class BacklogQuotaManagerTest {
 
     @AfterMethod(alwaysRun = true)
     void clearNamespaces() throws Exception {
-        deleteNamespaceGraceFully("prop/ns-quota", true);
-        deleteNamespaceGraceFully("prop/quotahold", true);
-        deleteNamespaceGraceFully("prop/quotaholdasync", true);
+        deleteNamespaceWithRetry("prop/ns-quota", true);
+        deleteNamespaceWithRetry("prop/quotahold", true);
+        deleteNamespaceWithRetry("prop/quotaholdasync", true);
     }
 
     private void rolloverStats() {
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceBundlesCacheInvalidationTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceBundlesCacheInvalidationTest.java
index 6bcfb28251c..c9771ddbe2f 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceBundlesCacheInvalidationTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceBundlesCacheInvalidationTest.java
@@ -59,7 +59,7 @@ public class BrokerServiceBundlesCacheInvalidationTest 
extends BrokerTestBase {
 
         // Delete and recreate with 32 bundles
         admin.topics().delete(topic);
-        deleteNamespaceGraceFully(namespace, false);
+        deleteNamespaceWithRetry(namespace, false);
         admin.namespaces().createNamespace(namespace, 32);
 
         BundlesData bundlesData = admin.namespaces().getBundles(namespace);
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java
index c9006f797fc..5fd4edd2a30 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java
@@ -18,46 +18,19 @@
  */
 package org.apache.pulsar.broker.service;
 
-import static 
org.apache.pulsar.common.naming.SystemTopicNames.NAMESPACE_EVENTS_LOCAL_NAME;
-import static org.apache.pulsar.compaction.Compactor.COMPACTION_SUBSCRIPTION;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.pulsar.broker.PulsarService;
 import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
-import org.apache.pulsar.broker.namespace.NamespaceEphemeralData;
-import org.apache.pulsar.broker.service.persistent.PersistentTopic;
-import org.apache.pulsar.broker.systopic.SystemTopicClient;
-import org.apache.pulsar.client.admin.PulsarAdmin;
-import org.apache.pulsar.client.admin.PulsarAdminException;
-import org.apache.pulsar.common.events.PulsarEvent;
-import org.apache.pulsar.common.naming.NamespaceBundle;
-import org.apache.pulsar.common.naming.NamespaceName;
 import org.apache.pulsar.common.naming.SystemTopicNames;
-import org.apache.pulsar.common.naming.TopicName;
 import org.apache.pulsar.common.partition.PartitionedTopicMetadata;
 import org.apache.pulsar.common.policies.data.ClusterData;
 import org.apache.pulsar.common.policies.data.TenantInfoImpl;
-import org.apache.pulsar.common.util.FutureUtil;
 import org.apache.pulsar.metadata.api.MetadataStoreException;
-import org.apache.pulsar.metadata.api.coordination.LockManager;
-import org.awaitility.Awaitility;
-import org.awaitility.reflect.WhiteboxImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.collect.Sets;
 
 import java.util.Random;
-import java.util.concurrent.TimeUnit;
 
 public abstract class BrokerTestBase extends MockedPulsarServiceBaseTest {
     protected static final int ASYNC_EVENT_COMPLETION_WAIT = 100;
@@ -135,162 +108,5 @@ public abstract class BrokerTestBase extends 
MockedPulsarServiceBaseTest {
         return "prop/ns-abc/topic-" + Long.toHexString(random.nextLong());
     }
 
-    /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
-     */
-    protected void deleteNamespaceGraceFully(String ns, boolean force)
-            throws Exception {
-        deleteNamespaceGraceFully(ns, force, admin, pulsar);
-    }
-
-    /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
-     */
-    public static void deleteNamespaceGraceFully(String ns, boolean force, 
PulsarAdmin admin, PulsarService...pulsars)
-            throws Exception {
-        deleteNamespaceGraceFully(ns, force, admin, Arrays.asList(pulsars));
-    }
-
-    /**
-     * Wait until system topic "__change_event" and subscription 
"__compaction" are created, and then delete the namespace.
-     */
-    public static void deleteNamespaceGraceFully(String ns, boolean force, 
PulsarAdmin admin,
-                                                 Collection<PulsarService> 
pulsars) throws Exception {
-        // namespace v1 should not wait system topic create.
-        if (ns.split("/").length > 2){
-            admin.namespaces().deleteNamespace(ns, force);
-            return;
-        }
-
-        // If disabled system-topic, should not wait system topic create.
-        boolean allBrokerDisabledSystemTopic = true;
-        for (PulsarService pulsar : pulsars) {
-            if (!pulsar.getConfiguration().isSystemTopicEnabled()) {
-                continue;
-            }
-            TopicPoliciesService topicPoliciesService = 
pulsar.getTopicPoliciesService();
-            if (!(topicPoliciesService instanceof 
SystemTopicBasedTopicPoliciesService)) {
-                continue;
-            }
-            allBrokerDisabledSystemTopic = false;
-        }
-        if (allBrokerDisabledSystemTopic){
-            admin.namespaces().deleteNamespace(ns, force);
-            return;
-        }
-
-        // Stop trigger "onNamespaceBundleOwned".
-        List<CompletableFuture<SystemTopicClient.Reader<PulsarEvent>>> 
createReaderTasks = new ArrayList<>();
-        List<String> lockedBundles = new ArrayList<>();
-        for (PulsarService pulsar : pulsars) {
-            // Prevents new events from triggering system topic creation.
-            CanPausedNamespaceService canPausedNamespaceService = 
(CanPausedNamespaceService) pulsar.getNamespaceService();
-            canPausedNamespaceService.pause();
-
-            // If no bundle has been loaded, then the System Topic will not 
trigger creation.
-            LockManager lockManager = 
pulsar.getCoordinationService().getLockManager(NamespaceEphemeralData.class);
-            lockedBundles.addAll((List<String>) 
lockManager.listLocks("/namespace" + "/" + ns).join());
-
-            // Determines whether the creation of System topic is triggered.
-            // If readerCaches contains namespace, the creation of System 
topic already triggered.
-            TopicPoliciesService topicPoliciesService = 
pulsar.getTopicPoliciesService();
-            if (topicPoliciesService instanceof
-                    SystemTopicBasedTopicPoliciesService 
systemTopicBasedTopicPoliciesService) {
-                Map<NamespaceName, 
CompletableFuture<SystemTopicClient.Reader<PulsarEvent>>> readerCaches =
-                        
WhiteboxImpl.getInternalState(systemTopicBasedTopicPoliciesService, 
"readerCaches");
-                if (readerCaches.containsKey(NamespaceName.get(ns))) {
-                    
createReaderTasks.add(readerCaches.get(NamespaceName.get(ns)));
-                }
-            }
-        }
-        // Wait all reader-create tasks.
-        FutureUtil.waitForAll(createReaderTasks).join();
-
-        // If the bundle elect has not yet been triggered, skip wait.
-        if (CollectionUtils.isEmpty(lockedBundles) && 
createReaderTasks.isEmpty()){
-            admin.namespaces().deleteNamespace(ns, force);
-            return;
-        }
-
-        // Trigger change event topic create.
-        PulsarService firstPulsar = pulsars.iterator().next();
-        NamespaceName namespace = NamespaceName.get(ns);
-        NamespaceBundle namespaceBundle = mock(NamespaceBundle.class);
-        when(namespaceBundle.getNamespaceObject()).thenReturn(namespace);
-        
firstPulsar.getTopicPoliciesService().addOwnedNamespaceBundleAsync(namespaceBundle);
-        // Wait for change event topic and compaction create finish.
-        String allowAutoTopicCreationType = 
firstPulsar.getConfiguration().getAllowAutoTopicCreationType();
-        int defaultNumPartitions = 
firstPulsar.getConfiguration().getDefaultNumPartitions();
-        ArrayList<String> expectChangeEventTopics = new ArrayList<>();
-        if ("non-partitioned".equals(allowAutoTopicCreationType)){
-            String t = String.format("persistent://%s/%s", ns, 
NAMESPACE_EVENTS_LOCAL_NAME);
-            expectChangeEventTopics.add(t);
-        } else {
-            for (int i = 0; i < defaultNumPartitions; i++){
-                String t = String.format("persistent://%s/%s-partition-%s", 
ns, NAMESPACE_EVENTS_LOCAL_NAME, i);
-                expectChangeEventTopics.add(t);
-            }
-        }
-        Awaitility.await().atMost(30, TimeUnit.SECONDS).until(() -> {
-            boolean finished = true;
-            for (String changeEventTopicName : expectChangeEventTopics){
-                boolean bundleExists = firstPulsar.getNamespaceService()
-                        
.checkTopicOwnership(TopicName.get(changeEventTopicName))
-                        .exceptionally(ex -> false).join();
-                if (!bundleExists){
-                    finished = false;
-                    break;
-                }
-                CompletableFuture<Optional<Topic>> completableFuture =
-                        
firstPulsar.getBrokerService().getTopic(changeEventTopicName, false);
-                if (completableFuture == null){
-                    finished = false;
-                    break;
-                }
-                Optional<Topic> optionalTopic = completableFuture.get();
-                if (!optionalTopic.isPresent()){
-                    finished = false;
-                    break;
-                }
-                PersistentTopic changeEventTopic = (PersistentTopic) 
optionalTopic.get();
-                if (!changeEventTopic.isCompactionEnabled()){
-                    break;
-                }
-                if 
(!changeEventTopic.getSubscriptions().containsKey(COMPACTION_SUBSCRIPTION)){
-                    finished = false;
-                    break;
-                }
-            }
-            return finished;
-        });
-
-        // Do delete.
-        int retryTimes = 3;
-        while (true) {
-            try {
-                admin.namespaces().deleteNamespace(ns, force);
-                break;
-            } catch (PulsarAdminException ex) {
-                // Do retry only if topic fenced.
-                if (ex.getStatusCode() == 500 && 
ex.getMessage().contains("TopicFencedException")){
-                    if (--retryTimes > 0){
-                        continue;
-                    } else {
-                        throw ex;
-                    }
-                }
-                throw ex;
-            }
-        }
-
-        // Resume trigger "onNamespaceBundleOwned".
-        for (PulsarService pulsarService : pulsars) {
-            // Prevents new events from triggering system topic creation.
-            CanPausedNamespaceService canPausedNamespaceService =
-                    (CanPausedNamespaceService) 
pulsarService.getNamespaceService();
-            canPausedNamespaceService.resume();
-        }
-    }
-
     private static final Logger LOG = 
LoggerFactory.getLogger(BrokerTestBase.class);
 }
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/CanPausedNamespaceService.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/CanPausedNamespaceService.java
deleted file mode 100644
index 34fb2e708fb..00000000000
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/CanPausedNamespaceService.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.pulsar.broker.service;
-
-import java.util.concurrent.locks.ReentrantLock;
-import org.apache.pulsar.broker.PulsarService;
-import org.apache.pulsar.broker.namespace.NamespaceService;
-import org.apache.pulsar.common.naming.NamespaceBundle;
-
-public class CanPausedNamespaceService extends NamespaceService {
-
-    private volatile boolean paused = false;
-
-    private ReentrantLock lock = new ReentrantLock();
-
-    public CanPausedNamespaceService(PulsarService pulsar) {
-        super(pulsar);
-    }
-
-    @Override
-    protected void onNamespaceBundleOwned(NamespaceBundle bundle) {
-        lock.lock();
-        try {
-            if (paused){
-                return;
-            }
-            super.onNamespaceBundleOwned(bundle);
-        } finally {
-            lock.unlock();
-        }
-    }
-
-    public void pause(){
-        lock.lock();
-        try {
-            paused = true;
-        } finally {
-            lock.unlock();
-        }
-    }
-
-    public void resume(){
-        lock.lock();
-        try {
-            paused = false;
-        } finally {
-            lock.unlock();
-        }
-    }
-}
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java
index 374173203f6..9bd34cc07e0 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java
@@ -998,7 +998,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
         consumer.close();
         admin.topics().deleteSubscription(topicName, subName);
         admin.topics().delete(topicName);
-        deleteNamespaceGraceFully(namespaceName, false);
+        deleteNamespaceWithRetry(namespaceName, false);
     }
 
     @Test
@@ -1090,7 +1090,7 @@ public class PersistentTopicE2ETest extends 
BrokerTestBase {
             consumer.close();
             admin.topics().deleteSubscription(topicName, subName);
             admin.topics().delete(topicName);
-            deleteNamespaceGraceFully(namespaceName, true);
+            deleteNamespaceWithRetry(namespaceName, true);
         } catch (PulsarAdminException e) {
             Assert.assertEquals(e.getStatusCode(), 500);
         }
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionTestBase.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionTestBase.java
index 82a62a1e3a8..d48ef901f54 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionTestBase.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionTestBase.java
@@ -45,11 +45,11 @@ import org.apache.bookkeeper.util.ZkUtils;
 import org.apache.pulsar.broker.BookKeeperClientFactory;
 import org.apache.pulsar.broker.PulsarService;
 import org.apache.pulsar.broker.ServiceConfiguration;
+import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
 import org.apache.pulsar.broker.auth.SameThreadOrderedSafeExecutor;
 import org.apache.pulsar.broker.intercept.CounterBrokerInterceptor;
 import org.apache.pulsar.broker.namespace.NamespaceService;
 import org.apache.pulsar.broker.service.BrokerTestBase;
-import org.apache.pulsar.broker.service.CanPausedNamespaceService;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.PulsarClient;
 import org.apache.pulsar.common.naming.NamespaceName;
@@ -198,7 +198,7 @@ public abstract class TransactionTestBase extends 
TestRetrySupport {
         doReturn(new 
ZKMetadataStore(mockZooKeeperSession)).when(pulsar).createLocalMetadataStore(null);
         doReturn(new 
ZKMetadataStore(mockZooKeeperSession)).when(pulsar).createConfigurationMetadataStore(null);
         Supplier<NamespaceService> namespaceServiceSupplier =
-                () -> 
spyWithClassAndConstructorArgs(CanPausedNamespaceService.class, pulsar);
+                () -> spyWithClassAndConstructorArgs(NamespaceService.class, 
pulsar);
         
doReturn(namespaceServiceSupplier).when(pulsar).getNamespaceServiceProvider();
 
         SameThreadOrderedSafeExecutor executor = new 
SameThreadOrderedSafeExecutor();
@@ -332,26 +332,18 @@ public abstract class TransactionTestBase extends 
TestRetrySupport {
     }
 
     /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
+     * see {@link BrokerTestBase#deleteNamespaceWithRetry(String, boolean, 
PulsarAdmin, Collection)}
      */
-    protected void deleteNamespaceGraceFully(String ns, boolean force)
+    protected void deleteNamespaceWithRetry(String ns, boolean force)
             throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, 
pulsarServiceList);
+        MockedPulsarServiceBaseTest.deleteNamespaceWithRetry(ns, force, admin, 
pulsarServiceList);
     }
 
     /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
+     * see {@link MockedPulsarServiceBaseTest#deleteNamespaceWithRetry(String, 
boolean, PulsarAdmin, Collection)}
      */
-    protected void deleteNamespaceGraceFully(String ns, boolean force, 
PulsarAdmin admin)
+    protected void deleteNamespaceWithRetry(String ns, boolean force, 
PulsarAdmin admin)
             throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, 
pulsarServiceList);
-    }
-
-    /**
-     * see {@link BrokerTestBase#deleteNamespaceGraceFully(String, boolean, 
PulsarAdmin, Collection)}
-     */
-    protected void deleteNamespaceGraceFullyByMultiPulsars(String ns, boolean 
force, PulsarAdmin admin,
-                                                           
Collection<PulsarService> pulsars) throws Exception {
-        BrokerTestBase.deleteNamespaceGraceFully(ns, force, admin, pulsars);
+        MockedPulsarServiceBaseTest.deleteNamespaceWithRetry(ns, force, admin, 
pulsarServiceList);
     }
 }
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java
index ec24c066f36..fc103a46027 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java
@@ -50,7 +50,6 @@ import java.util.stream.Collectors;
 import lombok.Cleanup;
 import org.apache.pulsar.broker.namespace.NamespaceService;
 import org.apache.pulsar.broker.service.BrokerService;
-import org.apache.pulsar.broker.service.CanPausedNamespaceService;
 import 
org.apache.pulsar.broker.service.persistent.PersistentDispatcherMultipleConsumers;
 import org.apache.pulsar.broker.service.persistent.PersistentTopic;
 import org.apache.pulsar.client.impl.ConsumerImpl;
@@ -636,7 +635,7 @@ public class DispatcherBlockConsumerTest extends 
ProducerConsumerBase {
         if (unloadBundleGracefully) {
             // set clean namespace which will not let broker unload bundle 
gracefully: stop broker
             Supplier<NamespaceService> namespaceServiceSupplier =
-                    () -> 
spyWithClassAndConstructorArgs(CanPausedNamespaceService.class, pulsar);
+                    () -> 
spyWithClassAndConstructorArgs(NamespaceService.class, pulsar);
             
doReturn(namespaceServiceSupplier).when(pulsar).getNamespaceServiceProvider();
         }
         stopBroker();
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java
index 4329083b30c..8b033d0231f 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java
@@ -140,7 +140,7 @@ public class SimpleProducerConsumerTest extends 
ProducerConsumerBase {
 
         for (String tenant : admin.tenants().getTenants()) {
             for (String namespace : admin.namespaces().getNamespaces(tenant)) {
-                deleteNamespaceGraceFully(namespace, true);
+                deleteNamespaceWithRetry(namespace, true);
             }
             admin.tenants().deleteTenant(tenant, true);
         }


Reply via email to