You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ti...@apache.org on 2022/12/27 01:55:33 UTC

[pulsar] branch master updated: [fix][client] ExtNonPersistentTopics and prevent prefix match (#19065)

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

tison 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 4f72fdb5951 [fix][client] ExtNonPersistentTopics and prevent prefix match (#19065)
4f72fdb5951 is described below

commit 4f72fdb5951cd29f1762ffe1df29e6dca6e51844
Author: tison <wa...@gmail.com>
AuthorDate: Tue Dec 27 09:55:27 2022 +0800

    [fix][client] ExtNonPersistentTopics and prevent prefix match (#19065)
    
    Signed-off-by: tison <wa...@gmail.com>
---
 pulsar-broker/pom.xml                              |  3 ++-
 ...tTopicsExt.java => ExtNonPersistentTopics.java} | 14 +++++-------
 ...tentTopicsExt.java => ExtPersistentTopics.java} |  2 +-
 .../pulsar/broker/admin/PersistentTopicsTest.java  | 26 +++++++++++-----------
 4 files changed, 21 insertions(+), 24 deletions(-)

diff --git a/pulsar-broker/pom.xml b/pulsar-broker/pom.xml
index e200d368027..ce20aed7bed 100644
--- a/pulsar-broker/pom.xml
+++ b/pulsar-broker/pom.xml
@@ -706,7 +706,8 @@
                     <location>org.apache.pulsar.broker.admin.v2.NonPersistentTopics</location>
                     <location>org.apache.pulsar.broker.admin.v2.PersistentTopics</location>
                     <!-- See https://github.com/apache/pulsar/issues/18947 -->
-                    <!-- <location>org.apache.pulsar.broker.admin.v2.PersistentTopicsExt</location> -->
+                    <!-- <location>org.apache.pulsar.broker.admin.v2.ExtPersistentTopics</location> -->
+                    <!-- <location>org.apache.pulsar.broker.admin.v2.ExtNonPersistentTopics</location> -->
                     <location>org.apache.pulsar.broker.admin.v2.ResourceGroups</location>
                     <location>org.apache.pulsar.broker.admin.v2.ResourceQuotas</location>
                     <location>org.apache.pulsar.broker.admin.v2.SchemasResource</location>
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopicsExt.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/ExtNonPersistentTopics.java
similarity index 87%
copy from pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopicsExt.java
copy to pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/ExtNonPersistentTopics.java
index 441ea1121cd..9f821ae7594 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopicsExt.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/ExtNonPersistentTopics.java
@@ -37,8 +37,6 @@ import javax.ws.rs.container.Suspended;
 import javax.ws.rs.core.MediaType;
 import org.apache.pulsar.broker.admin.impl.PersistentTopicsBase;
 import org.apache.pulsar.common.partition.PartitionedTopicMetadata;
-import org.apache.pulsar.common.policies.data.PolicyName;
-import org.apache.pulsar.common.policies.data.PolicyOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,10 +44,10 @@ import org.slf4j.LoggerFactory;
  * This class is for preventing docs conflict before we find a good way to fix
  * <a href="https://github.com/apache/pulsar/issues/18947">ISSUE-18947</a>.
  */
-@Path("/persistent")
+@Path("/non-persistent")
 @Produces(MediaType.APPLICATION_JSON)
-@Api(value = "/persistent", description = "Persistent topic admin apis", tags = "persistent topic")
-public class PersistentTopicsExt extends PersistentTopicsBase {
+@Api(value = "/non-persistent", description = "Non-Persistent topic admin apis", tags = "non-persistent topic")
+public class ExtNonPersistentTopics extends PersistentTopicsBase {
 
     @PUT
     @Consumes(PartitionedTopicMetadata.MEDIA_TYPE)
@@ -83,9 +81,7 @@ public class PersistentTopicsExt extends PersistentTopicsBase {
         try {
             validateNamespaceName(tenant, namespace);
             validateGlobalNamespaceOwnership();
-            validatePartitionedTopicName(tenant, namespace, encodedTopic);
-            validateTopicPolicyOperation(topicName, PolicyName.PARTITION, PolicyOperation.WRITE);
-            validateCreateTopic(topicName);
+            validateTopicName(tenant, namespace, encodedTopic);
             internalCreatePartitionedTopic(asyncResponse, metadata.partitions, createLocalTopicOnly,
                     metadata.properties);
         } catch (Exception e) {
@@ -94,5 +90,5 @@ public class PersistentTopicsExt extends PersistentTopicsBase {
         }
     }
 
-    private static final Logger log = LoggerFactory.getLogger(PersistentTopics.class);
+    private static final Logger log = LoggerFactory.getLogger(NonPersistentTopics.class);
 }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopicsExt.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/ExtPersistentTopics.java
similarity index 98%
rename from pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopicsExt.java
rename to pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/ExtPersistentTopics.java
index 441ea1121cd..2c449cb5010 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopicsExt.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/ExtPersistentTopics.java
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
 @Path("/persistent")
 @Produces(MediaType.APPLICATION_JSON)
 @Api(value = "/persistent", description = "Persistent topic admin apis", tags = "persistent topic")
-public class PersistentTopicsExt extends PersistentTopicsBase {
+public class ExtPersistentTopics extends PersistentTopicsBase {
 
     @PUT
     @Consumes(PartitionedTopicMetadata.MEDIA_TYPE)
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java
index eb2c878b550..875bf629d4f 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java
@@ -53,7 +53,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.pulsar.broker.BrokerTestUtil;
 import org.apache.pulsar.broker.admin.v2.NonPersistentTopics;
 import org.apache.pulsar.broker.admin.v2.PersistentTopics;
-import org.apache.pulsar.broker.admin.v2.PersistentTopicsExt;
+import org.apache.pulsar.broker.admin.v2.ExtPersistentTopics;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
 import org.apache.pulsar.broker.authentication.AuthenticationDataHttps;
 import org.apache.pulsar.broker.namespace.NamespaceService;
@@ -106,7 +106,7 @@ import org.testng.annotations.Test;
 public class PersistentTopicsTest extends MockedPulsarServiceBaseTest {
 
     private PersistentTopics persistentTopics;
-    private PersistentTopicsExt persistentTopicsExt;
+    private ExtPersistentTopics extPersistentTopics;
     private final String testTenant = "my-tenant";
     private final String testLocalCluster = "use";
     private final String testNamespace = "my-namespace";
@@ -137,15 +137,15 @@ public class PersistentTopicsTest extends MockedPulsarServiceBaseTest {
         doNothing().when(persistentTopics).validateAdminAccessForTenant(this.testTenant);
         doReturn(mock(AuthenticationDataHttps.class)).when(persistentTopics).clientAuthData();
 
-        persistentTopicsExt = spy(PersistentTopicsExt.class);
-        persistentTopicsExt.setServletContext(new MockServletContext());
-        persistentTopicsExt.setPulsar(pulsar);
-        doReturn(false).when(persistentTopicsExt).isRequestHttps();
-        doReturn(null).when(persistentTopicsExt).originalPrincipal();
-        doReturn("test").when(persistentTopicsExt).clientAppId();
-        doReturn(TopicDomain.persistent.value()).when(persistentTopicsExt).domain();
-        doNothing().when(persistentTopicsExt).validateAdminAccessForTenant(this.testTenant);
-        doReturn(mock(AuthenticationDataHttps.class)).when(persistentTopicsExt).clientAuthData();
+        extPersistentTopics = spy(ExtPersistentTopics.class);
+        extPersistentTopics.setServletContext(new MockServletContext());
+        extPersistentTopics.setPulsar(pulsar);
+        doReturn(false).when(extPersistentTopics).isRequestHttps();
+        doReturn(null).when(extPersistentTopics).originalPrincipal();
+        doReturn("test").when(extPersistentTopics).clientAppId();
+        doReturn(TopicDomain.persistent.value()).when(extPersistentTopics).domain();
+        doNothing().when(extPersistentTopics).validateAdminAccessForTenant(this.testTenant);
+        doReturn(mock(AuthenticationDataHttps.class)).when(extPersistentTopics).clientAuthData();
 
         nonPersistentTopic = spy(NonPersistentTopics.class);
         nonPersistentTopic.setServletContext(new MockServletContext());
@@ -555,7 +555,7 @@ public class PersistentTopicsTest extends MockedPulsarServiceBaseTest {
         Map<String, String> topicMetadata = new HashMap<>();
         topicMetadata.put("key1", "value1");
         PartitionedTopicMetadata metadata = new PartitionedTopicMetadata(2, topicMetadata);
-        persistentTopicsExt.createPartitionedTopic(response2, testTenant, testNamespace, topicName2, metadata, true);
+        extPersistentTopics.createPartitionedTopic(response2, testTenant, testNamespace, topicName2, metadata, true);
         Awaitility.await().untilAsserted(() -> {
             persistentTopics.getPartitionedMetadata(response2,
                     testTenant, testNamespace, topicName2, true, false);
@@ -660,7 +660,7 @@ public class PersistentTopicsTest extends MockedPulsarServiceBaseTest {
         ArgumentCaptor<PartitionedTopicMetadata> responseCaptor =
             ArgumentCaptor.forClass(PartitionedTopicMetadata.class);
         PartitionedTopicMetadata metadata = new PartitionedTopicMetadata(2, topicMetadata);
-        persistentTopicsExt.createPartitionedTopic(response, tenant, namespace, topic, metadata, true);
+        extPersistentTopics.createPartitionedTopic(response, tenant, namespace, topic, metadata, true);
         Awaitility.await().untilAsserted(() -> {
             persistentTopics.getPartitionedMetadata(response,
                 tenant, namespace, topic, true, false);