You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/03/29 22:54:53 UTC

[incubator-pulsar] branch master updated: Fix topic deletion for V2 topics. (#1470)

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

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new dd29630  Fix topic deletion for V2 topics. (#1470)
dd29630 is described below

commit dd296300a9988d987fdaafd338dba3d74510308a
Author: cckellogg <cc...@gmail.com>
AuthorDate: Thu Mar 29 15:54:50 2018 -0700

    Fix topic deletion for V2 topics. (#1470)
    
    * Fix topic deletion for V2 topics.
    
    - Add a isReplicated() method to topics
    - Add isReplicated check before deleting a topic
    
    * Remove global check.
---
 .../org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java    | 4 +++-
 .../src/main/java/org/apache/pulsar/broker/service/Topic.java        | 2 ++
 .../pulsar/broker/service/nonpersistent/NonPersistentTopic.java      | 5 +++++
 .../org/apache/pulsar/broker/service/persistent/PersistentTopic.java | 5 +++++
 4 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
index 04addf5..87d1b3a 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
@@ -464,7 +464,9 @@ public class PersistentTopicsBase extends AdminResource {
     protected void internalDeleteTopic(boolean authoritative) {
         validateAdminOperationOnTopic(authoritative);
         Topic topic = getTopicReference(topicName);
-        if (topicName.isGlobal()) {
+
+        // v2 topics have a global name so check if the topic is replicated.
+        if (topic.isReplicated()) {
             // Delete is disallowed on global topic
             log.error("[{}] Delete topic is forbidden on global namespace {}", clientAppId(), topicName);
             throw new RestException(Status.FORBIDDEN, "Delete forbidden on global namespace");
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java
index 1b20ebd..9a6ab6e 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java
@@ -111,6 +111,8 @@ public interface Topic {
 
     boolean isEncryptionRequired();
 
+    boolean isReplicated();
+
     BacklogQuota getBacklogQuota();
 
     void updateRates(NamespaceStats nsStats, NamespaceBundleStats currentBundleStats,
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java
index 056062a..fc6a920 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java
@@ -959,6 +959,11 @@ public class NonPersistentTopic implements Topic {
     }
 
     @Override
+    public boolean isReplicated() {
+        return replicators.size() > 1;
+    }
+
+    @Override
     public CompletableFuture<Void> unsubscribe(String subName) {
         // No-op
         return CompletableFuture.completedFuture(null);
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
index c179aef..e5b79bf 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
@@ -1497,6 +1497,11 @@ public class PersistentTopic implements Topic, AddEntryCallback {
         return isEncryptionRequired;
     }
 
+    @Override
+    public boolean isReplicated() {
+        return replicators.size() > 1;
+    }
+
     public CompletableFuture<MessageId> terminate() {
         CompletableFuture<MessageId> future = new CompletableFuture<>();
         ledger.asyncTerminate(new TerminateCallback() {

-- 
To stop receiving notification emails like this one, please contact
mmerli@apache.org.