You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by zh...@apache.org on 2020/05/08 12:33:51 UTC
[pulsar] 05/38: Fixed double delete on a namespace (#6713)
This is an automated email from the ASF dual-hosted git repository.
zhaijia pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 40b6c916bd891ffdcde407d834ecf714cd5bc6e3
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Tue Apr 14 08:46:06 2020 -0700
Fixed double delete on a namespace (#6713)
(cherry picked from commit 88f401c534f597ce8b66939d1490974bfde60441)
---
.../apache/pulsar/broker/admin/impl/NamespacesBase.java | 9 ++++++++-
.../org/apache/pulsar/broker/admin/AdminApiTest.java | 17 +++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
index 638d397..619a5cd 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
@@ -90,6 +90,7 @@ import org.apache.pulsar.common.policies.data.SubscriptionAuthMode;
import org.apache.pulsar.common.util.FutureUtil;
import org.apache.pulsar.common.util.ObjectMapperFactory;
import org.apache.zookeeper.KeeperException;
+import org.apache.zookeeper.KeeperException.NoNodeException;
import org.apache.zookeeper.data.Stat;
import org.slf4j.Logger;
@@ -257,7 +258,13 @@ public abstract class NamespacesBase extends AdminResource {
final String globalZkPolicyPath = path(POLICIES, namespaceName.toString());
final String lcaolZkPolicyPath = joinPath(LOCAL_POLICIES_ROOT, namespaceName.toString());
globalZk().delete(globalZkPolicyPath, -1);
- localZk().delete(lcaolZkPolicyPath, -1);
+
+ try {
+ localZk().delete(lcaolZkPolicyPath, -1);
+ } catch (NoNodeException nne) {
+ // If the z-node with the modified information is not there anymore, we're already good
+ }
+
policiesCache().invalidate(globalZkPolicyPath);
localCacheService().policiesCache().invalidate(lcaolZkPolicyPath);
} catch (Exception e) {
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 ae98235..0ab6311 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
@@ -2253,6 +2253,23 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
}
@Test
+ public void testCreateAndDeleteNamespaceWithBundles() throws Exception {
+ admin.clusters().createCluster("usw", new ClusterData());
+ TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"),
+ Sets.newHashSet("test", "usw"));
+ admin.tenants().updateTenant("prop-xyz", tenantInfo);
+
+ String ns = "prop-xyz/ns-" + System.nanoTime();
+
+ admin.namespaces().createNamespace(ns, 24);
+ admin.namespaces().deleteNamespace(ns);
+
+ // Re-create and re-delete
+ admin.namespaces().createNamespace(ns, 32);
+ admin.namespaces().deleteNamespace(ns);
+ }
+
+ @Test
public void testBacklogSizeShouldBeZeroWhenConsumerAckedAllMessages() throws Exception {
final String topic = "persistent://prop-xyz/ns1/testBacklogSizeShouldBeZeroWhenConsumerAckedAllMessages";
Consumer<byte[]> consumer = pulsarClient.newConsumer()