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);