This is an automated email from the ASF dual-hosted git repository. rxl pushed a commit to branch branch-2.6 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 63d407854f4a0d940b07f25d02ac3b1c5723ef72 Author: Hao Zhang <zhangh...@cmss.chinamobile.com> AuthorDate: Thu Jul 2 12:50:00 2020 +0800 Fix conflict Signed-off-by: xiaolong.ran <r...@apache.org> --- .../pulsar/broker/admin/impl/NamespacesBase.java | 18 ++++++++++-------- .../org/apache/pulsar/broker/admin/NamespacesTest.java | 15 ++++++++++----- 2 files changed, 20 insertions(+), 13 deletions(-) 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 07ed1e8..812ebd0 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 @@ -28,7 +28,6 @@ import static org.apache.pulsar.broker.cache.LocalZooKeeperCacheService.LOCAL_PO import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; - import java.net.URI; import java.net.URL; import java.util.Collections; @@ -43,15 +42,11 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.function.Function; import java.util.stream.Collectors; - import javax.ws.rs.WebApplicationException; import javax.ws.rs.container.AsyncResponse; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.UriBuilder; - -import org.apache.bookkeeper.mledger.LedgerOffloader; -import org.apache.bookkeeper.mledger.impl.NullLedgerOffloader; import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.ServiceConfiguration; @@ -65,6 +60,7 @@ import org.apache.pulsar.broker.service.persistent.PersistentTopic; import org.apache.pulsar.broker.systopic.SystemTopicClient; import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.client.admin.PulsarAdminException; +import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.NamespaceBundleFactory; import org.apache.pulsar.common.naming.NamespaceBundleSplitAlgorithm; @@ -72,16 +68,16 @@ import org.apache.pulsar.common.naming.NamespaceBundles; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; +import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.AutoSubscriptionCreationOverride; import org.apache.pulsar.common.policies.data.AutoTopicCreationOverride; -import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType; import org.apache.pulsar.common.policies.data.BookieAffinityGroupData; import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; +import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.OffloadPolicies; @@ -101,7 +97,6 @@ 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; import org.slf4j.LoggerFactory; @@ -110,6 +105,13 @@ public abstract class NamespacesBase extends AdminResource { private static final long MAX_BUNDLES = ((long) 1) << 32; protected List<String> internalGetTenantNamespaces(String tenant) { + checkNotNull(tenant, "Tenant should not be null"); + try { + NamedEntity.checkName(tenant); + } catch (IllegalArgumentException e) { + log.warn("[{}] Tenant name is invalid {}", clientAppId(), tenant, e); + throw new RestException(Status.PRECONDITION_FAILED, "Tenant name is not valid"); + } validateTenantOperation(tenant, TenantOperation.LIST_NAMESPACES); try { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java index 366f0e8..c0748ed 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java @@ -37,7 +37,6 @@ import static org.testng.Assert.fail; import com.google.common.collect.Lists; import com.google.common.collect.Sets; - import java.lang.reflect.Field; import java.net.URI; import java.net.URL; @@ -49,7 +48,6 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; - import javax.ws.rs.ClientErrorException; import javax.ws.rs.WebApplicationException; import javax.ws.rs.container.AsyncResponse; @@ -57,7 +55,6 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; - import org.apache.bookkeeper.client.api.ReadHandle; import org.apache.bookkeeper.mledger.LedgerOffloader; import org.apache.bookkeeper.mledger.ManagedLedgerConfig; @@ -97,12 +94,12 @@ import org.apache.zookeeper.ZooDefs; import org.mockito.ArgumentCaptor; import org.mockito.ArgumentMatcher; import org.mockito.Mockito; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class NamespacesTest extends MockedPulsarServiceBaseTest { private static final Logger log = LoggerFactory.getLogger(NamespacesTest.class); @@ -253,6 +250,14 @@ public class NamespacesTest extends MockedPulsarServiceBaseTest { assertEquals(namespaces.getTenantNamespaces(this.testTenant), expectedList); try { + // check the tenant name is valid + namespaces.getTenantNamespaces(this.testTenant + "/default"); + fail("should have failed"); + } catch (RestException e) { + assertEquals(e.getResponse().getStatus(), Status.PRECONDITION_FAILED.getStatusCode()); + } + + try { namespaces.getTenantNamespaces("non-existing-tenant"); fail("should have failed"); } catch (RestException e) {