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.