From aa866d7d09d06c2c48ab31b2222fc5a005eb4f9d Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 18 May 2021 13:25:07 +0800 Subject: [PATCH 01/51] remove gson from admin api Topics.java --- .../broker/admin/impl/PersistentTopicsBase.java | 9 ++++----- .../apache/pulsar/broker/admin/AdminApiTest.java | 14 ++++++-------- .../org/apache/pulsar/client/admin/Topics.java | 5 ++--- .../pulsar/client/admin/internal/TopicsImpl.java | 11 ++++------- .../pulsar/admin/cli/CmdPersistentTopics.java | 2 +- .../org/apache/pulsar/admin/cli/CmdTopics.java | 2 +- 6 files changed, 18 insertions(+), 25 deletions(-) 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 c61e37f07536e..9be6f1fc94d0d 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 @@ -28,7 +28,6 @@ import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; import io.netty.buffer.ByteBuf; import java.io.IOException; import java.util.ArrayList; @@ -1129,7 +1128,7 @@ protected void internalGetManagedLedgerInfo(AsyncResponse asyncResponse, boolean getPartitionedTopicMetadataAsync(topicName, authoritative, false).thenAccept(partitionMetadata -> { if (partitionMetadata.partitions > 0) { - final List> futures = Lists.newArrayList(); + final List> futures = Lists.newArrayList(); PartitionedManagedLedgerInfo partitionedManagedLedgerInfo = new PartitionedManagedLedgerInfo(); @@ -1138,7 +1137,7 @@ protected void internalGetManagedLedgerInfo(AsyncResponse asyncResponse, boolean try { futures.add(pulsar().getAdminClient().topics() .getInternalInfoAsync( - topicNamePartition.toString()).whenComplete((jsonObject, throwable) -> { + topicNamePartition.toString()).whenComplete((response, throwable) -> { if (throwable != null) { log.error("[{}] Failed to get managed info for {}", clientAppId(), topicNamePartition, throwable); @@ -1147,12 +1146,12 @@ protected void internalGetManagedLedgerInfo(AsyncResponse asyncResponse, boolean Gson gson = new GsonBuilder().setPrettyPrinting().create(); try { partitionedManagedLedgerInfo.partitions.put(topicNamePartition.toString(), - jsonMapper().readValue(gson.toJson(jsonObject), + jsonMapper().readValue(gson.toJson(response), ManagedLedgerInfo.class)); } catch (JsonProcessingException ex) { log.error("[{}] Failed to parse ManagedLedgerInfo for {} from [{}]", clientAppId(), - topicNamePartition, gson.toJson(jsonObject), ex); + topicNamePartition, gson.toJson(response), ex); } })); } catch (Exception e) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index e92447666eb4b..4027c7fdd680c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -1034,23 +1034,21 @@ public void testGetPartitionedInternalInfo() throws Exception { String partitionTopic0 = partitionedTopicName + "-partition-0"; String partitionTopic1 = partitionedTopicName + "-partition-1"; - JsonObject partitionTopic0Info = admin.topics().getInternalInfo(partitionTopic0); - JsonObject partitionTopic1Info = admin.topics().getInternalInfo(partitionTopic1); - - Gson gson = new GsonBuilder().create(); + String partitionTopic0InfoResponse = admin.topics().getInternalInfo(partitionTopic0); + String partitionTopic1InfoResponse = admin.topics().getInternalInfo(partitionTopic1); // expected managed info PartitionedManagedLedgerInfo partitionedManagedLedgerInfo = new PartitionedManagedLedgerInfo(); partitionedManagedLedgerInfo.version = 0L; partitionedManagedLedgerInfo.partitions.put(partitionTopic0, - ObjectMapperFactory.getThreadLocal().readValue(gson.toJson(partitionTopic0Info), ManagedLedgerInfo.class)); + ObjectMapperFactory.getThreadLocal().readValue(partitionTopic0InfoResponse, ManagedLedgerInfo.class)); partitionedManagedLedgerInfo.partitions.put(partitionTopic1, - ObjectMapperFactory.getThreadLocal().readValue(gson.toJson(partitionTopic1Info), ManagedLedgerInfo.class)); + ObjectMapperFactory.getThreadLocal().readValue(partitionTopic1InfoResponse, ManagedLedgerInfo.class)); String expectedResult = ObjectMapperFactory.getThreadLocal().writeValueAsString(partitionedManagedLedgerInfo); - JsonObject partitionTopicInfo = admin.topics().getInternalInfo(partitionedTopicName); - assertEquals(gson.toJson(partitionTopicInfo), expectedResult); + String partitionTopicInfoResponse = admin.topics().getInternalInfo(partitionedTopicName); + assertEquals(partitionTopicInfoResponse, expectedResult); } @Test diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java index d5f3f10c37402..66ac8c456ec3b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.client.admin; -import com.google.gson.JsonObject; import java.util.List; import java.util.Map; import java.util.Set; @@ -921,7 +920,7 @@ default CompletableFuture getStatsAsync(String topic) { * @throws PulsarAdminException * Unexpected error */ - JsonObject getInternalInfo(String topic) throws PulsarAdminException; + String getInternalInfo(String topic) throws PulsarAdminException; /** * Get a JSON representation of the topic metadata stored in ZooKeeper. @@ -936,7 +935,7 @@ default CompletableFuture getStatsAsync(String topic) { * @throws PulsarAdminException * Unexpected error */ - CompletableFuture getInternalInfoAsync(String topic); + CompletableFuture getInternalInfoAsync(String topic); /** * Get the stats for the partitioned topic diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java index 36d3694c1fe99..e737fda2a4ddd 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java @@ -21,8 +21,6 @@ import static com.google.common.base.Preconditions.checkArgument; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.gson.Gson; -import com.google.gson.JsonObject; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.io.InputStream; @@ -733,7 +731,7 @@ public void failed(Throwable throwable) { } @Override - public JsonObject getInternalInfo(String topic) throws PulsarAdminException { + public String getInternalInfo(String topic) throws PulsarAdminException { try { return getInternalInfoAsync(topic).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -747,16 +745,15 @@ public JsonObject getInternalInfo(String topic) throws PulsarAdminException { } @Override - public CompletableFuture getInternalInfoAsync(String topic) { + public CompletableFuture getInternalInfoAsync(String topic) { TopicName tn = validateTopic(topic); WebTarget path = topicPath(tn, "internal-info"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String response) { - JsonObject json = new Gson().fromJson(response, JsonObject.class); - future.complete(json); + future.complete(response); } @Override diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java index c682e712d2118..b7aa948e5733a 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java @@ -369,7 +369,7 @@ private class GetInternalInfo extends CliCommand { @Override void run() throws PulsarAdminException { String persistentTopic = validatePersistentTopic(params); - JsonObject result = getPersistentTopics().getInternalInfo(persistentTopic); + String result = getPersistentTopics().getInternalInfo(persistentTopic); Gson gson = new GsonBuilder().setPrettyPrinting().create(); System.out.println(gson.toJson(result)); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java index 9e92323003a1f..cf2ff30710ebc 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java @@ -591,7 +591,7 @@ private class GetInternalInfo extends CliCommand { @Override void run() throws PulsarAdminException { String topic = validateTopicName(params); - JsonObject result = getTopics().getInternalInfo(topic); + String result = getTopics().getInternalInfo(topic); Gson gson = new GsonBuilder().setPrettyPrinting().create(); System.out.println(gson.toJson(result)); } From 9ff19c3357a7ac5cab4dc0d4299aafa0960678f0 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Fri, 21 May 2021 16:42:51 +0800 Subject: [PATCH 02/51] Bookies.java --- .../apache/pulsar/broker/admin/BookiesApiTest.java | 8 ++++---- pulsar-client-admin-api/pom.xml | 6 ------ .../java/org/apache/pulsar/client/admin/Bookies.java | 7 ++++--- .../pulsar/common/policies/data/BookieInfo.java | 0 .../common/policies/data/BookiesClusterInfo.java | 0 .../pulsar/client/admin/internal/BookiesImpl.java | 12 +++++++----- pulsar-common/pom.xml | 6 ++++++ 7 files changed, 21 insertions(+), 18 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java (100%) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java index 7e3793c18e95a..2d568c2f7dbff 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BookiesApiTest.java @@ -53,7 +53,7 @@ public void cleanup() throws Exception { @Test public void testBasic() throws Exception { // no map - BookiesRackConfiguration conf = admin.bookies().getBookiesRackInfo(); + BookiesRackConfiguration conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); assertTrue(conf.isEmpty()); String bookie0 = "127.0.0.1:3181"; @@ -79,7 +79,7 @@ public void testBasic() throws Exception { admin.bookies().updateBookieRackInfo(bookie0, "default", newInfo0); BookieInfo readInfo0 = admin.bookies().getBookieRackInfo(bookie0); assertEquals(newInfo0, readInfo0); - conf = admin.bookies().getBookiesRackInfo(); + conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); // number of groups assertEquals(1, conf.size()); assertEquals(Optional.of(newInfo0), conf.getBookie(bookie0)); @@ -87,7 +87,7 @@ public void testBasic() throws Exception { admin.bookies().updateBookieRackInfo(bookie1, "default", newInfo1); BookieInfo readInfo1 = admin.bookies().getBookieRackInfo(bookie1); assertEquals(newInfo1, readInfo1); - conf = admin.bookies().getBookiesRackInfo(); + conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); // number of groups assertEquals(1, conf.size()); assertEquals(Optional.of(newInfo0), conf.getBookie(bookie0)); @@ -110,7 +110,7 @@ public void testBasic() throws Exception { assertEquals(404, pae.getStatusCode()); } - conf = admin.bookies().getBookiesRackInfo(); + conf = (BookiesRackConfiguration) admin.bookies().getBookiesRackInfo(); assertTrue(conf.isEmpty()); BookiesClusterInfo bookies = admin.bookies().getBookies(); diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index 739ef5ec7d600..ca8e068d1d910 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -34,12 +34,6 @@ - - ${project.groupId} - pulsar-common - ${project.parent.version} - - com.google.code.gson gson diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java index 6734925b1ff49..e22e32087ec5a 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java @@ -18,10 +18,11 @@ */ package org.apache.pulsar.client.admin; +import java.util.Map; +import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import org.apache.pulsar.common.policies.data.BookieInfo; import org.apache.pulsar.common.policies.data.BookiesClusterInfo; -import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; /** * Admin interface for bookies rack placement management. @@ -31,12 +32,12 @@ public interface Bookies { /** * Gets the rack placement information for all the bookies in the cluster. */ - BookiesRackConfiguration getBookiesRackInfo() throws PulsarAdminException; + TreeMap> getBookiesRackInfo() throws PulsarAdminException; /** * Gets the rack placement information for all the bookies in the cluster asynchronously. */ - CompletableFuture getBookiesRackInfoAsync(); + CompletableFuture>> getBookiesRackInfoAsync(); /** * Gets discovery information for all the bookies in the cluster. diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieInfo.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java index 164e9ea41c62b..abfa13db42755 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.client.admin.internal; +import java.util.Map; +import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -42,7 +44,7 @@ public BookiesImpl(WebTarget web, Authentication auth, long readTimeoutMs) { } @Override - public BookiesRackConfiguration getBookiesRackInfo() throws PulsarAdminException { + public TreeMap> getBookiesRackInfo() throws PulsarAdminException { try { return getBookiesRackInfoAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -89,13 +91,13 @@ public BookiesClusterInfo getBookies() throws PulsarAdminException { } @Override - public CompletableFuture getBookiesRackInfoAsync() { + public CompletableFuture>> getBookiesRackInfoAsync() { WebTarget path = adminBookies.path("racks-info"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture>> future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback>>() { @Override - public void completed(BookiesRackConfiguration bookiesRackConfiguration) { + public void completed(TreeMap> bookiesRackConfiguration) { future.complete(bookiesRackConfiguration); } diff --git a/pulsar-common/pom.xml b/pulsar-common/pom.xml index 1abf107ead1dc..aa29d1652fcfa 100644 --- a/pulsar-common/pom.xml +++ b/pulsar-common/pom.xml @@ -41,6 +41,12 @@ ${project.version} + + ${project.groupId} + pulsar-client-admin-api + ${project.version} + + io.swagger swagger-annotations From 48716ff411bf0e1f5160d11fe23d2e3b38059ecd Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 24 May 2021 10:00:16 +0800 Subject: [PATCH 03/51] Brokers.java --- .../common/conf/InternalConfigurationData.java | 14 ++------------ .../apache/pulsar/common/conf/package-info.java | 0 .../common/policies/data/BrokerAssignment.java | 0 .../pulsar/common/policies/data/BrokerInfo.java | 0 .../policies/data/NamespaceOwnershipStatus.java | 0 5 files changed, 2 insertions(+), 12 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java (86%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/conf/package-info.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java (100%) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java similarity index 86% rename from pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java index 5a1ce63573cd1..d05cf446fb4fd 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.conf; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** * Internal configuration data. */ +@ToString public class InternalConfigurationData { private String zookeeperServers; @@ -92,15 +93,4 @@ public int hashCode() { stateStorageServiceUrl); } - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("zookeeperServers", zookeeperServers) - .add("configurationStoreServers", configurationStoreServers) - .add("ledgersRootPath", ledgersRootPath) - .add("bookkeeperMetadataServiceUri", bookkeeperMetadataServiceUri) - .add("stateStorageServiceUrl", stateStorageServiceUrl) - .toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/package-info.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/conf/package-info.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/package-info.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerAssignment.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceOwnershipStatus.java From bcad94436fd5082339c5e1ba334e02ab0e509169 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 24 May 2021 10:08:19 +0800 Subject: [PATCH 04/51] BrokerStats.java --- .../java/org/apache/pulsar/common/stats/AllocatorStats.java | 0 .../pulsar/policies/data/loadbalancer/LoadManagerReport.java | 2 -- .../policies/data/loadbalancer/NamespaceBundleStats.java | 0 .../pulsar/policies/data/loadbalancer/ResourceUsage.java | 0 .../pulsar/policies/data/loadbalancer/ServiceLookupData.java | 0 .../pulsar/client/admin/internal/JacksonConfigurator.java | 5 +++++ 6 files changed, 5 insertions(+), 2 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java (93%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java (100%) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/AllocatorStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java index 740ce3a9a0d2c..f30e53374f747 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LoadManagerReport.java @@ -18,13 +18,11 @@ */ package org.apache.pulsar.policies.data.loadbalancer; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import java.util.Map; /** * This class represents the overall load of the broker - it includes overall SystemResourceUsage and Bundle-usage. */ -@JsonDeserialize(using = LoadReportDeserializer.class) public interface LoadManagerReport extends ServiceLookupData { ResourceUsage getCpu(); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ResourceUsage.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/ServiceLookupData.java diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index ad9a5e61cf4bd..f45abeadbf4a1 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -25,6 +25,8 @@ import javax.ws.rs.ext.Provider; import org.apache.pulsar.client.admin.OffloadProcessStatus; import org.apache.pulsar.common.util.ObjectMapperFactory; +import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; +import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; /** * Provides custom configuration for jackson. @@ -48,6 +50,9 @@ private void setInterfaceDefaultMapperModule() { SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(OffloadProcessStatus.class, OffloadProcessStatusImpl.class); + // we use addDeserializer to replace @JsonDeserialize annotation in some POJOs + module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); + module.setAbstractTypes(resolver); mapper.registerModule(module); } From 5ddd49f677801fea1b83393f4143f1b11c3ebffc Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 24 May 2021 16:27:48 +0800 Subject: [PATCH 05/51] fix PulsarAdminException --- pulsar-client-admin-api/pom.xml | 7 ++ .../client/admin/PulsarAdminException.java | 85 +++++-------------- .../common/policies/data/ErrorData.java | 0 .../client/admin/internal/BaseResource.java | 46 ++++++++-- 4 files changed, 66 insertions(+), 72 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java (100%) diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index ca8e068d1d910..3f4552cfc52e2 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -34,9 +34,16 @@ + + ${project.groupId} + pulsar-client-api + ${project.version} + + com.google.code.gson gson + provided diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java index a809d139cc183..d18de4495edcf 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java @@ -18,12 +18,7 @@ */ package org.apache.pulsar.client.admin; -import javax.ws.rs.ClientErrorException; -import javax.ws.rs.ServerErrorException; -import javax.ws.rs.WebApplicationException; import lombok.extern.slf4j.Slf4j; -import org.apache.pulsar.common.policies.data.ErrorData; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Pulsar admin exceptions. @@ -36,46 +31,16 @@ public class PulsarAdminException extends Exception { private final String httpError; private final int statusCode; - private static String getReasonFromServer(WebApplicationException e) { - try { - return e.getResponse().readEntity(ErrorData.class).reason.toString(); - } catch (Exception ex) { - try { - return ObjectMapperFactory.getThreadLocal().readValue( - e.getResponse().getEntity().toString(), ErrorData.class).reason; - } catch (Exception ex1) { - try { - return ObjectMapperFactory.getThreadLocal().readValue(e.getMessage(), ErrorData.class).reason; - } catch (Exception ex2) { - // could not parse output to ErrorData class - return e.getMessage(); - } - } - } - } - - public PulsarAdminException(ClientErrorException e) { - super(getReasonFromServer(e), e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); - } - - public PulsarAdminException(ClientErrorException e, String message) { - super(message, e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); - } - - public PulsarAdminException(ServerErrorException e) { - super(getReasonFromServer(e), e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); + public PulsarAdminException(Throwable t, String httpError, int statusCode) { + super(t); + this.httpError = httpError; + this.statusCode = statusCode; } - public PulsarAdminException(ServerErrorException e, String message) { - super(message, e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); + public PulsarAdminException(String message, Throwable t, String httpError, int statusCode) { + super(message, t); + this.httpError = httpError; + this.statusCode = statusCode; } public PulsarAdminException(Throwable t) { @@ -84,12 +49,6 @@ public PulsarAdminException(Throwable t) { statusCode = DEFAULT_STATUS_CODE; } - public PulsarAdminException(WebApplicationException e) { - super(getReasonFromServer(e), e); - this.httpError = getReasonFromServer(e); - this.statusCode = e.getResponse().getStatus(); - } - public PulsarAdminException(String message, Throwable t) { super(message, t); httpError = null; @@ -114,8 +73,8 @@ public int getStatusCode() { * Not Authorized Exception. */ public static class NotAuthorizedException extends PulsarAdminException { - public NotAuthorizedException(ClientErrorException e) { - super(e); + public NotAuthorizedException(Throwable t, String httpError, int statusCode) { + super(t, httpError, statusCode); } } @@ -123,8 +82,8 @@ public NotAuthorizedException(ClientErrorException e) { * Not Found Exception. */ public static class NotFoundException extends PulsarAdminException { - public NotFoundException(ClientErrorException e) { - super(e); + public NotFoundException(Throwable t, String httpError, int statusCode) { + super(t, httpError, statusCode); } } @@ -132,8 +91,8 @@ public NotFoundException(ClientErrorException e) { * Not Allowed Exception. */ public static class NotAllowedException extends PulsarAdminException { - public NotAllowedException(ClientErrorException e) { - super(e); + public NotAllowedException(Throwable t, String httpError, int statusCode) { + super(t, httpError, statusCode); } } @@ -141,8 +100,8 @@ public NotAllowedException(ClientErrorException e) { * Conflict Exception. */ public static class ConflictException extends PulsarAdminException { - public ConflictException(ClientErrorException e) { - super(e); + public ConflictException(Throwable t, String httpError, int statusCode) { + super(t, httpError, statusCode); } } @@ -150,8 +109,8 @@ public ConflictException(ClientErrorException e) { * Precondition Failed Exception. */ public static class PreconditionFailedException extends PulsarAdminException { - public PreconditionFailedException(ClientErrorException e) { - super(e); + public PreconditionFailedException(Throwable t, String httpError, int statusCode) { + super(t, httpError, statusCode);; } } @@ -168,12 +127,12 @@ public TimeoutException(Throwable t) { * Server Side Error Exception. */ public static class ServerSideErrorException extends PulsarAdminException { - public ServerSideErrorException(ServerErrorException e, String msg) { - super(e, msg); + public ServerSideErrorException(Throwable t, String message, String httpError, int statusCode) { + super(message, t, httpError, statusCode); } - public ServerSideErrorException(ServerErrorException e) { - super(e, "Some error occourred on the server"); + public ServerSideErrorException(Throwable t) { + super("Some error occourred on the server", t); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ErrorData.java diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java index 3895219283cd9..8316f367b9437 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java @@ -45,6 +45,7 @@ import org.apache.pulsar.client.api.AuthenticationDataProvider; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.policies.data.ErrorData; +import org.apache.pulsar.common.util.ObjectMapperFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -204,34 +205,43 @@ public PulsarAdminException getApiException(Throwable e) { if (e.getCause() instanceof java.net.ConnectException) { return new ConnectException(e.getCause()); } else { - return new PulsarAdminException((ServerErrorException) e); + ServerErrorException see = (ServerErrorException) e; + int statusCode = see.getResponse().getStatus(); + String httpError = getReasonFromServer(see); + return new PulsarAdminException(e, httpError, statusCode); } } else if (e instanceof WebApplicationException) { // Handle 5xx exceptions if (e instanceof ServerErrorException) { ServerErrorException see = (ServerErrorException) e; - return new ServerSideErrorException(see, e.getMessage()); + int statusCode = see.getResponse().getStatus(); + String httpError = getReasonFromServer(see); + return new ServerSideErrorException(see, e.getMessage(), httpError, statusCode); } else if (e instanceof ClientErrorException) { // Handle 4xx exceptions ClientErrorException cee = (ClientErrorException) e; int statusCode = cee.getResponse().getStatus(); + String httpError = getReasonFromServer(cee); switch (statusCode) { case 401: case 403: - return new NotAuthorizedException(cee); + return new NotAuthorizedException(cee, httpError, statusCode); case 404: - return new NotFoundException(cee); + return new NotFoundException(cee, httpError, statusCode); case 405: - return new NotAllowedException(cee); + return new NotAllowedException(cee, httpError, statusCode); case 409: - return new ConflictException(cee); + return new ConflictException(cee, httpError, statusCode); case 412: - return new PreconditionFailedException(cee); + return new PreconditionFailedException(cee, httpError, statusCode); default: - return new PulsarAdminException(cee); + return new PulsarAdminException(cee, httpError, statusCode); } } else { - return new PulsarAdminException((WebApplicationException) e); + WebApplicationException wae = (WebApplicationException) e; + int statusCode = wae.getResponse().getStatus(); + String httpError = getReasonFromServer(wae); + return new PulsarAdminException(wae, httpError, statusCode); } } else { return new PulsarAdminException(e); @@ -254,4 +264,22 @@ public PulsarAdminException getApiException(Response response) { return getApiException(e); } } + + private static String getReasonFromServer(WebApplicationException e) { + try { + return e.getResponse().readEntity(ErrorData.class).reason.toString(); + } catch (Exception ex) { + try { + return ObjectMapperFactory.getThreadLocal().readValue( + e.getResponse().getEntity().toString(), ErrorData.class).reason; + } catch (Exception ex1) { + try { + return ObjectMapperFactory.getThreadLocal().readValue(e.getMessage(), ErrorData.class).reason; + } catch (Exception ex2) { + // could not parse output to ErrorData class + return e.getMessage(); + } + } + } + } } From 203da3bea04f0a56e171a1231ea160a8c6378bd3 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 24 May 2021 16:51:09 +0800 Subject: [PATCH 06/51] Clusters.java --- pulsar-client-admin-api/pom.xml | 12 +++++++++++ .../admin/utils/DefaultImplementation.java | 11 ++++++++++ .../common/policies/AutoFailoverPolicy.java | 0 .../policies/data/AutoFailoverPolicyData.java | 15 +++++++------- .../policies/data/AutoFailoverPolicyType.java | 0 .../data/BrokerNamespaceIsolationData.java | 6 +++--- .../common/policies/data/ClusterData.java | 20 +++++-------------- .../common/policies/data/FailureDomain.java | 13 +++++------- .../policies/data/NamespaceIsolationData.java | 18 +++++++++-------- 9 files changed, 54 insertions(+), 41 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java (83%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java (90%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java (91%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java (87%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java (85%) diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index 3f4552cfc52e2..b7d36ce56aeed 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -46,6 +46,18 @@ provided + + io.swagger + swagger-annotations + provided + + + + org.apache.commons + commons-lang3 + provided + + diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java index 149257f737c00..816057ce6fd6c 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java @@ -19,11 +19,14 @@ package org.apache.pulsar.client.admin.utils; import java.lang.reflect.Constructor; +import java.lang.reflect.Method; import lombok.experimental.UtilityClass; import org.apache.pulsar.client.admin.LongRunningProcessStatus; import org.apache.pulsar.client.admin.OffloadProcessStatus; import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.client.api.MessageId; +import org.apache.pulsar.common.policies.AutoFailoverPolicy; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; /** * Helper class for class instantiations and it also contains methods to work with schemas. @@ -39,6 +42,10 @@ public class DefaultImplementation { "org.apache.pulsar.client.admin.internal.OffloadProcessStatusImpl", LongRunningProcessStatus.Status.class, String.class, MessageId.class); + private static final Method AUTO_FAILOVER_POLICY_FACTORY_create = ReflectionUtils.getStaticMethod( + "org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory", + "create", AutoFailoverPolicyData.class); + public static PulsarAdminBuilder newAdminClientBuilder() { return ReflectionUtils.catchExceptions(() -> ADMIN_CLIENT_BUILDER_IMPL.newInstance()); } @@ -48,4 +55,8 @@ public static OffloadProcessStatus newOffloadProcessStatus(LongRunningProcessSta return ReflectionUtils.catchExceptions(() -> OFFLOAD_PROCESS_STATUS_IMPL_status_string_messageid.newInstance( status, lastError, messageId)); } + + public static AutoFailoverPolicy newAutoFailoverPolicyFromAutoFailoverPolicyFactory(AutoFailoverPolicyData policyData) { + return ReflectionUtils.catchExceptions(() -> (AutoFailoverPolicy) AUTO_FAILOVER_POLICY_FACTORY_create.invoke(policyData)); + } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/AutoFailoverPolicy.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java similarity index 83% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java index 969b621c7e80e..aef729d8febab 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java @@ -18,12 +18,11 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkArgument; -import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Map; -import org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory; +import java.util.Objects; +import static org.apache.pulsar.client.admin.utils.DefaultImplementation.newAutoFailoverPolicyFromAutoFailoverPolicyFactory; /** * The auto failover policy configuration data. @@ -59,22 +58,24 @@ public class AutoFailoverPolicyData { @Override public int hashCode() { - return Objects.hashCode(policy_type, parameters); + return Objects.hash(policy_type, parameters); } @Override public boolean equals(Object obj) { if (obj instanceof AutoFailoverPolicyData) { AutoFailoverPolicyData other = (AutoFailoverPolicyData) obj; - return Objects.equal(policy_type, other.policy_type) && Objects.equal(parameters, other.parameters); + return Objects.equals(policy_type, other.policy_type) && Objects.equals(parameters, other.parameters); } return false; } public void validate() { - checkArgument(policy_type != null && parameters != null); - AutoFailoverPolicyFactory.create(this); + if (!(policy_type != null && parameters != null)){ + throw new IllegalArgumentException(); + } + newAutoFailoverPolicyFromAutoFailoverPolicyFactory(this); } @Override diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java index 8adc23afbd662..c3d3300b2d479 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java @@ -18,10 +18,10 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.List; +import java.util.Objects; /** * The namespace isolation data for a given broker. @@ -58,14 +58,14 @@ public class BrokerNamespaceIsolationData { @Override public int hashCode() { - return Objects.hashCode(brokerName, namespaceRegex); + return Objects.hash(brokerName, namespaceRegex); } @Override public boolean equals(Object obj) { if (obj instanceof BrokerNamespaceIsolationData) { BrokerNamespaceIsolationData other = (BrokerNamespaceIsolationData) obj; - return Objects.equal(brokerName, other.brokerName) && Objects.equal(namespaceRegex, other.namespaceRegex); + return Objects.equals(brokerName, other.brokerName) && Objects.equals(namespaceRegex, other.namespaceRegex); } return false; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java index 83d3610a8fd8f..50acfe9cb5eff 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java @@ -18,12 +18,11 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.base.MoreObjects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.LinkedHashSet; import java.util.Objects; +import lombok.ToString; import org.apache.pulsar.client.api.ProxyProtocol; /** @@ -33,6 +32,7 @@ value = "ClusterData", description = "The configuration data for a cluster" ) +@ToString public class ClusterData { @ApiModelProperty( name = "serviceUrl", @@ -110,7 +110,9 @@ public ClusterData(String serviceUrl, String serviceUrlTls, String brokerService } public void update(ClusterData other) { - checkNotNull(other); + if (other == null) { + throw new NullPointerException(); + } this.serviceUrl = other.serviceUrl; this.serviceUrlTls = other.serviceUrlTls; this.brokerServiceUrl = other.brokerServiceUrl; @@ -194,16 +196,4 @@ public int hashCode() { return Objects.hash(this.toString()); } - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("serviceUrl", serviceUrl) - .add("serviceUrlTls", serviceUrlTls) - .add("brokerServiceUrl", brokerServiceUrl) - .add("brokerServiceUrlTls", brokerServiceUrlTls) - .add("proxyServiceUrl", proxyServiceUrl) - .add("proxyProtocol", proxyProtocol) - .add("peerClusterNames", peerClusterNames).toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java similarity index 87% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java index dbe77d8590d2c..3af056e773144 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java @@ -18,11 +18,12 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.ToString; + import java.util.HashSet; +import java.util.Objects; import java.util.Set; /** @@ -32,6 +33,7 @@ value = "FailureDomain", description = "The data of a failure domain configuration in a cluster" ) +@ToString public class FailureDomain { @ApiModelProperty( @@ -58,14 +60,9 @@ public int hashCode() { public boolean equals(Object obj) { if (obj instanceof FailureDomain) { FailureDomain other = (FailureDomain) obj; - return Objects.equal(brokers, other.brokers); + return Objects.equals(brokers, other.brokers); } return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("brokers", brokers).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java similarity index 85% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java index 2388dafbeb2c0..e2106d2ece504 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java @@ -18,12 +18,11 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkArgument; -import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -69,7 +68,7 @@ public class NamespaceIsolationData { @Override public int hashCode() { - return Objects.hashCode(namespaces, primary, secondary, + return Objects.hash(namespaces, primary, secondary, auto_failover_policy); } @@ -77,17 +76,20 @@ public int hashCode() { public boolean equals(Object obj) { if (obj instanceof NamespaceIsolationData) { NamespaceIsolationData other = (NamespaceIsolationData) obj; - return Objects.equal(namespaces, other.namespaces) && Objects.equal(primary, other.primary) - && Objects.equal(secondary, other.secondary) - && Objects.equal(auto_failover_policy, other.auto_failover_policy); + return Objects.equals(namespaces, other.namespaces) && Objects.equals(primary, other.primary) + && Objects.equals(secondary, other.secondary) + && Objects.equals(auto_failover_policy, other.auto_failover_policy); } return false; } public void validate() { - checkArgument(namespaces != null && !namespaces.isEmpty() && primary != null && !primary.isEmpty() - && validateRegex(primary) && secondary != null && validateRegex(secondary) && auto_failover_policy != null); + if(!(namespaces != null && !namespaces.isEmpty() && primary != null && !primary.isEmpty() + && validateRegex(primary) && secondary != null && validateRegex(secondary) + && auto_failover_policy != null)) { + throw new IllegalArgumentException(); + } auto_failover_policy.validate(); } From bd48052d730ebaa148793f65bd167cae1fbf6d80 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 24 May 2021 16:55:05 +0800 Subject: [PATCH 07/51] Tenants.java --- .../org/apache/pulsar/common/policies/data/TenantInfo.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java (94%) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java similarity index 94% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java index 732394ec7439e..2953f095a68f4 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java @@ -18,9 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.Sets; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.util.HashSet; import java.util.Set; import lombok.Data; @@ -49,8 +49,8 @@ public class TenantInfo { private Set allowedClusters; public TenantInfo() { - adminRoles = Sets.newHashSet(); - allowedClusters = Sets.newHashSet(); + adminRoles = new HashSet<>(); + allowedClusters = new HashSet<>(); } public TenantInfo(Set adminRoles, Set allowedClusters) { From db043ac84b73c0948be3a6cb317a11780f5ce0a1 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 24 May 2021 16:56:04 +0800 Subject: [PATCH 08/51] minor fix on ResourceGroups --- .../org/apache/pulsar/common/policies/data/ResourceGroup.java | 3 --- 1 file changed, 3 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java (93%) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java index 046c2d2bd136e..123148f891cd9 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceGroup.java @@ -18,11 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; import lombok.Data; -import java.util.Objects; - @Data public class ResourceGroup { private int publishRateInMsgs = -1; private long publishRateInBytes = -1; From 134e184d4c149d60dcbc77f67b185dab841d36a6 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 14:11:40 +0800 Subject: [PATCH 09/51] Namespaces.java & OffloadPolicies --- .../mledger/impl/OffloadPrefixReadTest.java | 3 +- .../mledger/impl/OffloadPrefixTest.java | 3 +- .../pulsar/PulsarClusterMetadataSetup.java | 2 +- .../apache/pulsar/broker/PulsarService.java | 3 +- .../broker/admin/impl/NamespacesBase.java | 10 +- .../admin/impl/PersistentTopicsBase.java | 3 +- .../pulsar/broker/service/BrokerService.java | 5 +- .../service/persistent/PersistentTopic.java | 2 +- .../broker/admin/AdminApiOffloadTest.java | 5 +- .../pulsar/broker/admin/AdminApiTest.java | 5 +- .../pulsar/broker/admin/NamespacesTest.java | 9 +- .../broker/admin/v1/V1_AdminApiTest.java | 5 +- .../common/policies/data/AuthAction.java | 0 .../common/policies/data/AuthPolicies.java | 8 +- .../AutoSubscriptionCreationOverride.java | 9 +- .../data/AutoTopicCreationOverride.java | 9 +- .../common/policies/data/BacklogQuota.java | 11 +- .../data/BookieAffinityGroupData.java | 8 +- .../common/policies/data/BundlesData.java | 8 +- .../data/DelayedDeliveryPolicies.java | 0 .../common/policies/data/DispatchRate.java | 12 +- .../data/InactiveTopicDeleteMode.java | 0 .../policies/data/InactiveTopicPolicies.java | 0 .../common/policies/data/OffloadPolicies.java | 206 +----------------- .../policies/data/PersistencePolicies.java | 9 +- .../pulsar/common/policies/data/Policies.java | 116 ++-------- .../common/policies/data/PublishRate.java | 9 +- .../policies/data/RetentionPolicies.java | 0 ...SchemaAutoUpdateCompatibilityStrategy.java | 0 .../data/SchemaCompatibilityStrategy.java | 0 .../common/policies/data/SubscribeRate.java | 9 +- .../policies/data/SubscriptionAuthMode.java | 0 .../common/policies/data/TopicType.java | 0 .../admin/internal/JacksonConfigurator.java | 5 +- .../pulsar/admin/cli/PulsarAdminToolTest.java | 5 +- .../pulsar/admin/cli/CmdNamespaces.java | 5 +- .../apache/pulsar/admin/cli/CmdTopics.java | 3 +- .../data/BacklogQuotaDeserializer.java | 46 ++++ .../common/policies/data/LocalPolicies.java | 2 +- .../policies/data/OffloadPoliciesUtil.java | 196 +++++++++++++++++ .../common/policies/data/PoliciesUtil.java | 71 ++++++ .../policies/data/LocalPolicesTest.java | 2 +- .../policies/data/OffloadPoliciesTest.java | 20 +- .../sql/presto/PulsarConnectorConfig.java | 3 +- .../sql/presto/TestPulsarSplitManager.java | 3 +- .../offload/filesystem/FileStoreTestBase.java | 3 +- .../impl/BlobStoreManagedLedgerOffloader.java | 3 +- 47 files changed, 424 insertions(+), 412 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java (91%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java (85%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java (90%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java (91%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java (84%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java (90%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java (87%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java (65%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java (89%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/Policies.java (64%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java (86%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java (85%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java (100%) create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PoliciesUtil.java diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java index f3c1583071cb1..57d7abd1e9994 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java @@ -58,6 +58,7 @@ import org.apache.bookkeeper.test.MockedBookKeeperTestCase; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.testng.Assert; import org.testng.annotations.Test; @@ -196,7 +197,7 @@ static class MockLedgerOffloader implements LedgerOffloader { ConcurrentHashMap offloads = new ConcurrentHashMap(); - OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java index d61da5ff27bfb..7795980f002ce 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java @@ -49,6 +49,7 @@ import org.apache.bookkeeper.test.MockedBookKeeperTestCase; import org.apache.commons.lang3.tuple.Pair; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.zookeeper.MockZooKeeper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -992,7 +993,7 @@ Set deletedOffloads() { return deletes.keySet(); } - OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java index d5d3214a0f399..da3e01cadc5ff 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java @@ -19,7 +19,7 @@ package org.apache.pulsar; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES_ROOT; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; import java.io.IOException; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java index 6ed22f5304416..9fe6c704dd761 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java @@ -122,6 +122,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.protocol.schema.SchemaStorage; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.compaction.Compactor; @@ -632,7 +633,7 @@ config, getZkClient(), bkClientFactory schemaStorage, config.getSchemaRegistryCompatibilityCheckers()); this.defaultOffloader = createManagedLedgerOffloader( - OffloadPolicies.create(this.getConfiguration().getProperties())); + OffloadPoliciesUtil.create(this.getConfiguration().getProperties())); this.brokerInterceptor = BrokerInterceptors.load(config); brokerService.setInterceptor(getBrokerInterceptor()); this.brokerInterceptor.initialize(this); 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 e7ef32e712ecc..fa3007401e4da 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 @@ -23,8 +23,8 @@ import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.RESOURCEGROUPS; import static org.apache.pulsar.broker.cache.LocalZooKeeperCacheService.LOCAL_POLICIES_ROOT; -import static org.apache.pulsar.common.policies.data.Policies.defaultBundle; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.defaultBundle; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; @@ -2398,7 +2398,7 @@ protected Set internalGetSubscriptionTypesEnabled() { PolicyOperation.READ); Set subscriptionTypes = new HashSet<>(); getNamespacePolicies(namespaceName).subscription_types_enabled.forEach(subType -> - subscriptionTypes.add(SubscriptionType.valueOf(subType.name()))); + subscriptionTypes.add(SubscriptionType.valueOf(subType))); return subscriptionTypes; } @@ -2406,8 +2406,8 @@ protected void internalSetSubscriptionTypesEnabled(Set subscri validateNamespacePolicyOperation(namespaceName, PolicyName.SUBSCRIPTION_AUTH_MODE, PolicyOperation.WRITE); validatePoliciesReadOnlyAccess(); - Set subTypes = new HashSet<>(); - subscriptionTypesEnabled.forEach(subscriptionType -> subTypes.add(SubType.valueOf(subscriptionType.name()))); + Set subTypes = new HashSet<>(); + subscriptionTypesEnabled.forEach(subscriptionType -> subTypes.add(subscriptionType.name())); mutatePolicy((policies) -> { policies.subscription_types_enabled = subTypes; return policies; 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 9be6f1fc94d0d..51f64b00c0819 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 @@ -108,6 +108,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -758,7 +759,7 @@ protected CompletableFuture internalGetOffloadPolicies(boolean getTopicPolicies(topicName).map(TopicPolicies::getOffloadPolicies).orElse(null); if (applied) { OffloadPolicies namespacePolicy = getNamespacePolicies(namespaceName).offload_policies; - offloadPolicies = OffloadPolicies.mergeConfiguration(offloadPolicies + offloadPolicies = OffloadPoliciesUtil.mergeConfiguration(offloadPolicies , namespacePolicy, pulsar().getConfiguration().getProperties()); } return CompletableFuture.completedFuture(offloadPolicies); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java index 8802210fff545..da8c637765b9a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java @@ -145,6 +145,7 @@ import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentOfflineTopicStats; import org.apache.pulsar.common.policies.data.Policies; @@ -1364,9 +1365,9 @@ public CompletableFuture getManagedLedgerConfig(TopicName t managedLedgerConfig.setLazyCursorRecovery(serviceConfig.isLazyCursorRecovery()); OffloadPolicies nsLevelOffloadPolicies = policies.map(p -> p.offload_policies).orElse(null); - OffloadPolicies offloadPolicies = OffloadPolicies.mergeConfiguration( + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.mergeConfiguration( topicLevelOffloadPolicies, - OffloadPolicies.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), + OffloadPoliciesUtil.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), getPulsar().getConfig().getProperties()); if (topicLevelOffloadPolicies != null) { try { 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 ee5d0d9fd31d3..d81462570859c 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 @@ -3032,7 +3032,7 @@ private boolean checkNsAndBrokerSubscriptionTypesEnable(TopicName topicName, Sub return getBrokerService().getPulsar().getConfiguration() .getSubscriptionTypesEnabled().contains(subType.name()); } else { - return policies.get().subscription_types_enabled.contains(subType); + return policies.get().subscription_types_enabled.contains(subType.name()); } } else { return getBrokerService().getPulsar().getConfiguration() diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java index c59685af23a4f..a9a36f45ff819 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java @@ -48,6 +48,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.Assert; @@ -172,7 +173,7 @@ public void testOffloadPolicies() throws Exception { long offloadDeletionLagInMillis = 100L; OffloadPolicies.OffloadedReadPriority priority = OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offload1 = OffloadPolicies.create( + OffloadPolicies offload1 = OffloadPoliciesUtil.create( driver, region, bucket, endpoint, null, null, null, null, 100, 100, offloadThresholdInBytes, offloadDeletionLagInMillis, priority); admin.namespaces().setOffloadPolicies(namespaceName, offload1); @@ -215,7 +216,7 @@ public void testOffloadPoliciesAppliedApi() throws Exception { Awaitility.await() .until(() -> pulsar.getTopicPoliciesService().cacheIsInitialized(TopicName.get(topicName))); OffloadPolicies offloadPolicies = admin.topics().getOffloadPolicies(topicName, true); - OffloadPolicies brokerPolicies = OffloadPolicies + OffloadPolicies brokerPolicies = OffloadPoliciesUtil .mergeConfiguration(null,null, pulsar.getConfiguration().getProperties()); assertEquals(offloadPolicies, brokerPolicies); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 4027c7fdd680c..05177814510cf 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -121,6 +121,7 @@ import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.Policies; +import org.apache.pulsar.common.policies.data.PoliciesUtil; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -677,7 +678,7 @@ public void namespaces() throws Exception { Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); - assertEquals(admin.namespaces().getPolicies("prop-xyz/ns1").bundles, Policies.defaultBundle()); + assertEquals(admin.namespaces().getPolicies("prop-xyz/ns1").bundles, PoliciesUtil.defaultBundle()); admin.namespaces().createNamespace("prop-xyz/ns2", Sets.newHashSet("test")); @@ -712,7 +713,7 @@ public void namespaces() throws Exception { Policies policies = new Policies(); policies.replication_clusters = Sets.newHashSet("test"); - policies.bundles = Policies.defaultBundle(); + policies.bundles = PoliciesUtil.defaultBundle(); policies.auth_policies.namespace_auth.put("spiffe://developer/passport-role", EnumSet.allOf(AuthAction.class)); policies.auth_policies.namespace_auth.put("my-role", EnumSet.allOf(AuthAction.class)); 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 a4e2ff8f13bd3..7cc39efcdecc4 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 @@ -85,6 +85,7 @@ import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -1335,7 +1336,7 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); // the ledger config should have the expected value ManagedLedgerConfig ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, @@ -1352,7 +1353,7 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(100, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); admin.namespaces().getOffloadPolicies(namespace); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, @@ -1368,7 +1369,7 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -2); assertEquals(-2, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, @@ -1384,7 +1385,7 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -1); assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index c3a263909c37f..b91d5233b7e76 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -95,6 +95,7 @@ import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; +import org.apache.pulsar.common.policies.data.PoliciesUtil; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -607,7 +608,7 @@ public void namespaces() throws Exception { Sets.newHashSet("use", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); - assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1").bundles, Policies.defaultBundle()); + assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1").bundles, PoliciesUtil.defaultBundle()); admin.namespaces().createNamespace("prop-xyz/use/ns2"); @@ -641,7 +642,7 @@ public void namespaces() throws Exception { admin.namespaces().grantPermissionOnNamespace("prop-xyz/use/ns1", "my-role", EnumSet.allOf(AuthAction.class)); Policies policies = new Policies(); - policies.bundles = Policies.defaultBundle(); + policies.bundles = PoliciesUtil.defaultBundle(); policies.auth_policies.namespace_auth.put("my-role", EnumSet.allOf(AuthAction.class)); assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1"), policies); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthAction.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java index 880409666bf64..de882d160dcd6 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AuthPolicies.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -35,9 +35,9 @@ public class AuthPolicies { public final Map> subscription_auth_roles; public AuthPolicies() { - namespace_auth = Maps.newHashMap(); - destination_auth = Maps.newHashMap(); - subscription_auth_roles = Maps.newHashMap(); + namespace_auth = new HashMap<>(); + destination_auth = new HashMap<>(); + subscription_auth_roles = new HashMap<>(); } @Override diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java similarity index 85% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java index 221b22f0e5d0e..d36abef5db51b 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** * Override of autoSubscriptionCreation settings on a namespace level. */ +@ToString public class AutoSubscriptionCreationOverride { public boolean allowAutoSubscriptionCreation; @@ -47,10 +48,4 @@ public boolean equals(Object obj) { } return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("allowAutoSubscriptionCreation", allowAutoSubscriptionCreation).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java index 552b470923539..d7ff7af459a9e 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** * Override of autoTopicCreation settings on a namespace level. */ +@ToString public class AutoTopicCreationOverride { public boolean allowAutoTopicCreation; public String topicType; @@ -55,12 +56,6 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("allowAutoTopicCreation", allowAutoTopicCreation) - .add("topicType", topicType).add("defaultNumPartitions", defaultNumPartitions).toString(); - } - public static boolean isValidOverride(AutoTopicCreationOverride override) { if (override == null) { return false; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java index 5fd09072b6691..ff9a190f3663b 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java @@ -18,8 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.fasterxml.jackson.annotation.JsonAlias; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** @@ -28,8 +27,8 @@ *

A scoped resource is identified by a {@link BacklogQuotaType} enumeration type which is containing two attributes: * limit representing a quota limit in bytes and policy for backlog retention policy. */ +@ToString public class BacklogQuota { - @JsonAlias("limit") private long limitSize; // backlog quota by time in second private int limitTime; @@ -89,12 +88,6 @@ public int hashCode() { return Objects.hash(Long.valueOf(limitSize), Long.valueOf(limitTime), policy); } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("limitSize", limitSize).add("limitTime", limitTime) - .add("policy", policy).toString(); - } - @Override public boolean equals(Object obj) { if (obj instanceof BacklogQuota) { diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java similarity index 84% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java index 15f83343193c3..1acc2bc8899f1 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookieAffinityGroupData.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.Objects; +import java.util.Objects; /** * Description of a BookKeeper's affinity group. @@ -38,15 +38,15 @@ public BookieAffinityGroupData(String bookkeeperAffinityGroupPrimary, String boo @Override public int hashCode() { - return Objects.hashCode(bookkeeperAffinityGroupPrimary, bookkeeperAffinityGroupSecondary); + return Objects.hash(bookkeeperAffinityGroupPrimary, bookkeeperAffinityGroupSecondary); } @Override public boolean equals(Object obj) { if (obj instanceof BookieAffinityGroupData) { BookieAffinityGroupData other = (BookieAffinityGroupData) obj; - return Objects.equal(bookkeeperAffinityGroupPrimary, other.bookkeeperAffinityGroupPrimary) - && Objects.equal(bookkeeperAffinityGroupSecondary, other.bookkeeperAffinityGroupSecondary); + return Objects.equals(bookkeeperAffinityGroupPrimary, other.bookkeeperAffinityGroupPrimary) + && Objects.equals(bookkeeperAffinityGroupSecondary, other.bookkeeperAffinityGroupSecondary); } return false; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java index 4bc95cba09515..9548a0e135f5e 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java @@ -18,13 +18,14 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.List; import java.util.Objects; /** * Holder for bundles. */ +@ToString public class BundlesData { public List boundaries; public int numBundles; @@ -75,9 +76,4 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("numBundles", numBundles).add("boundaries", boundaries).toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DelayedDeliveryPolicies.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java similarity index 87% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java index 002cdac09f338..877cc6745e0f6 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** * Dispatch rate. */ +@ToString public class DispatchRate { public int dispatchThrottlingRateInMsg = -1; @@ -68,13 +69,4 @@ public boolean equals(Object obj) { } return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("dispatchThrottlingRateInMsg", dispatchThrottlingRateInMsg) - .add("dispatchThrottlingRateInByte", dispatchThrottlingRateInByte) - .add("ratePeriodInSecond", ratePeriodInSecond).toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicDeleteMode.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/InactiveTopicPolicies.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java similarity index 65% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java index 12172f1c593a6..0969bdf5cca78 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -21,8 +21,6 @@ import static org.apache.pulsar.common.util.FieldParser.value; import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; import java.io.Serializable; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -31,11 +29,13 @@ import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Properties; import java.util.stream.Collectors; import lombok.Data; +import lombok.ToString; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.common.classification.InterfaceAudience; @@ -46,6 +46,7 @@ */ @Slf4j @Data +@ToString public class OffloadPolicies implements Serializable { @InterfaceAudience.Public @@ -98,7 +99,7 @@ public String getValue() { private final static long serialVersionUID = 0L; - private final static List CONFIGURATION_FIELDS; + final static List CONFIGURATION_FIELDS; static { CONFIGURATION_FIELDS = new ArrayList<>(); @@ -115,8 +116,9 @@ public String getValue() { public final static int DEFAULT_READ_BUFFER_SIZE_IN_BYTES = 1024 * 1024; // 1MB public final static int DEFAULT_OFFLOAD_MAX_THREADS = 2; public final static int DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS = 1; - public final static ImmutableList DRIVER_NAMES = ImmutableList - .of("S3", "aws-s3", "google-cloud-storage", "filesystem", "azureblob", "aliyun-oss"); + public final static List DRIVER_NAMES = Collections.unmodifiableList( + Arrays.asList("S3", "aws-s3", "google-cloud-storage", "filesystem", "azureblob", "aliyun-oss") + ); public final static String DEFAULT_OFFLOADER_DIRECTORY = "./offloaders"; public final static Long DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES = null; public final static Long DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS = null; @@ -223,71 +225,7 @@ public String getValue() { @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer managedLedgerOffloadReadBufferSizeInBytes; - public static OffloadPolicies create(String driver, String region, String bucket, String endpoint, - String role, String roleSessionName, - String credentialId, String credentialSecret, - Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, - Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, - OffloadedReadPriority readPriority) { - OffloadPolicies offloadPolicies = new OffloadPolicies(); - offloadPolicies.setManagedLedgerOffloadDriver(driver); - offloadPolicies.setManagedLedgerOffloadThresholdInBytes(offloadThresholdInBytes); - offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(offloadDeletionLagInMillis); - - offloadPolicies.setManagedLedgerOffloadBucket(bucket); - offloadPolicies.setManagedLedgerOffloadRegion(region); - offloadPolicies.setManagedLedgerOffloadServiceEndpoint(endpoint); - offloadPolicies.setManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); - offloadPolicies.setManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); - offloadPolicies.setManagedLedgerOffloadedReadPriority(readPriority); - - if (driver.equalsIgnoreCase(DRIVER_NAMES.get(0)) || driver.equalsIgnoreCase(DRIVER_NAMES.get(1))) { - if (role != null) { - offloadPolicies.setS3ManagedLedgerOffloadRole(role); - } - if (roleSessionName != null) { - offloadPolicies.setS3ManagedLedgerOffloadRoleSessionName(roleSessionName); - } - if (credentialId != null) { - offloadPolicies.setS3ManagedLedgerOffloadCredentialId(credentialId); - } - if (credentialSecret != null) { - offloadPolicies.setS3ManagedLedgerOffloadCredentialSecret(credentialSecret); - } - offloadPolicies.setS3ManagedLedgerOffloadRegion(region); - offloadPolicies.setS3ManagedLedgerOffloadBucket(bucket); - offloadPolicies.setS3ManagedLedgerOffloadServiceEndpoint(endpoint); - offloadPolicies.setS3ManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); - offloadPolicies.setS3ManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); - } else if (driver.equalsIgnoreCase(DRIVER_NAMES.get(2))) { - offloadPolicies.setGcsManagedLedgerOffloadRegion(region); - offloadPolicies.setGcsManagedLedgerOffloadBucket(bucket); - offloadPolicies.setGcsManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); - offloadPolicies.setGcsManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); - } - return offloadPolicies; - } - - public static OffloadPolicies create(Properties properties) { - OffloadPolicies data = new OffloadPolicies(); - Field[] fields = OffloadPolicies.class.getDeclaredFields(); - Arrays.stream(fields).forEach(f -> { - if (properties.containsKey(f.getName())) { - try { - f.setAccessible(true); - f.set(data, value((String) properties.get(f.getName()), f)); - } catch (Exception e) { - throw new IllegalArgumentException( - String.format("failed to initialize %s field while setting value %s", - f.getName(), properties.get(f.getName())), e); - } - } - }); - data.compatibleWithBrokerConfigFile(properties); - return data; - } - - private void compatibleWithBrokerConfigFile(Properties properties) { + void compatibleWithBrokerConfigFile(Properties properties) { if (!properties.containsKey("managedLedgerOffloadThresholdInBytes") && properties.containsKey(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)) { setManagedLedgerOffloadThresholdInBytes( @@ -425,38 +363,6 @@ public boolean equals(Object obj) { other.getManagedLedgerOffloadReadBufferSizeInBytes()); } - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("managedLedgerOffloadedReadPriority", managedLedgerOffloadedReadPriority) - .add("managedLedgerOffloadDriver", managedLedgerOffloadDriver) - .add("managedLedgerOffloadMaxThreads", managedLedgerOffloadMaxThreads) - .add("managedLedgerOffloadPrefetchRounds", managedLedgerOffloadPrefetchRounds) - .add("managedLedgerOffloadAutoTriggerSizeThresholdBytes", - managedLedgerOffloadThresholdInBytes) - .add("managedLedgerOffloadDeletionLagInMillis", managedLedgerOffloadDeletionLagInMillis) - .add("s3ManagedLedgerOffloadRegion", s3ManagedLedgerOffloadRegion) - .add("s3ManagedLedgerOffloadBucket", s3ManagedLedgerOffloadBucket) - .add("s3ManagedLedgerOffloadServiceEndpoint", s3ManagedLedgerOffloadServiceEndpoint) - .add("s3ManagedLedgerOffloadMaxBlockSizeInBytes", s3ManagedLedgerOffloadMaxBlockSizeInBytes) - .add("s3ManagedLedgerOffloadReadBufferSizeInBytes", s3ManagedLedgerOffloadReadBufferSizeInBytes) - .add("s3ManagedLedgerOffloadRole", s3ManagedLedgerOffloadRole) - .add("s3ManagedLedgerOffloadRoleSessionName", s3ManagedLedgerOffloadRoleSessionName) - .add("gcsManagedLedgerOffloadRegion", gcsManagedLedgerOffloadRegion) - .add("gcsManagedLedgerOffloadBucket", gcsManagedLedgerOffloadBucket) - .add("gcsManagedLedgerOffloadMaxBlockSizeInBytes", gcsManagedLedgerOffloadMaxBlockSizeInBytes) - .add("gcsManagedLedgerOffloadReadBufferSizeInBytes", gcsManagedLedgerOffloadReadBufferSizeInBytes) - .add("gcsManagedLedgerOffloadServiceAccountKeyFile", gcsManagedLedgerOffloadServiceAccountKeyFile) - .add("fileSystemProfilePath", fileSystemProfilePath) - .add("fileSystemURI", fileSystemURI) - .add("managedLedgerOffloadBucket", managedLedgerOffloadBucket) - .add("managedLedgerOffloadRegion", managedLedgerOffloadRegion) - .add("managedLedgerOffloadServiceEndpoint", managedLedgerOffloadServiceEndpoint) - .add("managedLedgerOffloadMaxBlockSizeInBytes", managedLedgerOffloadMaxBlockSizeInBytes) - .add("managedLedgerOffloadReadBufferSizeInBytes", managedLedgerOffloadReadBufferSizeInBytes) - .toString(); - } - public Properties toProperties() { Properties properties = new Properties(); setProperty(properties, "managedLedgerOffloadedReadPriority", this.getManagedLedgerOffloadedReadPriority()); @@ -530,100 +436,4 @@ private static void setProperty(Properties properties, String key, Object value) } - /** - * This method is used to make a compatible with old policies. - * - *

The filed {@link Policies#offload_threshold} is primitive, so it can't be known whether it had been set. - * In the old logic, if the field value is -1, it could be thought that the field had not been set. - * - * @param nsLevelPolicies namespace level offload policies - * @param policies namespace policies - * @return offload policies - */ - public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolicies, Policies policies) { - if (policies == null || (policies.offload_threshold == -1 && policies.offload_deletion_lag_ms == null)) { - return nsLevelPolicies; - } - if (nsLevelPolicies == null) { - nsLevelPolicies = new OffloadPolicies(); - } - if (nsLevelPolicies.getManagedLedgerOffloadThresholdInBytes() == null - && policies.offload_threshold != -1) { - nsLevelPolicies.setManagedLedgerOffloadThresholdInBytes(policies.offload_threshold); - } - if (nsLevelPolicies.getManagedLedgerOffloadDeletionLagInMillis() == null - && policies.offload_deletion_lag_ms != null) { - nsLevelPolicies.setManagedLedgerOffloadDeletionLagInMillis(policies.offload_deletion_lag_ms); - } - return nsLevelPolicies; - } - - /** - * Merge different level offload policies. - * - *

policies level priority: topic > namespace > broker - * - * @param topicLevelPolicies topic level offload policies - * @param nsLevelPolicies namespace level offload policies - * @param brokerProperties broker level offload configuration - * @return offload policies - */ - public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolicies, - OffloadPolicies nsLevelPolicies, - Properties brokerProperties) { - try { - boolean allConfigValuesAreNull = true; - OffloadPolicies offloadPolicies = new OffloadPolicies(); - for (Field field : CONFIGURATION_FIELDS) { - Object object; - if (topicLevelPolicies != null && field.get(topicLevelPolicies) != null) { - object = field.get(topicLevelPolicies); - } else if (nsLevelPolicies != null && field.get(nsLevelPolicies) != null) { - object = field.get(nsLevelPolicies); - } else { - object = getCompatibleValue(brokerProperties, field); - } - if (object != null) { - field.set(offloadPolicies, object); - if (allConfigValuesAreNull) { - allConfigValuesAreNull = false; - } - } - } - if (allConfigValuesAreNull) { - return null; - } else { - return offloadPolicies; - } - } catch (Exception e) { - log.error("Failed to merge configuration.", e); - return null; - } - } - - /** - * Make configurations of the OffloadPolicies compatible with the config file. - * - *

The names of the fields {@link OffloadPolicies#managedLedgerOffloadDeletionLagInMillis} - * and {@link OffloadPolicies#managedLedgerOffloadThresholdInBytes} are not matched with - * config file (broker.conf or standalone.conf). - * - * @param properties broker configuration properties - * @param field filed - * @return field value - */ - private static Object getCompatibleValue(Properties properties, Field field) { - Object object; - if (field.getName().equals("managedLedgerOffloadThresholdInBytes")) { - object = properties.getProperty("managedLedgerOffloadThresholdInBytes", - properties.getProperty(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)); - } else if (field.getName().equals("managedLedgerOffloadDeletionLagInMillis")) { - object = properties.getProperty("managedLedgerOffloadDeletionLagInMillis", - properties.getProperty(DELETION_LAG_NAME_IN_CONF_FILE)); - } else { - object = properties.get(field.getName()); - } - return value((String) object, field); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java similarity index 89% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java index 466b3388ff23a..6433ff584e77a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** * Configuration of bookkeeper persistence policies. */ +@ToString public class PersistencePolicies { private int bookkeeperEnsemble; private int bookkeeperWriteQuorum; @@ -75,10 +76,4 @@ public boolean equals(Object obj) { return false; } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("e", bookkeeperEnsemble).add("w", bookkeeperWriteQuorum) - .add("a", bookkeeperAckQuorum).add("ml-md-rate", managedLedgerMaxMarkDeleteRate).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java similarity index 64% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java index 9c381eaee762b..db0d26df2b495 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java @@ -18,38 +18,32 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -import java.util.List; +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Objects; import java.util.Set; -import javax.ws.rs.core.Response.Status; - -import org.apache.pulsar.common.api.proto.CommandSubscribe.SubType; -import org.apache.pulsar.common.util.RestException; +import lombok.ToString; /** * Definition of Pulsar policies. */ +@ToString public class Policies { @SuppressWarnings("checkstyle:MemberName") public final AuthPolicies auth_policies = new AuthPolicies(); @SuppressWarnings("checkstyle:MemberName") - public Set replication_clusters = Sets.newHashSet(); + public Set replication_clusters = new HashSet<>(); public BundlesData bundles; @SuppressWarnings("checkstyle:MemberName") - public Map backlog_quota_map = Maps.newHashMap(); + public Map backlog_quota_map = new HashMap<>(); @Deprecated - public Map clusterDispatchRate = Maps.newHashMap(); - public Map topicDispatchRate = Maps.newHashMap(); - public Map subscriptionDispatchRate = Maps.newHashMap(); - public Map replicatorDispatchRate = Maps.newHashMap(); - public Map clusterSubscribeRate = Maps.newHashMap(); + public Map clusterDispatchRate = new HashMap<>(); + public Map topicDispatchRate = new HashMap<>(); + public Map subscriptionDispatchRate = new HashMap<>(); + public Map replicatorDispatchRate = new HashMap<>(); + public Map clusterSubscribeRate = new HashMap<>(); public PersistencePolicies persistence = null; // If set, it will override the broker settings for enabling deduplication @@ -58,10 +52,10 @@ public class Policies { public AutoTopicCreationOverride autoTopicCreationOverride = null; // If set, it will override the broker settings for allowing auto subscription creation public AutoSubscriptionCreationOverride autoSubscriptionCreationOverride = null; - public Map publishMaxMessageRate = Maps.newHashMap(); + public Map publishMaxMessageRate = new HashMap<>(); @SuppressWarnings("checkstyle:MemberName") - public Map latency_stats_sample_rate = Maps.newHashMap(); + public Map latency_stats_sample_rate = new HashMap<>(); @SuppressWarnings("checkstyle:MemberName") public Integer message_ttl_in_seconds = null; @SuppressWarnings("checkstyle:MemberName") @@ -122,9 +116,9 @@ public class Policies { public Integer deduplicationSnapshotIntervalSeconds = null; - public Set subscription_types_enabled = Sets.newHashSet(); + public Set subscription_types_enabled = new HashSet<>(); - public Map properties = Maps.newHashMap(); + public Map properties = new HashMap<>(); @SuppressWarnings("checkstype:MemberName") public String resource_group_name = null; @@ -201,85 +195,5 @@ public boolean equals(Object obj) { return false; } - public static BundlesData defaultBundle() { - BundlesData bundle = new BundlesData(1); - List boundaries = Lists.newArrayList(); - boundaries.add(FIRST_BOUNDARY); - boundaries.add(LAST_BOUNDARY); - bundle.setBoundaries(boundaries); - return bundle; - } - public static void setStorageQuota(Policies polices, BacklogQuota quota) { - if (polices == null) { - return; - } - polices.backlog_quota_map.put(BacklogQuota.BacklogQuotaType.destination_storage, quota); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("auth_policies", auth_policies) - .add("replication_clusters", replication_clusters) - .add("bundles", bundles) - .add("backlog_quota_map", backlog_quota_map) - .add("persistence", persistence) - .add("deduplicationEnabled", deduplicationEnabled) - .add("autoTopicCreationOverride", autoTopicCreationOverride) - .add("autoSubscriptionCreationOverride", autoSubscriptionCreationOverride) - .add("clusterDispatchRate", clusterDispatchRate) - .add("topicDispatchRate", topicDispatchRate) - .add("subscriptionDispatchRate", subscriptionDispatchRate) - .add("replicatorDispatchRate", replicatorDispatchRate) - .add("clusterSubscribeRate", clusterSubscribeRate) - .add("publishMaxMessageRate", publishMaxMessageRate) - .add("latency_stats_sample_rate", latency_stats_sample_rate) - .add("message_ttl_in_seconds", message_ttl_in_seconds) - .add("subscription_expiration_time_minutes", subscription_expiration_time_minutes) - .add("retention_policies", retention_policies) - .add("deleted", deleted) - .add("encryption_required", encryption_required) - .add("delayed_delivery_policies", delayed_delivery_policies) - .add("inactive_topic_policies", inactive_topic_policies) - .add("subscription_auth_mode", subscription_auth_mode) - .add("max_producers_per_topic", max_producers_per_topic) - .add("max_consumers_per_topic", max_consumers_per_topic) - .add("max_consumers_per_subscription", max_consumers_per_topic) - .add("max_unacked_messages_per_consumer", max_unacked_messages_per_consumer) - .add("max_unacked_messages_per_subscription", max_unacked_messages_per_subscription) - .add("compaction_threshold", compaction_threshold) - .add("offload_threshold", offload_threshold) - .add("offload_deletion_lag_ms", offload_deletion_lag_ms) - .add("schema_auto_update_compatibility_strategy", schema_auto_update_compatibility_strategy) - .add("schema_validation_enforced", schema_validation_enforced) - .add("schema_compatibility_Strategy", schema_compatibility_strategy) - .add("is_allow_auto_update_Schema", is_allow_auto_update_schema) - .add("offload_policies", offload_policies) - .add("subscription_types_enabled", subscription_types_enabled) - .add("properties", properties) - .add("resource_group_name", resource_group_name).toString(); - } - - private static final long MAX_BUNDLES = ((long) 1) << 32; - - public static BundlesData getBundles(int numBundles) { - if (numBundles <= 0) { - throw new RestException(Status.BAD_REQUEST, - "Invalid number of bundles. Number of numbles has to be in the range of (0, 2^32]."); - } - Long maxVal = MAX_BUNDLES; - Long segSize = maxVal / numBundles; - List partitions = Lists.newArrayList(); - partitions.add(String.format("0x%08x", 0L)); - Long curPartition = segSize; - for (int i = 0; i < numBundles; i++) { - if (i != numBundles - 1) { - partitions.add(String.format("0x%08x", curPartition)); - } else { - partitions.add(String.format("0x%08x", maxVal - 1)); - } - curPartition += segSize; - } - return new BundlesData(partitions); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java similarity index 86% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java index 095e4e9248d96..c00f2caedd9aa 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** * Publish-rate to manage publish throttling. */ +@ToString public class PublishRate { public int publishThrottlingRateInMsg = -1; @@ -56,10 +57,4 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this).add("publishThrottlingRateInMsg", publishThrottlingRateInMsg) - .add("publishThrottlingRateInByte", publishThrottlingRateInByte).toString(); - } - } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RetentionPolicies.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaAutoUpdateCompatibilityStrategy.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SchemaCompatibilityStrategy.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java similarity index 85% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java index 49c00b8810591..f14756509a3c6 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java @@ -18,12 +18,13 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.base.MoreObjects; +import lombok.ToString; import java.util.Objects; /** * Information about subscription rate. */ +@ToString public class SubscribeRate { public int subscribeThrottlingRatePerConsumer = -1; @@ -52,10 +53,4 @@ public boolean equals(Object obj) { return false; } - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("subscribeThrottlingRatePerConsumer", subscribeThrottlingRatePerConsumer) - .add("ratePeriodInSecond", ratePeriodInSecond).toString(); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionAuthMode.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicType.java diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index f45abeadbf4a1..c0e902383ac47 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -24,6 +24,8 @@ import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; import org.apache.pulsar.client.admin.OffloadProcessStatus; +import org.apache.pulsar.common.policies.data.BacklogQuota; +import org.apache.pulsar.common.policies.data.BacklogQuotaDeserializer; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; @@ -50,8 +52,9 @@ private void setInterfaceDefaultMapperModule() { SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(OffloadProcessStatus.class, OffloadProcessStatusImpl.class); - // we use addDeserializer to replace @JsonDeserialize annotation in some POJOs + // we use customized deserializer to replace jackson annotations in some POJOs module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); + module.addDeserializer(BacklogQuota.class, new BacklogQuotaDeserializer()); module.setAbstractTypes(resolver); mapper.registerModule(module); diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java index aaa47b30b0d14..c5ff4577e48d7 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java @@ -79,6 +79,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats.*; @@ -644,7 +645,7 @@ public void namespaces() throws Exception { namespaces.run(split( "set-offload-policies myprop/clust/ns1 -r test-region -d aws-s3 -b test-bucket -e http://test.endpoint -mbs 32M -rbs 5M -oat 10M -oae 10s -orp tiered-storage-first")); verify(mockNamespaces).setOffloadPolicies("myprop/clust/ns1", - OffloadPolicies.create("aws-s3", "test-region", "test-bucket", + OffloadPoliciesUtil.create("aws-s3", "test-region", "test-bucket", "http://test.endpoint",null, null, null, null, 32 * 1024 * 1024, 5 * 1024 * 1024, 10 * 1024 * 1024L, 10000L, OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST)); @@ -961,7 +962,7 @@ public void topics() throws Exception { verify(mockTopics).removeDelayedDeliveryPolicy("persistent://myprop/clust/ns1/ds1") ; cmdTopics.run(split("set-offload-policies persistent://myprop/clust/ns1/ds1 -d s3 -r region -b bucket -e endpoint -m 8 -rb 9 -t 10 -orp tiered-storage-first")); - OffloadPolicies offloadPolicies = OffloadPolicies.create("s3", "region", "bucket" + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create("s3", "region", "bucket" , "endpoint", null, null, null, null, 8, 9, 10L, null, OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST); verify(mockTopics).setOffloadPolicies("persistent://myprop/clust/ns1/ds1", offloadPolicies); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java index 017768387b446..61afe0e61e49c 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java @@ -55,6 +55,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -1939,7 +1940,7 @@ private class SetOffloadPolicies extends CliCommand { ) private String offloadReadPriorityStr; - public final ImmutableList DRIVER_NAMES = OffloadPolicies.DRIVER_NAMES; + public final List DRIVER_NAMES = OffloadPolicies.DRIVER_NAMES; public boolean driverSupported(String driver) { return DRIVER_NAMES.stream().anyMatch(d -> d.equalsIgnoreCase(driver)); @@ -2031,7 +2032,7 @@ && maxValueCheck("OffloadAfterThreshold", offloadAfterThreshold, Long.MAX_VALUE) } } - OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, readBufferSizeInBytes, offloadAfterThresholdInBytes, diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java index cf2ff30710ebc..0696b631be687 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java @@ -62,6 +62,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.PublishRate; @@ -1538,7 +1539,7 @@ void run() throws PulsarAdminException { } } - OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java new file mode 100644 index 0000000000000..27dedd542cfc3 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.apache.pulsar.common.util.ObjectMapperFactory; +import java.io.IOException; + +/** + * Deserializer for a backlog quota. + */ +public class BacklogQuotaDeserializer extends JsonDeserializer { + + @Override + public BacklogQuota deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) + throws IOException, JsonProcessingException { + ObjectMapper mapper = ObjectMapperFactory.getThreadLocal(); + ObjectNode root = ObjectMapperFactory.getThreadLocal().readTree(jsonParser); + BacklogQuota backlogQuota = mapper.readValue(root.toString(), BacklogQuota.class); + if (root.has("limit")) { + backlogQuota.setLimitSize(root.get("limit").asLong()); + } + return backlogQuota; + } +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java index 8df2c52b84bd6..5ed236e15703a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/LocalPolicies.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static org.apache.pulsar.common.policies.data.Policies.defaultBundle; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.defaultBundle; import lombok.EqualsAndHashCode; import lombok.ToString; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java new file mode 100644 index 0000000000000..89b2a248adf2e --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java @@ -0,0 +1,196 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import static org.apache.pulsar.common.policies.data.OffloadPolicies.CONFIGURATION_FIELDS; +import static org.apache.pulsar.common.policies.data.OffloadPolicies.DELETION_LAG_NAME_IN_CONF_FILE; +import static org.apache.pulsar.common.policies.data.OffloadPolicies.DRIVER_NAMES; +import static org.apache.pulsar.common.policies.data.OffloadPolicies.OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE; +import lombok.extern.slf4j.Slf4j; +import org.apache.pulsar.common.util.FieldParser; +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.Properties; + +/** + * Utils of Pulsar offload policies. + */ +@Slf4j +public class OffloadPoliciesUtil { + public static OffloadPolicies create(String driver, String region, String bucket, String endpoint, + String role, String roleSessionName, + String credentialId, String credentialSecret, + Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, + Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, + OffloadPolicies.OffloadedReadPriority readPriority) { + OffloadPolicies offloadPolicies = new OffloadPolicies(); + offloadPolicies.setManagedLedgerOffloadDriver(driver); + offloadPolicies.setManagedLedgerOffloadThresholdInBytes(offloadThresholdInBytes); + offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(offloadDeletionLagInMillis); + + offloadPolicies.setManagedLedgerOffloadBucket(bucket); + offloadPolicies.setManagedLedgerOffloadRegion(region); + offloadPolicies.setManagedLedgerOffloadServiceEndpoint(endpoint); + offloadPolicies.setManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); + offloadPolicies.setManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); + offloadPolicies.setManagedLedgerOffloadedReadPriority(readPriority); + + if (driver.equalsIgnoreCase(DRIVER_NAMES.get(0)) || driver.equalsIgnoreCase(DRIVER_NAMES.get(1))) { + if (role != null) { + offloadPolicies.setS3ManagedLedgerOffloadRole(role); + } + if (roleSessionName != null) { + offloadPolicies.setS3ManagedLedgerOffloadRoleSessionName(roleSessionName); + } + if (credentialId != null) { + offloadPolicies.setS3ManagedLedgerOffloadCredentialId(credentialId); + } + if (credentialSecret != null) { + offloadPolicies.setS3ManagedLedgerOffloadCredentialSecret(credentialSecret); + } + offloadPolicies.setS3ManagedLedgerOffloadRegion(region); + offloadPolicies.setS3ManagedLedgerOffloadBucket(bucket); + offloadPolicies.setS3ManagedLedgerOffloadServiceEndpoint(endpoint); + offloadPolicies.setS3ManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); + offloadPolicies.setS3ManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); + } else if (driver.equalsIgnoreCase(DRIVER_NAMES.get(2))) { + offloadPolicies.setGcsManagedLedgerOffloadRegion(region); + offloadPolicies.setGcsManagedLedgerOffloadBucket(bucket); + offloadPolicies.setGcsManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); + offloadPolicies.setGcsManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); + } + return offloadPolicies; + } + + public static OffloadPolicies create(Properties properties) { + OffloadPolicies data = new OffloadPolicies(); + Field[] fields = OffloadPolicies.class.getDeclaredFields(); + Arrays.stream(fields).forEach(f -> { + if (properties.containsKey(f.getName())) { + try { + f.setAccessible(true); + f.set(data, FieldParser.value((String) properties.get(f.getName()), f)); + } catch (Exception e) { + throw new IllegalArgumentException( + String.format("failed to initialize %s field while setting value %s", + f.getName(), properties.get(f.getName())), e); + } + } + }); + data.compatibleWithBrokerConfigFile(properties); + return data; + } + + /** + * Merge different level offload policies. + * + *

policies level priority: topic > namespace > broker + * + * @param topicLevelPolicies topic level offload policies + * @param nsLevelPolicies namespace level offload policies + * @param brokerProperties broker level offload configuration + * @return offload policies + */ + public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolicies, + OffloadPolicies nsLevelPolicies, + Properties brokerProperties) { + try { + boolean allConfigValuesAreNull = true; + OffloadPolicies offloadPolicies = new OffloadPolicies(); + for (Field field : CONFIGURATION_FIELDS) { + Object object; + if (topicLevelPolicies != null && field.get(topicLevelPolicies) != null) { + object = field.get(topicLevelPolicies); + } else if (nsLevelPolicies != null && field.get(nsLevelPolicies) != null) { + object = field.get(nsLevelPolicies); + } else { + object = getCompatibleValue(brokerProperties, field); + } + if (object != null) { + field.set(offloadPolicies, object); + if (allConfigValuesAreNull) { + allConfigValuesAreNull = false; + } + } + } + if (allConfigValuesAreNull) { + return null; + } else { + return offloadPolicies; + } + } catch (Exception e) { + log.error("Failed to merge configuration.", e); + return null; + } + } + + /** + * Make configurations of the OffloadPolicies compatible with the config file. + * + *

The names of the fields {@link OffloadPolicies#managedLedgerOffloadDeletionLagInMillis} + * and {@link OffloadPolicies#managedLedgerOffloadThresholdInBytes} are not matched with + * config file (broker.conf or standalone.conf). + * + * @param properties broker configuration properties + * @param field filed + * @return field value + */ + private static Object getCompatibleValue(Properties properties, Field field) { + Object object; + if (field.getName().equals("managedLedgerOffloadThresholdInBytes")) { + object = properties.getProperty("managedLedgerOffloadThresholdInBytes", + properties.getProperty(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)); + } else if (field.getName().equals("managedLedgerOffloadDeletionLagInMillis")) { + object = properties.getProperty("managedLedgerOffloadDeletionLagInMillis", + properties.getProperty(DELETION_LAG_NAME_IN_CONF_FILE)); + } else { + object = properties.get(field.getName()); + } + return FieldParser.value((String) object, field); + } + + /** + * This method is used to make a compatible with old policies. + * + *

The filed {@link Policies#offload_threshold} is primitive, so it can't be known whether it had been set. + * In the old logic, if the field value is -1, it could be thought that the field had not been set. + * + * @param nsLevelPolicies namespace level offload policies + * @param policies namespace policies + * @return offload policies + */ + public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolicies, Policies policies) { + if (policies == null || (policies.offload_threshold == -1 && policies.offload_deletion_lag_ms == null)) { + return nsLevelPolicies; + } + if (nsLevelPolicies == null) { + nsLevelPolicies = new OffloadPolicies(); + } + if (nsLevelPolicies.getManagedLedgerOffloadThresholdInBytes() == null + && policies.offload_threshold != -1) { + nsLevelPolicies.setManagedLedgerOffloadThresholdInBytes(policies.offload_threshold); + } + if (nsLevelPolicies.getManagedLedgerOffloadDeletionLagInMillis() == null + && policies.offload_deletion_lag_ms != null) { + nsLevelPolicies.setManagedLedgerOffloadDeletionLagInMillis(policies.offload_deletion_lag_ms); + } + return nsLevelPolicies; + } + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PoliciesUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PoliciesUtil.java new file mode 100644 index 0000000000000..def6a17388d54 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PoliciesUtil.java @@ -0,0 +1,71 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import static org.apache.pulsar.common.policies.data.Policies.FIRST_BOUNDARY; +import static org.apache.pulsar.common.policies.data.Policies.LAST_BOUNDARY; +import org.apache.pulsar.common.util.RestException; +import javax.ws.rs.core.Response; +import java.util.ArrayList; +import java.util.List; + +/** + * Utils of Pulsar policies. + */ +public class PoliciesUtil { + + public static BundlesData defaultBundle() { + BundlesData bundle = new BundlesData(1); + List boundaries = new ArrayList<>(); + boundaries.add(FIRST_BOUNDARY); + boundaries.add(LAST_BOUNDARY); + bundle.setBoundaries(boundaries); + return bundle; + } + + public static void setStorageQuota(Policies polices, BacklogQuota quota) { + if (polices == null) { + return; + } + polices.backlog_quota_map.put(BacklogQuota.BacklogQuotaType.destination_storage, quota); + } + + private static final long MAX_BUNDLES = ((long) 1) << 32; + + public static BundlesData getBundles(int numBundles) { + if (numBundles <= 0) { + throw new RestException(Response.Status.BAD_REQUEST, + "Invalid number of bundles. Number of bundles has to be in the range of (0, 2^32]."); + } + Long maxVal = MAX_BUNDLES; + Long segSize = maxVal / numBundles; + List partitions = new ArrayList<>(); + partitions.add(String.format("0x%08x", 0L)); + Long curPartition = segSize; + for (int i = 0; i < numBundles; i++) { + if (i != numBundles - 1) { + partitions.add(String.format("0x%08x", curPartition)); + } else { + partitions.add(String.format("0x%08x", maxVal - 1)); + } + curPartition += segSize; + } + return new BundlesData(partitions); + } +} diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java index 41746cbc95958..02b9b9ad0ddd4 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/LocalPolicesTest.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import static org.apache.pulsar.common.policies.data.Policies.defaultBundle; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.defaultBundle; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotEquals; diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java index c4aacc1e7704c..6e47bb83875f7 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java @@ -52,7 +52,7 @@ public void testS3Configuration() { final Long offloadThresholdInBytes = 10L * M; final Long offloadDeletionLagInMillis = 5L * MIN; - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create( driver, region, bucket, @@ -96,7 +96,7 @@ public void testGcsConfiguration() { final Long offloadDeletionLagInMillis = 5 * MIN; final OffloadedReadPriority readPriority = OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create( driver, region, bucket, @@ -178,7 +178,7 @@ public void testCreateByProperties() { properties.setProperty("fileSystemProfilePath", fileSystemProfilePath); properties.setProperty("fileSystemURI", fileSystemURI); - OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(properties); Assert.assertEquals(offloadPolicies.getOffloadersDirectory(), offloadersDirectory); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), driver); @@ -222,7 +222,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis); - OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(properties); Assert.assertEquals(offloadThresholdInBytes, offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis, offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis()); @@ -230,7 +230,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadThresholdInBytes", "" + (offloadThresholdInBytes + 10)); properties.setProperty("managedLedgerOffloadDeletionLagInMillis", "" + (offloadDeletionLagInMillis + 10)); - offloadPolicies = OffloadPolicies.create(properties); + offloadPolicies = OffloadPoliciesUtil.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 10), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 10, @@ -242,7 +242,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes + 30); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis + 30); - offloadPolicies = OffloadPolicies.create(properties); + offloadPolicies = OffloadPoliciesUtil.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 20), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 20, @@ -254,19 +254,19 @@ public void oldPoliciesCompatibleTest() { Policies policies = new Policies(); Assert.assertEquals(policies.offload_threshold, -1); - OffloadPolicies offloadPolicies = OffloadPolicies.oldPoliciesCompatible(null, policies); + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.oldPoliciesCompatible(null, policies); Assert.assertNull(offloadPolicies); policies.offload_deletion_lag_ms = 1000L; policies.offload_threshold = 0; - offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPoliciesUtil.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); policies.offload_deletion_lag_ms = 2000L; policies.offload_threshold = 100; - offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPoliciesUtil.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); } @@ -294,7 +294,7 @@ public void mergeTest() { brokerProperties.setProperty("managedLedgerOffloadMaxThreads", "" + brokerOffloadMaxThreads); OffloadPolicies offloadPolicies = - OffloadPolicies.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); + OffloadPoliciesUtil.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), brokerDriver); Assert.assertEquals(offloadPolicies.getS3ManagedLedgerOffloadBucket(), topicBucket); diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java index e2902dc86ca3e..89b1cbf08f28b 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java @@ -34,6 +34,7 @@ import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.nar.NarClassLoader; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.protocol.Commands; /** @@ -440,7 +441,7 @@ public PulsarAdmin getPulsarAdmin() throws PulsarClientException { public OffloadPolicies getOffloadPolices() { Properties offloadProperties = new Properties(); offloadProperties.putAll(getOffloaderProperties()); - OffloadPolicies offloadPolicies = OffloadPolicies.create(offloadProperties); + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(offloadProperties); offloadPolicies.setManagedLedgerOffloadDriver(getManagedLedgerOffloadDriver()); offloadPolicies.setManagedLedgerOffloadMaxThreads(getManagedLedgerOffloadMaxThreads()); offloadPolicies.setOffloadersDirectory(getOffloadersDirectory()); diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java index 6a81eb6b7d72c..5d63768d62667 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java @@ -34,6 +34,7 @@ import org.apache.pulsar.client.impl.schema.JSONSchema; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; import org.mockito.invocation.InvocationOnMock; @@ -413,7 +414,7 @@ public void testGetSplitNonSchema(String delimiter) throws Exception { @Test public void pulsarSplitJsonCodecTest() throws JsonProcessingException, UnsupportedEncodingException { - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create( "aws-s3", "test-region", "test-bucket", diff --git a/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java b/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java index 78a32b033cefd..8657445256c0a 100644 --- a/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java +++ b/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java @@ -24,6 +24,7 @@ import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -49,7 +50,7 @@ public void start() throws Exception { hdfsURI = "hdfs://localhost:"+ hdfsCluster.getNameNodePort() + "/"; Properties properties = new Properties(); fileSystemManagedLedgerOffloader = new FileSystemManagedLedgerOffloader( - OffloadPolicies.create(properties), + OffloadPoliciesUtil.create(properties), scheduler, hdfsURI, basePath); } diff --git a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java index c76864d9ae8ea..ec014c077aa1e 100644 --- a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java +++ b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java @@ -56,6 +56,7 @@ import org.apache.bookkeeper.mledger.offload.jcloud.provider.TieredStorageConfiguration; import org.apache.bookkeeper.mledger.proto.MLDataFormats; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.BlobBuilder; @@ -598,7 +599,7 @@ public CompletableFuture deleteOffloaded(UUID uid, Map off public OffloadPolicies getOffloadPolicies() { Properties properties = new Properties(); properties.putAll(config.getConfigProperties()); - return OffloadPolicies.create(properties); + return OffloadPoliciesUtil.create(properties); } @Override From 839e416f537cc28d9bbdbd44ec434d0a9fe0e29c Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 14:13:43 +0800 Subject: [PATCH 10/51] temp remove JsonProperty in OffloadPolicies --- .../common/policies/data/OffloadPolicies.java | 54 ++++++++----------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java index 0969bdf5cca78..246100425090c 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -18,9 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static org.apache.pulsar.common.util.FieldParser.value; - -import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -130,99 +127,94 @@ public String getValue() { // common config @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String offloadersDirectory = DEFAULT_OFFLOADER_DIRECTORY; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String managedLedgerOffloadDriver = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer managedLedgerOffloadMaxThreads = DEFAULT_OFFLOAD_MAX_THREADS; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer managedLedgerOffloadPrefetchRounds = DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Long managedLedgerOffloadThresholdInBytes = DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Long managedLedgerOffloadDeletionLagInMillis = DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private OffloadedReadPriority managedLedgerOffloadedReadPriority = DEFAULT_OFFLOADED_READ_PRIORITY; // s3 config, set by service configuration or cli @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String s3ManagedLedgerOffloadRegion = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String s3ManagedLedgerOffloadBucket = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String s3ManagedLedgerOffloadServiceEndpoint = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer s3ManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer s3ManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + // s3 config, set by service configuration @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String s3ManagedLedgerOffloadCredentialId = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String s3ManagedLedgerOffloadCredentialSecret = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String s3ManagedLedgerOffloadRole = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String s3ManagedLedgerOffloadRoleSessionName = "pulsar-s3-offload"; // gcs config, set by service configuration or cli @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String gcsManagedLedgerOffloadRegion = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String gcsManagedLedgerOffloadBucket = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer gcsManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer gcsManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + // gcs config, set by service configuration @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String gcsManagedLedgerOffloadServiceAccountKeyFile = null; // file system config, set by service configuration @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String fileSystemProfilePath = null; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String fileSystemURI = null; // --------- new offload configurations --------- // they are universal configurations and could be used to `aws-s3`, `google-cloud-storage` or `azureblob`. @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String managedLedgerOffloadBucket; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String managedLedgerOffloadRegion; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private String managedLedgerOffloadServiceEndpoint; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer managedLedgerOffloadMaxBlockSizeInBytes; + @Configuration - @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer managedLedgerOffloadReadBufferSizeInBytes; void compatibleWithBrokerConfigFile(Properties properties) { From 6fe12fad9b20bf2a06da0b25465c2efb3701deee Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 14:42:13 +0800 Subject: [PATCH 11/51] Topics & NonPersistentTopics --- .../broker/service/nonpersistent/NonPersistentSubscription.java | 2 +- .../main/java/org/apache/pulsar/common/naming/TopicDomain.java | 0 .../pulsar/common/partition/PartitionedTopicMetadata.java | 0 .../org/apache/pulsar/common/policies/data/ConsumerStats.java | 0 .../common/policies/data/NonPersistentPublisherStats.java | 0 .../common/policies/data/NonPersistentReplicatorStats.java | 0 .../common/policies/data/NonPersistentSubscriptionStats.java | 0 .../pulsar/common/policies/data/NonPersistentTopicStats.java | 0 .../common/policies/data/PartitionedTopicInternalStats.java | 0 .../pulsar/common/policies/data/PartitionedTopicStats.java | 0 .../common/policies/data/PersistentTopicInternalStats.java | 0 .../org/apache/pulsar/common/policies/data/PublisherStats.java | 0 .../org/apache/pulsar/common/policies/data/ReplicatorStats.java | 0 .../apache/pulsar/common/policies/data/SubscriptionStats.java | 0 .../java/org/apache/pulsar/common/policies/data/TopicStats.java | 0 15 files changed, 1 insertion(+), 1 deletion(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java (100%) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java index 0fb05c654c7fd..eee648eb0e622 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentSubscription.java @@ -460,7 +460,7 @@ public NonPersistentSubscriptionStats getStats() { }); } - subStats.type = getType(); + subStats.type = getTypeString(); subStats.msgDropRate = dispatcher.getMessageDropRate().getValueRate(); return subStats; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/TopicDomain.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/PartitionedTopicMetadata.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistentTopicInternalStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java From 2929f2914af8fc687f212a5691a62dad0b2980b9 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 15:42:20 +0800 Subject: [PATCH 12/51] ResourceQuotas with MixIn class --- .../persistent/PersistentSubscription.java | 5 +++-- .../common/policies/data/ConsumerStats.java | 5 +++-- .../data/NonPersistentPublisherStats.java | 6 +++--- .../data/NonPersistentReplicatorStats.java | 6 +++--- .../data/NonPersistentSubscriptionStats.java | 6 +++--- .../policies/data/NonPersistentTopicStats.java | 16 +++++++++------- .../data/PartitionedTopicInternalStats.java | 4 ++-- .../policies/data/PartitionedTopicStats.java | 4 ++-- .../common/policies/data/PublisherStats.java | 5 +++-- .../common/policies/data/ReplicatorStats.java | 6 +++--- .../common/policies/data/ResourceQuota.java | 14 ++++++-------- .../common/policies/data/SubscriptionStats.java | 12 ++++++------ .../pulsar/common/policies/data/TopicStats.java | 16 +++++++++------- .../admin/internal/JacksonConfigurator.java | 5 +++++ .../common/policies/data/ResourceQuotaMixIn.java | 8 ++++++++ 15 files changed, 68 insertions(+), 50 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java (90%) create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java index 320fdc615ff0a..6e26072db65f9 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java @@ -981,14 +981,15 @@ public SubscriptionStats getStats(Boolean getPreciseBacklog, boolean subscriptio }); } - subStats.type = getType(); + SubType subType = getType(); + subStats.type = getTypeString(); if (dispatcher instanceof PersistentDispatcherSingleActiveConsumer) { Consumer activeConsumer = ((PersistentDispatcherSingleActiveConsumer) dispatcher).getActiveConsumer(); if (activeConsumer != null) { subStats.activeConsumerName = activeConsumer.consumerName(); } } - if (Subscription.isIndividualAckMode(subStats.type)) { + if (Subscription.isIndividualAckMode(subType)) { if (dispatcher instanceof PersistentDispatcherMultipleConsumers) { PersistentDispatcherMultipleConsumers d = (PersistentDispatcherMultipleConsumers) dispatcher; subStats.unackedMessages = d.getTotalUnackedMessages(); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java index f1d785680b479..18b2b1d56017f 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; import java.util.List; import java.util.Map; @@ -97,7 +96,9 @@ public class ConsumerStats { private StringBuilder stringBuffer = new StringBuilder(); public ConsumerStats add(ConsumerStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } this.msgRateOut += stats.msgRateOut; this.msgThroughputOut += stats.msgThroughputOut; this.bytesOutCounter += stats.bytesOutCounter; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java index f1602a455a75c..3888e87b80ebb 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; - /** * Non-persistent publisher statistics. */ @@ -31,7 +29,9 @@ public class NonPersistentPublisherStats extends PublisherStats { public double msgDropRate; public NonPersistentPublisherStats add(NonPersistentPublisherStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java index 906afdecdfa4d..9174f5af3c523 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; - /** * Statistics for a non-persistent replicator. */ @@ -31,7 +29,9 @@ public class NonPersistentReplicatorStats extends ReplicatorStats { public double msgDropRate; public NonPersistentReplicatorStats add(NonPersistentReplicatorStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java index 896e67794fd86..69e8867b20d2a 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; - /** * Statistics for subscription to non-persistent topics. */ @@ -39,7 +37,9 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats public NonPersistentSubscriptionStats add(NonPersistentSubscriptionStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java index debd1a75ea2c5..66c700227d59f 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java @@ -18,11 +18,11 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.TreeMap; /** * Statistics for a non-persistent topic. @@ -45,9 +45,9 @@ public class NonPersistentTopicStats extends TopicStats { public Map replication; public NonPersistentTopicStats() { - this.publishers = Lists.newArrayList(); - this.subscriptions = Maps.newHashMap(); - this.replication = Maps.newTreeMap(); + this.publishers = new ArrayList<>(); + this.subscriptions = new HashMap<>(); + this.replication = new TreeMap<>(); } public void reset() { @@ -58,7 +58,9 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats. public NonPersistentTopicStats add(NonPersistentTopicStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java index d20e03f9515e1..dad2985b5a362 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicInternalStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; @@ -34,7 +34,7 @@ public class PartitionedTopicInternalStats { public PartitionedTopicInternalStats() { super(); metadata = new PartitionedTopicMetadata(); - partitions = Maps.newHashMap(); + partitions = new HashMap<>(); } public PartitionedTopicInternalStats(PartitionedTopicMetadata metadata) { diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java index cce78281ad240..699fe6e470315 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PartitionedTopicStats.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; @@ -34,7 +34,7 @@ public class PartitionedTopicStats extends TopicStats { public PartitionedTopicStats() { super(); metadata = new PartitionedTopicMetadata(); - partitions = Maps.newHashMap(); + partitions = new HashMap<>(); } public PartitionedTopicStats(PartitionedTopicMetadata metadata) { diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java index d228f21305902..e3732fa553d07 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublisherStats.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; import java.util.Map; import org.apache.pulsar.client.api.ProducerAccessMode; @@ -71,7 +70,9 @@ public class PublisherStats { public Map metadata; public PublisherStats add(PublisherStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } this.count++; this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java index a3dbec1ee0024..88d5c77767cbe 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; - /** * Statistics about a replicator. */ @@ -62,7 +60,9 @@ public class ReplicatorStats { public String outboundConnectedSince; public ReplicatorStats add(ReplicatorStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; this.msgRateOut += stats.msgRateOut; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java index 14197f8cd2904..708c571e48888 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java @@ -18,8 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.google.common.base.Objects; +import java.util.Objects; /** * Resource quota for a namespace or namespace bundle. @@ -165,7 +164,6 @@ public boolean getDynamic() { /** * Check if this is a valid quota definition. */ - @JsonIgnore public boolean isValid() { if (this.msgRateIn > 0.0 && this.msgRateOut > 0.0 && this.bandwidthIn > 0.0 && this.bandwidthOut > 0.0 && this.memory > 0.0) { @@ -205,7 +203,7 @@ public void substract(ResourceQuota quota) { @Override public int hashCode() { - return Objects.hashCode(msgRateIn, msgRateOut, bandwidthIn, + return Objects.hash(msgRateIn, msgRateOut, bandwidthIn, bandwidthOut, memory, dynamic); } @@ -213,10 +211,10 @@ public int hashCode() { public boolean equals(Object obj) { if (obj instanceof ResourceQuota) { ResourceQuota other = (ResourceQuota) obj; - return Objects.equal(this.msgRateIn, other.msgRateIn) && Objects.equal(this.msgRateOut, other.msgRateOut) - && Objects.equal(this.bandwidthIn, other.bandwidthIn) - && Objects.equal(this.bandwidthOut, other.bandwidthOut) && Objects.equal(this.memory, other.memory) - && Objects.equal(this.dynamic, other.dynamic); + return Objects.equals(this.msgRateIn, other.msgRateIn) && Objects.equals(this.msgRateOut, other.msgRateOut) + && Objects.equals(this.bandwidthIn, other.bandwidthIn) + && Objects.equals(this.bandwidthOut, other.bandwidthOut) && Objects.equals(this.memory, other.memory) + && Objects.equals(this.dynamic, other.dynamic); } return false; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java index 2b994be585ca7..1d7c1584e1d3a 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java @@ -18,12 +18,10 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.collect.Lists; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.apache.pulsar.common.api.proto.CommandSubscribe.SubType; /** * Statistics about subscription. @@ -73,7 +71,7 @@ public class SubscriptionStats { public long unackedMessages; /** Whether this subscription is Exclusive or Shared or Failover. */ - public SubType type; + public String type; /** The name of the consumer that is active for single active consumer subscriptions i.e. failover or exclusive. */ public String activeConsumerName; @@ -118,7 +116,7 @@ public class SubscriptionStats { public int nonContiguousDeletedMessagesRangesSerializedSize; public SubscriptionStats() { - this.consumers = Lists.newArrayList(); + this.consumers = new ArrayList<>(); this.consumersAfterMarkDeletePosition = new LinkedHashMap<>(); } @@ -145,7 +143,9 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats public SubscriptionStats add(SubscriptionStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } this.msgRateOut += stats.msgRateOut; this.msgThroughputOut += stats.msgThroughputOut; this.bytesOutCounter += stats.bytesOutCounter; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java index 33a6f8210f5b4..36004242c3fc1 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java @@ -18,11 +18,11 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.TreeMap; /** * Statistics for a Pulsar topic. @@ -92,9 +92,9 @@ public class TopicStats { public int nonContiguousDeletedMessagesRangesSerializedSize; public TopicStats() { - this.publishers = Lists.newArrayList(); - this.subscriptions = Maps.newHashMap(); - this.replication = Maps.newTreeMap(); + this.publishers = new ArrayList<>(); + this.subscriptions = new HashMap<>(); + this.replication = new TreeMap<>(); } public void reset() { @@ -124,7 +124,9 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats. public TopicStats add(TopicStats stats) { - checkNotNull(stats); + if (stats == null) { + throw new NullPointerException(); + } this.count++; this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index c0e902383ac47..2f63a26dce452 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -26,6 +26,8 @@ import org.apache.pulsar.client.admin.OffloadProcessStatus; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuotaDeserializer; +import org.apache.pulsar.common.policies.data.ResourceQuota; +import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; @@ -56,6 +58,9 @@ private void setInterfaceDefaultMapperModule() { module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); module.addDeserializer(BacklogQuota.class, new BacklogQuotaDeserializer()); + // we use MixIn class to add jackson annotations + mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); + module.setAbstractTypes(resolver); mapper.registerModule(module); } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java new file mode 100644 index 0000000000000..24f280e3e6db1 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java @@ -0,0 +1,8 @@ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public abstract class ResourceQuotaMixIn { + @JsonIgnore + abstract public boolean isValid(); +} From 06ea6207e3829d22b4dea27653846140f0f9996b Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 16:14:06 +0800 Subject: [PATCH 13/51] Functions --- .../functions/AuthenticationConfig.java | 0 .../common/functions/ConsumerConfig.java | 0 .../pulsar/common/functions/CryptoConfig.java | 0 .../functions/ExternalPulsarConfig.java | 0 .../common/functions/FunctionConfig.java | 2 -- .../common/functions/FunctionState.java | 2 -- .../common/functions/ProducerConfig.java | 0 .../pulsar/common/functions/Resources.java | 0 .../common/functions/UpdateOptions.java | 0 .../pulsar/common/functions/WindowConfig.java | 0 .../pulsar/common/io/ConnectorDefinition.java | 0 .../policies/data/ExceptionInformation.java | 0 .../common/policies/data/FunctionStats.java | 21 ------------ .../common/policies/data/FunctionStatus.java | 5 --- .../admin/internal/JacksonConfigurator.java | 11 ++++++ .../functions/JsonIgnorePropertiesMixIn.java | 8 +++++ .../policies/data/FunctionStatsMixIn.java | 34 +++++++++++++++++++ .../policies/data/FunctionStatsUtil.java | 12 +++++++ .../policies/data/FunctionStatusUtil.java | 10 ++++++ .../functions/PulsarFunctionsTest.java | 14 ++++---- .../java/PulsarFunctionsJavaTest.java | 3 +- 21 files changed, 85 insertions(+), 37 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java (97%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/FunctionState.java (92%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/Resources.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java (83%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java (89%) create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/AuthenticationConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ConsumerConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/CryptoConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ExternalPulsarConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java similarity index 97% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java index 1df42b935b1ec..8a83b378a8765 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionConfig.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.functions; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.Collection; import java.util.Map; import lombok.AllArgsConstructor; @@ -34,7 +33,6 @@ @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor -@JsonIgnoreProperties(ignoreUnknown = true) public class FunctionConfig { /** diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionState.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionState.java similarity index 92% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionState.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionState.java index bec7528f40c34..34f50571d36ec 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/FunctionState.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/FunctionState.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.functions; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -31,7 +30,6 @@ @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor -@JsonIgnoreProperties(ignoreUnknown = true) public class FunctionState { private String key; private String stringValue; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/ProducerConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/Resources.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/Resources.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/Resources.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/Resources.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WindowConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/ConnectorDefinition.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ExceptionInformation.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java similarity index 83% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java index 94eb9905e970a..c2ab0139b08b2 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java @@ -18,25 +18,17 @@ */ package org.apache.pulsar.common.policies.data; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import java.io.IOException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import lombok.Data; import lombok.EqualsAndHashCode; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Statistics for Pulsar Function. */ @Data -@JsonInclude(JsonInclude.Include.ALWAYS) -@JsonPropertyOrder({"receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", - "avgProcessLatency", "1min", "lastInvocation", "instances"}) public class FunctionStats { /** @@ -64,7 +56,6 @@ public class FunctionStats { **/ public Double avgProcessLatency; - @JsonProperty("1min") public FunctionInstanceStats.FunctionInstanceStatsDataBase oneMin = new FunctionInstanceStats.FunctionInstanceStatsDataBase(); @@ -77,8 +68,6 @@ public class FunctionStats { * Function instance statistics. */ @Data - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "instanceId", "metrics" }) public static class FunctionInstanceStats { /** Instance Id of function instance. **/ @@ -88,9 +77,6 @@ public static class FunctionInstanceStats { * Function instance statistics data base. */ @Data - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", - "userExceptionsTotal", "avgProcessLatency" }) public static class FunctionInstanceStatsDataBase { /** * Total number of records function received from source for instance. @@ -123,12 +109,8 @@ public static class FunctionInstanceStatsDataBase { */ @EqualsAndHashCode(callSuper = true) @Data - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", - "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "userMetrics" }) public static class FunctionInstanceStatsData extends FunctionInstanceStatsDataBase { - @JsonProperty("1min") public FunctionInstanceStatsDataBase oneMin = new FunctionInstanceStatsDataBase(); /** @@ -206,7 +188,4 @@ public FunctionStats calculateOverall() { return this; } - public static FunctionStats decode (String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStats.class); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java similarity index 89% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java index 30b50b821802a..8f4f7e2562909 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatus.java @@ -18,11 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import java.io.IOException; import java.util.LinkedList; import java.util.List; import lombok.Data; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Data lass containing status of Pulsar Function. @@ -79,7 +77,4 @@ public void addInstance(FunctionInstanceStatus functionInstanceStatus) { instances.add(functionInstanceStatus); } - public static FunctionStatus decode(String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStatus.class); - } } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index 2f63a26dce452..f4fa62e66c1c5 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -24,8 +24,13 @@ import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; import org.apache.pulsar.client.admin.OffloadProcessStatus; +import org.apache.pulsar.common.functions.FunctionConfig; +import org.apache.pulsar.common.functions.FunctionState; +import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuotaDeserializer; +import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -60,6 +65,12 @@ private void setInterfaceDefaultMapperModule() { // we use MixIn class to add jackson annotations mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); + mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(FunctionStats.class, FunctionStatsMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); module.setAbstractTypes(resolver); mapper.registerModule(module); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java new file mode 100644 index 0000000000000..0cf23e248b84d --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java @@ -0,0 +1,8 @@ +package org.apache.pulsar.common.functions; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public abstract class JsonIgnorePropertiesMixIn { + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java new file mode 100644 index 0000000000000..f742b2eaf0496 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java @@ -0,0 +1,34 @@ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({"receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", + "avgProcessLatency", "1min", "lastInvocation", "instances"}) +public abstract class FunctionStatsMixIn { + @JsonProperty("1min") + public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase oneMin; + + @JsonInclude(JsonInclude.Include.ALWAYS) + @JsonPropertyOrder({ "instanceId", "metrics" }) + public abstract static class FunctionInstanceStatsMixIn { + + @JsonInclude(JsonInclude.Include.ALWAYS) + @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", + "userExceptionsTotal", "avgProcessLatency" }) + public abstract static class FunctionInstanceStatsDataBaseMixIn { + + } + + @JsonInclude(JsonInclude.Include.ALWAYS) + @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", + "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "userMetrics" }) + public abstract static class FunctionInstanceStatsDataMixIn extends FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase { + @JsonProperty("1min") + public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase oneMin; + } + + } +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java new file mode 100644 index 0000000000000..138fb45c5ecbe --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java @@ -0,0 +1,12 @@ +package org.apache.pulsar.common.policies.data; + +import java.io.IOException; +import org.apache.pulsar.common.util.ObjectMapperFactory; + +public class FunctionStatsUtil { + + public static FunctionStats decode (String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStats.class); + } + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java new file mode 100644 index 0000000000000..6830d6de020e1 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java @@ -0,0 +1,10 @@ +package org.apache.pulsar.common.policies.data; + +import org.apache.pulsar.common.util.ObjectMapperFactory; +import java.io.IOException; + +public class FunctionStatusUtil { + public static FunctionStatus decode(String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStatus.class); + } +} diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java index 1d51c2f0f61cd..23c9a9ee588e2 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java @@ -48,7 +48,9 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsUtil; import org.apache.pulsar.common.policies.data.FunctionStatus; +import org.apache.pulsar.common.policies.data.FunctionStatusUtil; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.functions.api.examples.AutoSchemaFunction; @@ -266,7 +268,7 @@ public void testWindowFunction(String type, String[] expectedResults) throws Exc "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(containerExecResult.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(containerExecResult.getStdout()); assertEquals(functionStatus.getNumInstances(), 1); assertEquals(functionStatus.getNumRunning(), 1); assertEquals(functionStatus.getInstances().size(), 1); @@ -441,7 +443,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(result.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(result.getStdout()); assertEquals(functionStatus.getNumInstances(), 1); assertEquals(functionStatus.getNumRunning(), 1); @@ -470,7 +472,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStats functionStats = FunctionStatsUtil.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages + 2); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); @@ -918,7 +920,7 @@ protected void getFunctionStatsEmpty(String functionName) throws Exception { ); log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStats functionStats = FunctionStatsUtil.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), 0); assertEquals(functionStats.getProcessedSuccessfullyTotal(), 0); @@ -959,7 +961,7 @@ private void getFunctionStats(String functionName, int numMessages) throws Excep log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStats functionStats = FunctionStatsUtil.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); @@ -1064,7 +1066,7 @@ private void doGetFunctionStatus(String functionName, int numMessages, boolean c "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(result.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(result.getStdout()); assertEquals(functionStatus.getNumInstances(), parallelism); assertEquals(functionStatus.getNumRunning(), parallelism); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java index 13134fa3781be..bbd3ec3efe106 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/java/PulsarFunctionsJavaTest.java @@ -24,6 +24,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.common.policies.data.FunctionStatus; +import org.apache.pulsar.common.policies.data.FunctionStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.functions.PulsarFunctionsTest; import org.apache.pulsar.tests.integration.functions.utils.CommandGenerator.Runtime; @@ -89,7 +90,7 @@ private void testCustomSerdeFunction() throws Exception { "--name", functionName ); - FunctionStatus functionStatus = FunctionStatus.decode(result.getStdout()); + FunctionStatus functionStatus = FunctionStatusUtil.decode(result.getStdout()); assertEquals(functionStatus.getNumInstances(), 1); assertEquals(functionStatus.getInstances().get(0).getStatus().isRunning(), true); } From 6cf8c715b36d9d18566c2265b2b9f4c96e258deb Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 16:22:21 +0800 Subject: [PATCH 14/51] Sources.java --- .../pulsar/common/io/BatchSourceConfig.java | 0 .../apache/pulsar/common/io/SourceConfig.java | 0 .../common/policies/data/SourceStatus.java | 5 ---- .../functions/JsonIgnorePropertiesMixIn.java | 18 +++++++++++ .../policies/data/FunctionStatsMixIn.java | 18 +++++++++++ .../policies/data/FunctionStatsUtil.java | 18 +++++++++++ .../policies/data/SourceStatusUtil.java | 30 +++++++++++++++++++ .../io/sources/AvroKafkaSourceTest.java | 5 ++-- .../io/sources/PulsarIOSourceRunner.java | 5 ++-- 9 files changed, 90 insertions(+), 9 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/io/SourceConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java (92%) create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatusUtil.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/BatchSourceConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/SourceConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SourceConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/SourceConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SourceConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java similarity index 92% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java index 3e531e9edb27f..bb7ed2d2dafdd 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SourceStatus.java @@ -18,11 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import java.io.IOException; import java.util.LinkedList; import java.util.List; import lombok.Data; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Source status. @@ -87,7 +85,4 @@ public void addInstance(SourceInstanceStatus sourceInstanceStatus) { instances.add(sourceInstanceStatus); } - public static SourceStatus decode(String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, SourceStatus.class); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java index 0cf23e248b84d..ae6fd10ef7ff4 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/JsonIgnorePropertiesMixIn.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.pulsar.common.functions; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java index f742b2eaf0496..62ef328075323 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.pulsar.common.policies.data; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java index 138fb45c5ecbe..a4030612072e9 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.pulsar.common.policies.data; import java.io.IOException; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatusUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatusUtil.java new file mode 100644 index 0000000000000..20739877e1a50 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SourceStatusUtil.java @@ -0,0 +1,30 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.io.IOException; +import org.apache.pulsar.common.util.ObjectMapperFactory; + +public class SourceStatusUtil { + + public static SourceStatus decode(String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, SourceStatus.class); + } + +} diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java index 52cade8500f23..256c49e467af4 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/AvroKafkaSourceTest.java @@ -35,6 +35,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.schema.Field; import org.apache.pulsar.client.api.schema.GenericRecord; +import org.apache.pulsar.common.policies.data.SourceStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecException; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.functions.PulsarFunctionsTestBase; @@ -296,7 +297,7 @@ protected void getSourceStatus(String tenant, String namespace, String sourceNam assertEquals(result.getExitCode(), 0); - final SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + final SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); @@ -413,7 +414,7 @@ protected void waitForProcessingSourceMessages(String tenant, assertEquals(result.getExitCode(), 0); - SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); assertEquals(sourceStatus.getInstances().size(), 1); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java index e99be1157b765..68e80fd644727 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/PulsarIOSourceRunner.java @@ -33,6 +33,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.SourceStatus; +import org.apache.pulsar.common.policies.data.SourceStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecException; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.io.PulsarIOTestRunner; @@ -203,7 +204,7 @@ protected void getSourceStatus(String tenant, String namespace, String sourceNam assertEquals(result.getExitCode(), 0); - final SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + final SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); @@ -243,7 +244,7 @@ protected void waitForProcessingSourceMessages(String tenant, assertEquals(result.getExitCode(), 0); - SourceStatus sourceStatus = SourceStatus.decode(result.getStdout()); + SourceStatus sourceStatus = SourceStatusUtil.decode(result.getStdout()); assertEquals(sourceStatus.getNumInstances(), 1); assertEquals(sourceStatus.getNumRunning(), 1); assertEquals(sourceStatus.getInstances().size(), 1); From cfb89515ddddae58db28327279a783a0947e0cde Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 16:25:47 +0800 Subject: [PATCH 15/51] Sinks.java --- .../apache/pulsar/common/io/SinkConfig.java | 0 .../common/policies/data/SinkStatus.java | 5 ---- .../common/policies/data/SinkStatusUtil.java | 30 +++++++++++++++++++ .../io/sinks/PulsarIOSinkRunner.java | 5 ++-- 4 files changed, 33 insertions(+), 7 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/io/SinkConfig.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java (91%) create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatusUtil.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/io/SinkConfig.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/io/SinkConfig.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/SinkConfig.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java index fe704228c56af..8bd539c369825 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SinkStatus.java @@ -18,11 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import java.io.IOException; import java.util.LinkedList; import java.util.List; import lombok.Data; -import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Status of Pulsar Sink. @@ -86,7 +84,4 @@ public void addInstance(SinkInstanceStatus sinkInstanceStatus) { instances.add(sinkInstanceStatus); } - public static SinkStatus decode(String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, SinkStatus.class); - } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatusUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatusUtil.java new file mode 100644 index 0000000000000..d2701afaa1fa1 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/SinkStatusUtil.java @@ -0,0 +1,30 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.io.IOException; +import org.apache.pulsar.common.util.ObjectMapperFactory; + +public class SinkStatusUtil { + + public static SinkStatus decode(String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, SinkStatus.class); + } + +} diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java index bde324c46e494..92890cdd7d4dd 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sinks/PulsarIOSinkRunner.java @@ -32,6 +32,7 @@ import org.apache.pulsar.client.impl.schema.AvroSchema; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.SinkStatus; +import org.apache.pulsar.common.policies.data.SinkStatusUtil; import org.apache.pulsar.tests.integration.docker.ContainerExecException; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.io.PulsarIOTestRunner; @@ -253,7 +254,7 @@ protected void getSinkStatus(String tenant, String namespace, String sinkName) t assertEquals(result.getExitCode(), 0); - SinkStatus sinkStatus = SinkStatus.decode(result.getStdout()); + SinkStatus sinkStatus = SinkStatusUtil.decode(result.getStdout()); assertEquals(sinkStatus.getNumInstances(), 1); assertEquals(sinkStatus.getNumRunning(), 1); @@ -318,7 +319,7 @@ protected void waitForProcessingSinkMessages(String tenant, assertEquals(result.getExitCode(), 0); - final SinkStatus sinkStatus = SinkStatus.decode(result.getStdout()); + final SinkStatus sinkStatus = SinkStatusUtil.decode(result.getStdout()); assertEquals(sinkStatus.getNumInstances(), 1); assertEquals(sinkStatus.getNumRunning(), 1); From de7d4097dc739e1e19356b9e5ffdcaab9a10abf9 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 16:58:31 +0800 Subject: [PATCH 16/51] Schemas.java --- .../pulsar/common/functions/WorkerInfo.java | 0 .../data/WorkerFunctionInstanceStats.java | 0 .../schema/IsCompatibilityResponse.java | 0 .../protocol/schema/PostSchemaPayload.java | 0 .../apache/pulsar/common/stats/Metrics.java | 18 ++++++------- .../admin/internal/JacksonConfigurator.java | 3 +++ .../pulsar/common/stats/MetricsMixIn.java | 27 +++++++++++++++++++ 7 files changed, 38 insertions(+), 10 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/stats/Metrics.java (84%) create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/stats/MetricsMixIn.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/WorkerInfo.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/IsCompatibilityResponse.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/PostSchemaPayload.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/Metrics.java similarity index 84% rename from pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/Metrics.java index 88111e3267dc7..617bfbfbe5907 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/Metrics.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/Metrics.java @@ -18,12 +18,11 @@ */ package org.apache.pulsar.common.stats; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.google.common.base.Objects; -import com.google.common.collect.Maps; import java.util.Collections; +import java.util.HashMap; import java.util.Map; +import java.util.Objects; +import java.util.TreeMap; /** * WARNING : do not add any getters as the Jackson parser will output that getter. @@ -36,17 +35,16 @@ public class Metrics { final Map metrics; - @JsonInclude(content = Include.NON_EMPTY) final Map dimensions; public Metrics() { - metrics = Maps.newTreeMap(); - dimensions = Maps.newHashMap(); + metrics = new TreeMap<>(); + dimensions = new HashMap<>(); } // hide constructor protected Metrics(Map unmodifiableDimensionMap) { - this.metrics = Maps.newTreeMap(); + this.metrics = new TreeMap<>(); this.dimensions = unmodifiableDimensionMap; } @@ -58,7 +56,7 @@ protected Metrics(Map unmodifiableDimensionMap) { */ public static Metrics create(Map dimensionMap) { // make the dimensions map unmodifiable and immutable; - Map map = Maps.newTreeMap(); + Map map = new TreeMap<>(); map.putAll(dimensionMap); return new Metrics(Collections.unmodifiableMap(map)); } @@ -93,7 +91,7 @@ public int hashCode() { @Override public boolean equals(Object obj) { // the business key will be my metrics dimension [ immutable ] - return (obj instanceof Metrics) && Objects.equal(this.dimensions, ((Metrics) obj).dimensions); + return (obj instanceof Metrics) && Objects.equals(this.dimensions, ((Metrics) obj).dimensions); } @Override diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index f4fa62e66c1c5..d3e097e8005f9 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -33,6 +33,8 @@ import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; +import org.apache.pulsar.common.stats.Metrics; +import org.apache.pulsar.common.stats.MetricsMixIn; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; @@ -71,6 +73,7 @@ private void setInterfaceDefaultMapperModule() { mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); + mapper.addMixIn(Metrics.class, MetricsMixIn.class); module.setAbstractTypes(resolver); mapper.registerModule(module); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/stats/MetricsMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/MetricsMixIn.java new file mode 100644 index 0000000000000..cdf916994ee4c --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/stats/MetricsMixIn.java @@ -0,0 +1,27 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.stats; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonInclude; + +public abstract class MetricsMixIn { + @JsonInclude(content = JsonInclude.Include.NON_EMPTY) + Map dimensions; +} From a966254709232419ca2f6934145e1fc79fd8c6da Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 18:24:04 +0800 Subject: [PATCH 17/51] resolve checkstyle --- pulsar-client-admin-api/pom.xml | 6 +++++ .../client/admin/PulsarAdminException.java | 2 +- .../admin/utils/DefaultImplementation.java | 6 +++-- .../conf/InternalConfigurationData.java | 2 +- .../pulsar/common/functions/package-info.java | 22 +++++++++++++++++++ .../apache/pulsar/common/io/package-info.java | 22 +++++++++++++++++++ .../pulsar/common/naming/package-info.java | 22 +++++++++++++++++++ .../pulsar/common/partition/package-info.java | 22 +++++++++++++++++++ .../policies/data/AutoFailoverPolicyData.java | 2 +- .../AutoSubscriptionCreationOverride.java | 2 +- .../data/AutoTopicCreationOverride.java | 2 +- .../common/policies/data/BacklogQuota.java | 2 +- .../policies/data/BookiesClusterInfo.java | 3 +-- .../common/policies/data/BrokerInfo.java | 2 +- .../common/policies/data/BrokerStatus.java | 8 ++++--- .../common/policies/data/BundlesData.java | 2 +- .../common/policies/data/DispatchRate.java | 2 +- .../common/policies/data/FailureDomain.java | 3 +-- .../policies/data/NamespaceIsolationData.java | 3 +-- .../common/policies/data/OffloadPolicies.java | 3 ++- .../policies/data/PersistencePolicies.java | 2 +- .../pulsar/common/policies/data/Policies.java | 7 ++++-- .../common/policies/data/PublishRate.java | 2 +- .../common/policies/data/RawBookieInfo.java | 0 .../common/policies/data/ResourceQuota.java | 6 +++-- .../common/policies/data/SubscribeRate.java | 2 +- .../common/policies/data/package-info.java | 22 +++++++++++++++++++ .../pulsar/common/policies/package-info.java | 22 +++++++++++++++++++ .../common/protocol/schema/package-info.java | 22 +++++++++++++++++++ .../pulsar/common/stats/package-info.java | 22 +++++++++++++++++++ .../loadbalancer/NamespaceBundleStats.java | 3 +-- .../data/loadbalancer/package-info.java | 22 +++++++++++++++++++ .../client/admin/internal/BookiesImpl.java | 1 - .../admin/internal/JacksonConfigurator.java | 9 +++++--- .../policies/data/FunctionStatusUtil.java | 18 +++++++++++++++ .../policies/data/ResourceQuotaMixIn.java | 18 +++++++++++++++ 36 files changed, 282 insertions(+), 34 deletions(-) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/package-info.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/package-info.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/package-info.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/package-info.java rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java (90%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java (100%) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/package-info.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/package-info.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/package-info.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/package-info.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/package-info.java diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index b7d36ce56aeed..6031b29e817e7 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -58,6 +58,12 @@ provided + + org.slf4j + slf4j-api + provided + + diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java index d18de4495edcf..b4ad9d3264f9a 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java @@ -110,7 +110,7 @@ public ConflictException(Throwable t, String httpError, int statusCode) { */ public static class PreconditionFailedException extends PulsarAdminException { public PreconditionFailedException(Throwable t, String httpError, int statusCode) { - super(t, httpError, statusCode);; + super(t, httpError, statusCode); } } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java index 816057ce6fd6c..0a931ae26f5f8 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java @@ -56,7 +56,9 @@ public static OffloadProcessStatus newOffloadProcessStatus(LongRunningProcessSta status, lastError, messageId)); } - public static AutoFailoverPolicy newAutoFailoverPolicyFromAutoFailoverPolicyFactory(AutoFailoverPolicyData policyData) { - return ReflectionUtils.catchExceptions(() -> (AutoFailoverPolicy) AUTO_FAILOVER_POLICY_FACTORY_create.invoke(policyData)); + public static AutoFailoverPolicy newAutoFailoverPolicyFromAutoFailoverPolicyFactory( + AutoFailoverPolicyData policyData) { + return ReflectionUtils.catchExceptions(() -> + (AutoFailoverPolicy) AUTO_FAILOVER_POLICY_FACTORY_create.invoke(policyData)); } } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java index d05cf446fb4fd..80da3caa4bab7 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.conf; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Internal configuration data. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/package-info.java new file mode 100644 index 0000000000000..d2c8bd8218958 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.functions; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/package-info.java new file mode 100644 index 0000000000000..809ad0dcf9534 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/io/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.io; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/package-info.java new file mode 100644 index 0000000000000..39d55c38269eb --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/naming/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.naming; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/package-info.java new file mode 100644 index 0000000000000..ba27c989725a1 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/partition/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.partition; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java index aef729d8febab..c63b92accb88b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java @@ -18,11 +18,11 @@ */ package org.apache.pulsar.common.policies.data; +import static org.apache.pulsar.client.admin.utils.DefaultImplementation.newAutoFailoverPolicyFromAutoFailoverPolicyFactory; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Map; import java.util.Objects; -import static org.apache.pulsar.client.admin.utils.DefaultImplementation.newAutoFailoverPolicyFromAutoFailoverPolicyFactory; /** * The auto failover policy configuration data. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java index d36abef5db51b..2a57b751b5541 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoSubscriptionCreationOverride.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Override of autoSubscriptionCreation settings on a namespace level. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java index d7ff7af459a9e..750b771182b15 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoTopicCreationOverride.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Override of autoTopicCreation settings on a namespace level. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java index ff9a190f3663b..0bb39d27c0992 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuota.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Unit of a backlog quota configuration for a scoped resource in a Pulsar instance. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java index 5d11372df49b2..e16012e65cbc8 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesClusterInfo.java @@ -18,13 +18,12 @@ */ package org.apache.pulsar.common.policies.data; +import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; -import java.util.List; - /** * Raw bookies information. */ diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java index c194a7867e8e9..7581049d461cd 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerInfo.java @@ -23,7 +23,7 @@ import lombok.NoArgsConstructor; /** - * Broker Information + * Broker Information. */ @Data @AllArgsConstructor diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java index bd7a338677ba7..fb3498edb665d 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerStatus.java @@ -18,7 +18,6 @@ */ package org.apache.pulsar.common.policies.data; -import com.google.common.collect.ComparisonChain; import lombok.EqualsAndHashCode; /** @@ -58,8 +57,11 @@ public void setLoadFactor(int loadFactor) { @Override public int compareTo(BrokerStatus other) { - return ComparisonChain.start().compare(this.loadFactor, other.loadFactor) - .compare(this.brokerAddress, other.brokerAddress).result(); + int result = Integer.compare(this.loadFactor, other.loadFactor); + if (result == 0) { + result = this.brokerAddress.compareTo(other.brokerAddress); + } + return result; } @Override diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java index 9548a0e135f5e..3540a258ec71a 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BundlesData.java @@ -18,9 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.List; import java.util.Objects; +import lombok.ToString; /** * Holder for bundles. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java index 877cc6745e0f6..e9f5f8e413ca7 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/DispatchRate.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Dispatch rate. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java index 3af056e773144..6fce8bd4e8aa7 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java @@ -20,11 +20,10 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.ToString; - import java.util.HashSet; import java.util.Objects; import java.util.Set; +import lombok.ToString; /** * The data of a failure domain configuration in a cluster. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java index e2106d2ece504..56e94db065036 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java @@ -25,7 +25,6 @@ import java.util.Objects; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; - import org.apache.commons.lang3.StringUtils; /** @@ -85,7 +84,7 @@ public boolean equals(Object obj) { } public void validate() { - if(!(namespaces != null && !namespaces.isEmpty() && primary != null && !primary.isEmpty() + if (!(namespaces != null && !namespaces.isEmpty() && primary != null && !primary.isEmpty() && validateRegex(primary) && secondary != null && validateRegex(secondary) && auto_failover_policy != null)) { throw new IllegalArgumentException(); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java index 246100425090c..79f551e7a7705 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -123,7 +123,8 @@ public String getValue() { public final static String OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE = "managedLedgerOffloadAutoTriggerSizeThresholdBytes"; public final static String DELETION_LAG_NAME_IN_CONF_FILE = "managedLedgerOffloadDeletionLagMs"; - public final static OffloadedReadPriority DEFAULT_OFFLOADED_READ_PRIORITY = OffloadedReadPriority.TIERED_STORAGE_FIRST; + public final static OffloadedReadPriority DEFAULT_OFFLOADED_READ_PRIORITY = + OffloadedReadPriority.TIERED_STORAGE_FIRST; // common config @Configuration diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java index 6433ff584e77a..345695040d0f5 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PersistencePolicies.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Configuration of bookkeeper persistence policies. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java index db0d26df2b495..86c0b2b8a19b5 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java @@ -116,10 +116,12 @@ public class Policies { public Integer deduplicationSnapshotIntervalSeconds = null; + @SuppressWarnings("checkstyle:MemberName") public Set subscription_types_enabled = new HashSet<>(); public Map properties = new HashMap<>(); - @SuppressWarnings("checkstype:MemberName") + + @SuppressWarnings("checkstyle:MemberName") public String resource_group_name = null; @Override @@ -177,7 +179,8 @@ public boolean equals(Object obj) { && Objects.equals(max_producers_per_topic, other.max_producers_per_topic) && Objects.equals(max_consumers_per_topic, other.max_consumers_per_topic) && Objects.equals(max_unacked_messages_per_consumer, other.max_unacked_messages_per_consumer) - && Objects.equals(max_unacked_messages_per_subscription, other.max_unacked_messages_per_subscription) + && Objects.equals(max_unacked_messages_per_subscription, + other.max_unacked_messages_per_subscription) && Objects.equals(max_consumers_per_subscription, other.max_consumers_per_subscription) && Objects.equals(compaction_threshold, other.compaction_threshold) && offload_threshold == other.offload_threshold diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java index c00f2caedd9aa..79a3cd5fa75dd 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/PublishRate.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Publish-rate to manage publish throttling. diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/RawBookieInfo.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java index 708c571e48888..c381c1b676990 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuota.java @@ -211,9 +211,11 @@ public int hashCode() { public boolean equals(Object obj) { if (obj instanceof ResourceQuota) { ResourceQuota other = (ResourceQuota) obj; - return Objects.equals(this.msgRateIn, other.msgRateIn) && Objects.equals(this.msgRateOut, other.msgRateOut) + return Objects.equals(this.msgRateIn, other.msgRateIn) + && Objects.equals(this.msgRateOut, other.msgRateOut) && Objects.equals(this.bandwidthIn, other.bandwidthIn) - && Objects.equals(this.bandwidthOut, other.bandwidthOut) && Objects.equals(this.memory, other.memory) + && Objects.equals(this.bandwidthOut, other.bandwidthOut) + && Objects.equals(this.memory, other.memory) && Objects.equals(this.dynamic, other.dynamic); } return false; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java index f14756509a3c6..dc553c6926787 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscribeRate.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.ToString; import java.util.Objects; +import lombok.ToString; /** * Information about subscription rate. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/package-info.java new file mode 100644 index 0000000000000..e27dd7e0e591a --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.policies.data; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/package-info.java new file mode 100644 index 0000000000000..c4c4f9a16f071 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.policies; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/package-info.java new file mode 100644 index 0000000000000..3819274fc324a --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/protocol/schema/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.protocol.schema; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/package-info.java new file mode 100644 index 0000000000000..95ee28e89fe14 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/stats/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.stats; \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java index 9b7763ed0fafc..1a171657df193 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/NamespaceBundleStats.java @@ -18,9 +18,8 @@ */ package org.apache.pulsar.policies.data.loadbalancer; -import lombok.EqualsAndHashCode; - import java.io.Serializable; +import lombok.EqualsAndHashCode; /** */ diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/package-info.java new file mode 100644 index 0000000000000..0639c1aeb5bed --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/policies/data/loadbalancer/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.policies.data.loadbalancer; \ No newline at end of file diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java index abfa13db42755..3d9e19cd1666d 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java @@ -33,7 +33,6 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.BookieInfo; import org.apache.pulsar.common.policies.data.BookiesClusterInfo; -import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; public class BookiesImpl extends BaseResource implements Bookies { private final WebTarget adminBookies; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index d3e097e8005f9..de74df8fa2312 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -70,9 +70,12 @@ private void setInterfaceDefaultMapperModule() { mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); mapper.addMixIn(FunctionStats.class, FunctionStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); mapper.addMixIn(Metrics.class, MetricsMixIn.class); module.setAbstractTypes(resolver); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java index 6830d6de020e1..f2209b0d2919a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatusUtil.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.pulsar.common.policies.data; import org.apache.pulsar.common.util.ObjectMapperFactory; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java index 24f280e3e6db1..2a32f18b10d84 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ResourceQuotaMixIn.java @@ -1,3 +1,21 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.pulsar.common.policies.data; import com.fasterxml.jackson.annotation.JsonIgnore; From f07e17c2b5d671bd6ef3070299f3ecfc00f36e0f Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 19:36:58 +0800 Subject: [PATCH 18/51] minor fix --- .../apache/pulsar/broker/admin/impl/NamespacesBase.java | 1 - .../org/apache/pulsar/broker/admin/v1/Namespaces.java | 2 +- .../org/apache/pulsar/broker/admin/v2/Namespaces.java | 2 +- .../org/apache/pulsar/broker/admin/NamespacesTest.java | 8 ++++++-- .../apache/pulsar/client/admin/internal/BaseResource.java | 2 +- .../pulsar/functions/worker/PulsarWorkerService.java | 2 +- 6 files changed, 10 insertions(+), 7 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 fa3007401e4da..25fe227c218bb 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 @@ -66,7 +66,6 @@ import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.api.proto.CommandSubscribe.SubType; import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.NamespaceBundleFactory; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java index 2fea9259aab8d..bcc989269c42d 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v1/Namespaces.java @@ -19,7 +19,7 @@ package org.apache.pulsar.broker.admin.v1; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.google.common.collect.Lists; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java index c153ac40227c3..bad90198e91b4 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.broker.admin.v2; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; 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 7cc39efcdecc4..7641263914343 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 @@ -72,6 +72,7 @@ import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; +import org.apache.pulsar.client.admin.internal.BaseResource; import org.apache.pulsar.client.api.Consumer; import org.apache.pulsar.client.api.ConsumerBuilder; import org.apache.pulsar.client.api.Producer; @@ -800,8 +801,11 @@ public boolean matches(NamespaceBundle bundle) { })); CompletableFuture preconditionFailed = new CompletableFuture<>(); - preconditionFailed.completeExceptionally(new PulsarAdminException.PreconditionFailedException( - new ClientErrorException(Status.PRECONDITION_FAILED))); + ClientErrorException cee = new ClientErrorException(Status.PRECONDITION_FAILED); + int statusCode = cee.getResponse().getStatus(); + String httpError = BaseResource.getReasonFromServer(cee); + preconditionFailed.completeExceptionally(new PulsarAdminException.PreconditionFailedException(cee, + httpError, statusCode)); doReturn(preconditionFailed).when(namespacesAdmin) .deleteNamespaceBundleAsync(Mockito.anyString(), Mockito.anyString()); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java index 8316f367b9437..e186299e4973b 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java @@ -265,7 +265,7 @@ public PulsarAdminException getApiException(Response response) { } } - private static String getReasonFromServer(WebApplicationException e) { + public static String getReasonFromServer(WebApplicationException e) { try { return e.getResponse().readEntity(ErrorData.class).reason.toString(); } catch (Exception ex) { diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java index d15a59496a504..cddf8bc60f0da 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java @@ -19,7 +19,7 @@ package org.apache.pulsar.functions.worker; import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES; -import static org.apache.pulsar.common.policies.data.Policies.getBundles; +import static org.apache.pulsar.common.policies.data.PoliciesUtil.getBundles; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; From d3417dd4dd6d37d44795c8f2978bd577a3928b0a Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 20:10:40 +0800 Subject: [PATCH 19/51] Transactions.java --- .../pulsar/common/policies/data/TransactionCoordinatorStatus.java | 0 .../pulsar/common/policies/data/TransactionInBufferStats.java | 0 .../pulsar/common/policies/data/TransactionInPendingAckStats.java | 0 .../apache/pulsar/common/policies/data/TransactionMetadata.java | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java (100%) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStatus.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInBufferStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java From dfa57a0d00f8bd54b116fbed1b7a112a8aed1ddc Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 20:13:32 +0800 Subject: [PATCH 20/51] fix stylecheck --- .../common/policies/data/TransactionInPendingAckStats.java | 2 -- .../apache/pulsar/common/policies/data/TransactionMetadata.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java index 44beada7cecb3..12383b94d5a9b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionInPendingAckStats.java @@ -20,8 +20,6 @@ import lombok.Data; -import java.util.List; - @Data public class TransactionInPendingAckStats { diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java index fd2d27fcc440e..4f987014c7413 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionMetadata.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import lombok.Data; import java.util.Map; +import lombok.Data; @Data public class TransactionMetadata { From f729a565e3465539577155ecfa5cd9e7ab917f2b Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 21:02:17 +0800 Subject: [PATCH 21/51] set ObjectMapper module --- .../common/util/ObjectMapperFactory.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 6e7a94ecd0438..daea4eb0e2d11 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -21,8 +21,24 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver; +import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import io.netty.util.concurrent.FastThreadLocal; +import org.apache.pulsar.client.admin.OffloadProcessStatus; +import org.apache.pulsar.common.functions.FunctionConfig; +import org.apache.pulsar.common.functions.FunctionState; +import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; +import org.apache.pulsar.common.policies.data.BacklogQuota; +import org.apache.pulsar.common.policies.data.BacklogQuotaDeserializer; +import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; +import org.apache.pulsar.common.policies.data.ResourceQuota; +import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; +import org.apache.pulsar.common.stats.Metrics; +import org.apache.pulsar.common.stats.MetricsMixIn; +import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; +import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; @SuppressWarnings("checkstyle:JavadocType") public class ObjectMapperFactory { @@ -32,6 +48,7 @@ public static ObjectMapper create() { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true); mapper.setSerializationInclusion(Include.NON_NULL); + setAnnotationsModule(mapper); return mapper; } @@ -41,6 +58,7 @@ public static ObjectMapper createYaml() { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true); mapper.setSerializationInclusion(Include.NON_NULL); + setAnnotationsModule(mapper); return mapper; } @@ -66,4 +84,28 @@ public static ObjectMapper getThreadLocalYaml() { return YAML_MAPPER.get(); } + private static void setAnnotationsModule(ObjectMapper mapper) { + SimpleModule module = new SimpleModule("AnnotationsModule"); + + // we use customized deserializer to replace jackson annotations in some POJOs + module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); + module.addDeserializer(BacklogQuota.class, new BacklogQuotaDeserializer()); + + // we use MixIn class to add jackson annotations + mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); + mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(FunctionStats.class, FunctionStatsMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); + mapper.addMixIn(Metrics.class, MetricsMixIn.class); + + mapper.registerModule(module); + } + + } From c52b2105eb72478a20026092e365bd459bb72ad5 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Tue, 25 May 2021 21:41:57 +0800 Subject: [PATCH 22/51] fix ci --- .../admin/utils/DefaultImplementation.java | 12 ---- .../policies/data/AutoFailoverPolicyData.java | 4 +- .../common/policies/data/OffloadPolicies.java | 56 +++++++++---------- .../impl/AutoFailoverPolicyFactory.java | 0 .../policies/impl/MinAvailablePolicy.java | 19 ++++--- .../common/policies/impl/package-info.java | 22 ++++++++ .../admin/internal/JacksonConfigurator.java | 47 ---------------- .../data/BacklogQuotaDeserializer.java | 46 --------------- .../policies/data/BacklogQuotaMixIn.java | 26 +++++++++ .../common/util/ObjectMapperFactory.java | 6 +- 10 files changed, 92 insertions(+), 146 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java (84%) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/package-info.java delete mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaMixIn.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java index 0a931ae26f5f8..ecd8d1f13a6aa 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/utils/DefaultImplementation.java @@ -19,14 +19,11 @@ package org.apache.pulsar.client.admin.utils; import java.lang.reflect.Constructor; -import java.lang.reflect.Method; import lombok.experimental.UtilityClass; import org.apache.pulsar.client.admin.LongRunningProcessStatus; import org.apache.pulsar.client.admin.OffloadProcessStatus; import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.client.api.MessageId; -import org.apache.pulsar.common.policies.AutoFailoverPolicy; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; /** * Helper class for class instantiations and it also contains methods to work with schemas. @@ -42,10 +39,6 @@ public class DefaultImplementation { "org.apache.pulsar.client.admin.internal.OffloadProcessStatusImpl", LongRunningProcessStatus.Status.class, String.class, MessageId.class); - private static final Method AUTO_FAILOVER_POLICY_FACTORY_create = ReflectionUtils.getStaticMethod( - "org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory", - "create", AutoFailoverPolicyData.class); - public static PulsarAdminBuilder newAdminClientBuilder() { return ReflectionUtils.catchExceptions(() -> ADMIN_CLIENT_BUILDER_IMPL.newInstance()); } @@ -56,9 +49,4 @@ public static OffloadProcessStatus newOffloadProcessStatus(LongRunningProcessSta status, lastError, messageId)); } - public static AutoFailoverPolicy newAutoFailoverPolicyFromAutoFailoverPolicyFactory( - AutoFailoverPolicyData policyData) { - return ReflectionUtils.catchExceptions(() -> - (AutoFailoverPolicy) AUTO_FAILOVER_POLICY_FACTORY_create.invoke(policyData)); - } } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java index c63b92accb88b..10136b7cd789b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java @@ -18,11 +18,11 @@ */ package org.apache.pulsar.common.policies.data; -import static org.apache.pulsar.client.admin.utils.DefaultImplementation.newAutoFailoverPolicyFromAutoFailoverPolicyFactory; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Map; import java.util.Objects; +import org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory; /** * The auto failover policy configuration data. @@ -75,7 +75,7 @@ public void validate() { if (!(policy_type != null && parameters != null)){ throw new IllegalArgumentException(); } - newAutoFailoverPolicyFromAutoFailoverPolicyFactory(this); + AutoFailoverPolicyFactory.create(this); } @Override diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java index 79f551e7a7705..7cd5904205f85 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -128,95 +128,95 @@ public String getValue() { // common config @Configuration - private String offloadersDirectory = DEFAULT_OFFLOADER_DIRECTORY; + String offloadersDirectory = DEFAULT_OFFLOADER_DIRECTORY; @Configuration - private String managedLedgerOffloadDriver = null; + String managedLedgerOffloadDriver = null; @Configuration - private Integer managedLedgerOffloadMaxThreads = DEFAULT_OFFLOAD_MAX_THREADS; + Integer managedLedgerOffloadMaxThreads = DEFAULT_OFFLOAD_MAX_THREADS; @Configuration - private Integer managedLedgerOffloadPrefetchRounds = DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS; + Integer managedLedgerOffloadPrefetchRounds = DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS; @Configuration - private Long managedLedgerOffloadThresholdInBytes = DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; + Long managedLedgerOffloadThresholdInBytes = DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; @Configuration - private Long managedLedgerOffloadDeletionLagInMillis = DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; + Long managedLedgerOffloadDeletionLagInMillis = DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; @Configuration - private OffloadedReadPriority managedLedgerOffloadedReadPriority = DEFAULT_OFFLOADED_READ_PRIORITY; + OffloadedReadPriority managedLedgerOffloadedReadPriority = DEFAULT_OFFLOADED_READ_PRIORITY; // s3 config, set by service configuration or cli @Configuration - private String s3ManagedLedgerOffloadRegion = null; + String s3ManagedLedgerOffloadRegion = null; @Configuration - private String s3ManagedLedgerOffloadBucket = null; + String s3ManagedLedgerOffloadBucket = null; @Configuration - private String s3ManagedLedgerOffloadServiceEndpoint = null; + String s3ManagedLedgerOffloadServiceEndpoint = null; @Configuration - private Integer s3ManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + Integer s3ManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; @Configuration - private Integer s3ManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + Integer s3ManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; // s3 config, set by service configuration @Configuration - private String s3ManagedLedgerOffloadCredentialId = null; + String s3ManagedLedgerOffloadCredentialId = null; @Configuration - private String s3ManagedLedgerOffloadCredentialSecret = null; + String s3ManagedLedgerOffloadCredentialSecret = null; @Configuration - private String s3ManagedLedgerOffloadRole = null; + String s3ManagedLedgerOffloadRole = null; @Configuration - private String s3ManagedLedgerOffloadRoleSessionName = "pulsar-s3-offload"; + String s3ManagedLedgerOffloadRoleSessionName = "pulsar-s3-offload"; // gcs config, set by service configuration or cli @Configuration - private String gcsManagedLedgerOffloadRegion = null; + String gcsManagedLedgerOffloadRegion = null; @Configuration - private String gcsManagedLedgerOffloadBucket = null; + String gcsManagedLedgerOffloadBucket = null; @Configuration - private Integer gcsManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + Integer gcsManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; @Configuration - private Integer gcsManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + Integer gcsManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; // gcs config, set by service configuration @Configuration - private String gcsManagedLedgerOffloadServiceAccountKeyFile = null; + String gcsManagedLedgerOffloadServiceAccountKeyFile = null; // file system config, set by service configuration @Configuration - private String fileSystemProfilePath = null; + String fileSystemProfilePath = null; @Configuration - private String fileSystemURI = null; + String fileSystemURI = null; // --------- new offload configurations --------- // they are universal configurations and could be used to `aws-s3`, `google-cloud-storage` or `azureblob`. @Configuration - private String managedLedgerOffloadBucket; + String managedLedgerOffloadBucket; @Configuration - private String managedLedgerOffloadRegion; + String managedLedgerOffloadRegion; @Configuration - private String managedLedgerOffloadServiceEndpoint; + String managedLedgerOffloadServiceEndpoint; @Configuration - private Integer managedLedgerOffloadMaxBlockSizeInBytes; + Integer managedLedgerOffloadMaxBlockSizeInBytes; @Configuration - private Integer managedLedgerOffloadReadBufferSizeInBytes; + Integer managedLedgerOffloadReadBufferSizeInBytes; void compatibleWithBrokerConfigFile(Properties properties) { if (!properties.containsKey("managedLedgerOffloadThresholdInBytes") diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java similarity index 84% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java index 85af797235c46..1688859ab3119 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java @@ -18,8 +18,7 @@ */ package org.apache.pulsar.common.policies.impl; -import static com.google.common.base.Preconditions.checkArgument; -import com.google.common.base.Objects; +import java.util.Objects; import java.util.SortedSet; import org.apache.pulsar.common.policies.AutoFailoverPolicy; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; @@ -45,23 +44,29 @@ public class MinAvailablePolicy extends AutoFailoverPolicy { } public MinAvailablePolicy(AutoFailoverPolicyData policyData) { - checkArgument(policyData.policy_type.equals(AutoFailoverPolicyType.min_available)); - checkArgument(policyData.parameters.containsKey(MIN_LIMIT_KEY)); - checkArgument(policyData.parameters.containsKey(USAGE_THRESHOLD_KEY)); + if (!policyData.policy_type.equals(AutoFailoverPolicyType.min_available)) { + throw new IllegalArgumentException(); + } + if (!policyData.parameters.containsKey(MIN_LIMIT_KEY)) { + throw new IllegalArgumentException(); + } + if (!policyData.parameters.containsKey(USAGE_THRESHOLD_KEY)) { + throw new IllegalArgumentException(); + } this.min_limit = Integer.parseInt(policyData.parameters.get(MIN_LIMIT_KEY)); this.usage_threshold = Integer.parseInt(policyData.parameters.get(USAGE_THRESHOLD_KEY)); } @Override public int hashCode() { - return Objects.hashCode(min_limit, usage_threshold); + return Objects.hash(min_limit, usage_threshold); } @Override public boolean equals(Object obj) { if (obj instanceof MinAvailablePolicy) { MinAvailablePolicy other = (MinAvailablePolicy) obj; - return Objects.equal(min_limit, other.min_limit) && Objects.equal(usage_threshold, other.usage_threshold); + return Objects.equals(min_limit, other.min_limit) && Objects.equals(usage_threshold, other.usage_threshold); } return false; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/package-info.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/package-info.java new file mode 100644 index 0000000000000..47e3597d14cdf --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/package-info.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +/** + * Implementation of policies. + */ +package org.apache.pulsar.common.policies.impl; \ No newline at end of file diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index de74df8fa2312..979e5b03fd335 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -19,25 +19,9 @@ package org.apache.pulsar.client.admin.internal; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver; -import com.fasterxml.jackson.databind.module.SimpleModule; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; -import org.apache.pulsar.client.admin.OffloadProcessStatus; -import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; -import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.BacklogQuotaDeserializer; -import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; -import org.apache.pulsar.common.policies.data.ResourceQuota; -import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; -import org.apache.pulsar.common.stats.Metrics; -import org.apache.pulsar.common.stats.MetricsMixIn; import org.apache.pulsar.common.util.ObjectMapperFactory; -import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; -import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; /** * Provides custom configuration for jackson. @@ -49,37 +33,6 @@ public class JacksonConfigurator implements ContextResolver { public JacksonConfigurator() { mapper = ObjectMapperFactory.create(); - setInterfaceDefaultMapperModule(); - } - - private void setInterfaceDefaultMapperModule() { - SimpleModule module = new SimpleModule("InterfaceDefaultMapperModule"); - - // we not specific @JsonDeserialize annotation in OffloadProcessStatus - // because we do not want to have jackson dependency in pulsar-client-admin-api - // In this case we use SimpleAbstractTypeResolver to map interfaces to impls - SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); - resolver.addMapping(OffloadProcessStatus.class, OffloadProcessStatusImpl.class); - - // we use customized deserializer to replace jackson annotations in some POJOs - module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); - module.addDeserializer(BacklogQuota.class, new BacklogQuotaDeserializer()); - - // we use MixIn class to add jackson annotations - mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); - mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); - mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); - mapper.addMixIn(FunctionStats.class, FunctionStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); - mapper.addMixIn(Metrics.class, MetricsMixIn.class); - - module.setAbstractTypes(resolver); - mapper.registerModule(module); } @Override diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java deleted file mode 100644 index 27dedd542cfc3..0000000000000 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaDeserializer.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.pulsar.common.policies.data; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.apache.pulsar.common.util.ObjectMapperFactory; -import java.io.IOException; - -/** - * Deserializer for a backlog quota. - */ -public class BacklogQuotaDeserializer extends JsonDeserializer { - - @Override - public BacklogQuota deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) - throws IOException, JsonProcessingException { - ObjectMapper mapper = ObjectMapperFactory.getThreadLocal(); - ObjectNode root = ObjectMapperFactory.getThreadLocal().readTree(jsonParser); - BacklogQuota backlogQuota = mapper.readValue(root.toString(), BacklogQuota.class); - if (root.has("limit")) { - backlogQuota.setLimitSize(root.get("limit").asLong()); - } - return backlogQuota; - } -} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaMixIn.java new file mode 100644 index 0000000000000..a1562400f0818 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BacklogQuotaMixIn.java @@ -0,0 +1,26 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonAlias; + +public abstract class BacklogQuotaMixIn { + @JsonAlias("limit") + private long limitSize; +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index daea4eb0e2d11..e83fae2c48070 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -21,16 +21,14 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import io.netty.util.concurrent.FastThreadLocal; -import org.apache.pulsar.client.admin.OffloadProcessStatus; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.BacklogQuotaDeserializer; +import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; import org.apache.pulsar.common.policies.data.ResourceQuota; @@ -89,9 +87,9 @@ private static void setAnnotationsModule(ObjectMapper mapper) { // we use customized deserializer to replace jackson annotations in some POJOs module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); - module.addDeserializer(BacklogQuota.class, new BacklogQuotaDeserializer()); // we use MixIn class to add jackson annotations + mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); From 07ac7420d7d25489e9efc1ccb1109a94f35a3378 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Wed, 26 May 2021 14:18:29 +0800 Subject: [PATCH 23/51] fix PulsarAdminException --- .../client/admin/PulsarAdminException.java | 10 ++-- .../client/admin/internal/BaseResource.java | 4 +- .../admin/internal/JacksonConfigurator.java | 47 +++++++++++++++++++ 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java index b4ad9d3264f9a..041f8a659f46e 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/PulsarAdminException.java @@ -74,7 +74,7 @@ public int getStatusCode() { */ public static class NotAuthorizedException extends PulsarAdminException { public NotAuthorizedException(Throwable t, String httpError, int statusCode) { - super(t, httpError, statusCode); + super(httpError, t, httpError, statusCode); } } @@ -83,7 +83,7 @@ public NotAuthorizedException(Throwable t, String httpError, int statusCode) { */ public static class NotFoundException extends PulsarAdminException { public NotFoundException(Throwable t, String httpError, int statusCode) { - super(t, httpError, statusCode); + super(httpError, t, httpError, statusCode); } } @@ -92,7 +92,7 @@ public NotFoundException(Throwable t, String httpError, int statusCode) { */ public static class NotAllowedException extends PulsarAdminException { public NotAllowedException(Throwable t, String httpError, int statusCode) { - super(t, httpError, statusCode); + super(httpError, t, httpError, statusCode); } } @@ -101,7 +101,7 @@ public NotAllowedException(Throwable t, String httpError, int statusCode) { */ public static class ConflictException extends PulsarAdminException { public ConflictException(Throwable t, String httpError, int statusCode) { - super(t, httpError, statusCode); + super(httpError, t, httpError, statusCode); } } @@ -110,7 +110,7 @@ public ConflictException(Throwable t, String httpError, int statusCode) { */ public static class PreconditionFailedException extends PulsarAdminException { public PreconditionFailedException(Throwable t, String httpError, int statusCode) { - super(t, httpError, statusCode); + super(httpError, t, httpError, statusCode); } } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java index e186299e4973b..ae9b0c3652876 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java @@ -235,13 +235,13 @@ public PulsarAdminException getApiException(Throwable e) { case 412: return new PreconditionFailedException(cee, httpError, statusCode); default: - return new PulsarAdminException(cee, httpError, statusCode); + return new PulsarAdminException(httpError, cee, httpError, statusCode); } } else { WebApplicationException wae = (WebApplicationException) e; int statusCode = wae.getResponse().getStatus(); String httpError = getReasonFromServer(wae); - return new PulsarAdminException(wae, httpError, statusCode); + return new PulsarAdminException(httpError, wae, httpError, statusCode); } } else { return new PulsarAdminException(e); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index 979e5b03fd335..87364e21ac855 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -19,9 +19,25 @@ package org.apache.pulsar.client.admin.internal; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver; +import com.fasterxml.jackson.databind.module.SimpleModule; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; +import org.apache.pulsar.client.admin.OffloadProcessStatus; +import org.apache.pulsar.common.functions.FunctionConfig; +import org.apache.pulsar.common.functions.FunctionState; +import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; +import org.apache.pulsar.common.policies.data.BacklogQuota; +import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; +import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; +import org.apache.pulsar.common.policies.data.ResourceQuota; +import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; +import org.apache.pulsar.common.stats.Metrics; +import org.apache.pulsar.common.stats.MetricsMixIn; import org.apache.pulsar.common.util.ObjectMapperFactory; +import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; +import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; /** * Provides custom configuration for jackson. @@ -33,6 +49,37 @@ public class JacksonConfigurator implements ContextResolver { public JacksonConfigurator() { mapper = ObjectMapperFactory.create(); + setInterfaceDefaultMapperModule(); + } + + private void setInterfaceDefaultMapperModule() { + SimpleModule module = new SimpleModule("InterfaceDefaultMapperModule"); + + // we not specific @JsonDeserialize annotation in OffloadProcessStatus + // because we do not want to have jackson dependency in pulsar-client-admin-api + // In this case we use SimpleAbstractTypeResolver to map interfaces to impls + SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); + resolver.addMapping(OffloadProcessStatus.class, OffloadProcessStatusImpl.class); + + // we use customized deserializer to replace jackson annotations in some POJOs + module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); + + // we use MixIn class to add jackson annotations + mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); + mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); + mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); + mapper.addMixIn(FunctionStats.class, FunctionStatsMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); + mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, + FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); + mapper.addMixIn(Metrics.class, MetricsMixIn.class); + + module.setAbstractTypes(resolver); + mapper.registerModule(module); } @Override From 4bbb25240294ffe5f45b0d1594ce7908083a650d Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 10:21:00 +0800 Subject: [PATCH 24/51] remove gson --- .../broker/service/BrokerServiceTest.java | 7 ++-- .../api/SimpleProducerConsumerStatTest.java | 4 ++- pulsar-client-admin-api/pom.xml | 6 ---- .../pulsar/client/admin/BrokerStats.java | 18 +++++----- .../pulsar/client/admin/ProxyStats.java | 7 ++-- .../admin/internal/BrokerStatsImpl.java | 33 +++++++++---------- .../client/admin/internal/ProxyStatsImpl.java | 11 +++---- .../pulsar/admin/cli/CmdBrokerStats.java | 9 +++-- .../pulsar/admin/cli/CmdProxyStats.java | 6 ++-- 9 files changed, 48 insertions(+), 53 deletions(-) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java index 96272348eeb23..380786abd726a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java @@ -30,6 +30,7 @@ import static org.testng.Assert.fail; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.io.BufferedReader; @@ -366,7 +367,8 @@ public void testBrokerStatsMetrics() throws Exception { } consumer.close(); Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT); - JsonArray metrics = brokerStatsClient.getMetrics(); + String json = brokerStatsClient.getMetrics(); + JsonArray metrics = new Gson().fromJson(json, JsonArray.class); // these metrics seem to be arriving in different order at different times... // is the order really relevant here? @@ -414,7 +416,8 @@ public void testBrokerServiceNamespaceStats() throws Exception { } rolloverPerIntervalStats(); - JsonObject topicStats = brokerStatsClient.getTopics(); + String json = brokerStatsClient.getTopics(); + JsonObject topicStats = new Gson().fromJson(json, JsonObject.class); assertEquals(topicStats.size(), 2, topicStats.toString()); for (String ns : nsList) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java index 17d4b056c8408..106a6e9cc7aba 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java @@ -33,6 +33,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import com.google.gson.Gson; import org.apache.pulsar.broker.stats.NamespaceStats; import org.apache.pulsar.client.admin.PulsarAdminException; import org.slf4j.Logger; @@ -394,7 +395,8 @@ public void testAddBrokerLatencyStats() throws Exception { pulsar.getBrokerService().updateRates(); - JsonArray metrics = admin.brokerStats().getMetrics(); + String json = admin.brokerStats().getMetrics(); + JsonArray metrics = new Gson().fromJson(json, JsonArray.class); boolean latencyCaptured = false; for (int i = 0; i < metrics.size(); i++) { diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index 6031b29e817e7..38e2d55727f26 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -40,12 +40,6 @@ ${project.version} - - com.google.code.gson - gson - provided - - io.swagger swagger-annotations diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java index eb4e2327d52da..100ba1056d5fa 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/BrokerStats.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.client.admin; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import java.util.concurrent.CompletableFuture; import org.apache.pulsar.common.stats.AllocatorStats; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -36,7 +34,7 @@ public interface BrokerStats { * @throws PulsarAdminException */ - JsonArray getMetrics() throws PulsarAdminException; + String getMetrics() throws PulsarAdminException; /** * Returns Monitoring metrics asynchronously. @@ -44,7 +42,7 @@ public interface BrokerStats { * @return */ - CompletableFuture getMetricsAsync(); + CompletableFuture getMetricsAsync(); /** * Requests JSON string server mbean dump. @@ -54,7 +52,7 @@ public interface BrokerStats { * @return * @throws PulsarAdminException */ - JsonArray getMBeans() throws PulsarAdminException; + String getMBeans() throws PulsarAdminException; /** * Requests JSON string server mbean dump asynchronously. @@ -63,7 +61,7 @@ public interface BrokerStats { * * @return */ - CompletableFuture getMBeansAsync(); + CompletableFuture getMBeansAsync(); /** * Returns JSON string topics stats. @@ -73,7 +71,7 @@ public interface BrokerStats { * @return * @throws PulsarAdminException */ - JsonObject getTopics() throws PulsarAdminException; + String getTopics() throws PulsarAdminException; /** * Returns JSON string topics stats asynchronously. @@ -82,7 +80,7 @@ public interface BrokerStats { * * @return */ - CompletableFuture getTopicsAsync(); + CompletableFuture getTopicsAsync(); /** * Get pending bookie client op stats by namespace. @@ -92,7 +90,7 @@ public interface BrokerStats { * @return * @throws PulsarAdminException */ - JsonObject getPendingBookieOpsStats() throws PulsarAdminException; + String getPendingBookieOpsStats() throws PulsarAdminException; /** * Get pending bookie client op stats by namespace asynchronously. @@ -101,7 +99,7 @@ public interface BrokerStats { * * @return */ - CompletableFuture getPendingBookieOpsStatsAsync(); + CompletableFuture getPendingBookieOpsStatsAsync(); /** * Get the stats for the Netty allocator. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java index d5eeee741b6b7..66eb411ee3720 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/ProxyStats.java @@ -18,9 +18,6 @@ */ package org.apache.pulsar.client.admin; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - /** * Admin interface for proxy stats management. */ @@ -33,7 +30,7 @@ public interface ProxyStats { * @throws PulsarAdminException */ - JsonArray getConnections() throws PulsarAdminException; + String getConnections() throws PulsarAdminException; /** * Returns Topics metrics. @@ -41,5 +38,5 @@ public interface ProxyStats { * @return * @throws PulsarAdminException */ - JsonObject getTopics() throws PulsarAdminException; + String getTopics() throws PulsarAdminException; } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java index f39b8573dcbca..e31958b96879a 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BrokerStatsImpl.java @@ -19,7 +19,6 @@ package org.apache.pulsar.client.admin.internal; import com.google.gson.Gson; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -50,7 +49,7 @@ public BrokerStatsImpl(WebTarget target, Authentication auth, long readTimeoutMs } @Override - public JsonArray getMetrics() throws PulsarAdminException { + public String getMetrics() throws PulsarAdminException { try { return getMetricsAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -64,14 +63,14 @@ public JsonArray getMetrics() throws PulsarAdminException { } @Override - public CompletableFuture getMetricsAsync() { + public CompletableFuture getMetricsAsync() { WebTarget path = adminV2BrokerStats.path("/metrics"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonArray.class)); + future.complete(s); } @Override @@ -116,7 +115,7 @@ public void failed(Throwable throwable) { } @Override - public JsonArray getMBeans() throws PulsarAdminException { + public String getMBeans() throws PulsarAdminException { try { return getMBeansAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -130,14 +129,14 @@ public JsonArray getMBeans() throws PulsarAdminException { } @Override - public CompletableFuture getMBeansAsync() { + public CompletableFuture getMBeansAsync() { WebTarget path = adminV2BrokerStats.path("/mbeans"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonArray.class)); + future.complete(s); } @Override @@ -149,7 +148,7 @@ public void failed(Throwable throwable) { } @Override - public JsonObject getTopics() throws PulsarAdminException { + public String getTopics() throws PulsarAdminException { try { return getTopicsAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -163,14 +162,14 @@ public JsonObject getTopics() throws PulsarAdminException { } @Override - public CompletableFuture getTopicsAsync() { + public CompletableFuture getTopicsAsync() { WebTarget path = adminV2BrokerStats.path("/topics"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonObject.class)); + future.complete(s); } @Override @@ -215,7 +214,7 @@ public void failed(Throwable throwable) { } @Override - public JsonObject getPendingBookieOpsStats() throws PulsarAdminException { + public String getPendingBookieOpsStats() throws PulsarAdminException { try { return getPendingBookieOpsStatsAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -229,14 +228,14 @@ public JsonObject getPendingBookieOpsStats() throws PulsarAdminException { } @Override - public CompletableFuture getPendingBookieOpsStatsAsync() { + public CompletableFuture getPendingBookieOpsStatsAsync() { WebTarget path = adminV2BrokerStats.path("/bookieops"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(String s) { - future.complete(new Gson().fromJson(s, JsonObject.class)); + future.complete(s); } @Override diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java index ac84d74f8e93c..084e3b65dbc6a 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ProxyStatsImpl.java @@ -18,9 +18,6 @@ */ package org.apache.pulsar.client.admin.internal; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import javax.ws.rs.client.WebTarget; import org.apache.pulsar.client.admin.ProxyStats; import org.apache.pulsar.client.admin.PulsarAdminException; @@ -41,20 +38,20 @@ public ProxyStatsImpl(WebTarget target, Authentication auth, long readTimeoutMs) } @Override - public JsonArray getConnections() throws PulsarAdminException { + public String getConnections() throws PulsarAdminException { try { String json = request(adminProxyStats.path("/connections")).get(String.class); - return new Gson().fromJson(json, JsonArray.class); + return json; } catch (Exception e) { throw getApiException(e); } } @Override - public JsonObject getTopics() throws PulsarAdminException { + public String getTopics() throws PulsarAdminException { try { String json = request(adminProxyStats.path("/topics")).get(String.class); - return new Gson().fromJson(json, JsonObject.class); + return json; } catch (Exception e) { throw getApiException(e); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java index 0b2943aac5552..03d8bd577cdd6 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBrokerStats.java @@ -49,7 +49,8 @@ private class CmdMonitoringMetrics extends CliCommand { @Override void run() throws Exception { - JsonArray metrics = getAdmin().brokerStats().getMetrics(); + String s = getAdmin().brokerStats().getMetrics(); + JsonArray metrics = new Gson().fromJson(s, JsonArray.class); try (Writer out = new OutputStreamWriter(System.out, StandardCharsets.UTF_8); JsonWriter jsonWriter = new JsonWriter(out)) { @@ -76,7 +77,8 @@ private class CmdDumpMBeans extends CliCommand { @Override void run() throws Exception { - JsonArray result = getAdmin().brokerStats().getMBeans(); + String s = getAdmin().brokerStats().getMBeans(); + JsonArray result = new Gson().fromJson(s, JsonArray.class); try (Writer out = new OutputStreamWriter(System.out, StandardCharsets.UTF_8); JsonWriter jsonWriter = new JsonWriter(out)) { if (indent) { @@ -105,7 +107,8 @@ private class CmdTopics extends CliCommand { @Override void run() throws Exception { - JsonObject result = getAdmin().brokerStats().getTopics(); + String s = getAdmin().brokerStats().getTopics(); + JsonObject result = new Gson().fromJson(s, JsonObject.class); try (Writer out = new OutputStreamWriter(System.out, StandardCharsets.UTF_8); JsonWriter jsonWriter = new JsonWriter(out)) { if (indent) { diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java index f661ee12321eb..3bb1e5e537f60 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdProxyStats.java @@ -41,7 +41,8 @@ private class CmdConnectionMetrics extends CliCommand { @Override void run() throws Exception { - JsonArray stats = getAdmin().proxyStats().getConnections(); + String json = getAdmin().proxyStats().getConnections(); + JsonArray stats = new Gson().fromJson(json, JsonArray.class); printStats(stats, indent); } } @@ -53,7 +54,8 @@ private class CmdTopicsMetrics extends CliCommand { @Override void run() throws Exception { - JsonObject stats = getAdmin().proxyStats().getTopics(); + String json = getAdmin().proxyStats().getTopics(); + JsonObject stats = new Gson().fromJson(json, JsonObject.class); printStats(stats, indent); } } From 5e85d34133f4a02de1177f024447a4cd9b7ac985 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 15:09:14 +0800 Subject: [PATCH 25/51] remove swagger --- .../pulsar/broker/admin/AdminApiTest.java | 5 +- .../broker/admin/v1/V1_AdminApiTest.java | 6 +- .../apache/pulsar/client/admin/Clusters.java | 35 +++++----- .../apache/pulsar/client/admin/Functions.java | 10 +-- .../org/apache/pulsar/client/admin/Sinks.java | 13 ++-- .../apache/pulsar/client/admin/Sources.java | 11 +-- .../functions/UpdateOptionsInterface.java | 25 +++++++ .../policies/data/ClusterDataInterface.java | 60 ++++++++++++++++ .../data/NamespaceIsolationDataInterface.java | 41 +++++++++++ .../client/admin/internal/ClustersImpl.java | 50 ++++++++------ .../client/admin/internal/FunctionsImpl.java | 20 +++--- .../client/admin/internal/SinksImpl.java | 19 ++--- .../client/admin/internal/SourcesImpl.java | 19 ++--- .../cli/CmdNamespaceIsolationPolicy.java | 6 +- .../common/functions/UpdateOptions.java | 6 +- .../common/policies/data/ClusterData.java | 69 +++++++++++-------- .../policies/data/NamespaceIsolationData.java | 57 +++++++-------- 17 files changed, 309 insertions(+), 143 deletions(-) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsInterface.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataInterface.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java (88%) rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java (77%) rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java (63%) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index ad57d7a7790da..54f1186a2bec7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -115,6 +115,7 @@ import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; @@ -309,7 +310,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("test", policyName2, nsPolicyData2); // verify create indirectly with get - Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("test"); + Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("test"); assertEquals(policiesMap.get(policyName1), nsPolicyData1); assertEquals(policiesMap.get(policyName2), nsPolicyData2); @@ -348,7 +349,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName1), nsPolicyData1); // verify single get - NamespaceIsolationData policy1Data = admin.clusters().getNamespaceIsolationPolicy("test", policyName1); + NamespaceIsolationData policy1Data = (NamespaceIsolationData) admin.clusters().getNamespaceIsolationPolicy("test", policyName1); assertEquals(policy1Data, nsPolicyData1); // verify creation of more than one policy diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 06d7d87928a3c..5925575dc89c4 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -91,6 +91,7 @@ import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -279,7 +280,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("use", policyName2, nsPolicyData2); // verify create indirectly with get - Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("use"); + Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("use"); assertEquals(policiesMap.get(policyName1), nsPolicyData1); assertEquals(policiesMap.get(policyName2), nsPolicyData2); @@ -323,7 +324,8 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName1), nsPolicyData1); // verify single get - NamespaceIsolationData policy1Data = admin.clusters().getNamespaceIsolationPolicy("use", policyName1); + NamespaceIsolationData policy1Data = + (NamespaceIsolationData) admin.clusters().getNamespaceIsolationPolicy("use", policyName1); assertEquals(policy1Data, nsPolicyData1); // verify creation of more than one policy diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java index df5d08932f0db..aa92098dd440c 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java @@ -28,9 +28,9 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; /** * Admin interface for clusters management. @@ -89,7 +89,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - ClusterData getCluster(String cluster) throws PulsarAdminException; + ClusterDataInterface getCluster(String cluster) throws PulsarAdminException; /** * Get the configuration data for the specified cluster asynchronously. @@ -106,7 +106,7 @@ public interface Clusters { * @return the cluster configuration * */ - CompletableFuture getClusterAsync(String cluster); + CompletableFuture getClusterAsync(String cluster); /** * Create a new cluster. @@ -127,7 +127,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - void createCluster(String cluster, ClusterData clusterData) throws PulsarAdminException; + void createCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException; /** * Create a new cluster asynchronously. @@ -142,7 +142,7 @@ public interface Clusters { * the cluster configuration object * */ - CompletableFuture createClusterAsync(String cluster, ClusterData clusterData); + CompletableFuture createClusterAsync(String cluster, ClusterDataInterface clusterData); /** * Update the configuration for a cluster. @@ -161,7 +161,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - void updateCluster(String cluster, ClusterData clusterData) throws PulsarAdminException; + void updateCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException; /** * Update the configuration for a cluster asynchronously. @@ -174,7 +174,7 @@ public interface Clusters { * the cluster configuration object * */ - CompletableFuture updateClusterAsync(String cluster, ClusterData clusterData); + CompletableFuture updateClusterAsync(String cluster, ClusterDataInterface clusterData); /** * Update peer cluster names. @@ -289,7 +289,8 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - Map getNamespaceIsolationPolicies(String cluster) throws PulsarAdminException; + Map getNamespaceIsolationPolicies(String cluster) + throws PulsarAdminException; /** * Get the namespace isolation policies of a cluster asynchronously. @@ -310,7 +311,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - CompletableFuture> getNamespaceIsolationPoliciesAsync(String cluster); + CompletableFuture> getNamespaceIsolationPoliciesAsync(String cluster); /** * Create a namespace isolation policy for a cluster. @@ -339,7 +340,7 @@ public interface Clusters { * Unexpected error */ void createNamespaceIsolationPolicy( - String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) + String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException; /** @@ -358,7 +359,7 @@ void createNamespaceIsolationPolicy( * @return */ CompletableFuture createNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationData namespaceIsolationData); + String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData); /** * Returns list of active brokers with namespace-isolation policies attached to it. @@ -426,7 +427,7 @@ CompletableFuture getBrokerWithNamespaceIsolationP * Unexpected error */ void updateNamespaceIsolationPolicy( - String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) + String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException; /** @@ -446,7 +447,7 @@ void updateNamespaceIsolationPolicy( * */ CompletableFuture updateNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationData namespaceIsolationData); + String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData); /** * Delete a namespace isolation policy for a cluster. @@ -511,7 +512,8 @@ CompletableFuture updateNamespaceIsolationPolicyAsync( * @throws PulsarAdminException * Unexpected error */ - NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, String policyName) throws PulsarAdminException; + NamespaceIsolationDataInterface getNamespaceIsolationPolicy(String cluster, String policyName) + throws PulsarAdminException; /** * Get a single namespace isolation policy for a cluster asynchronously. @@ -524,7 +526,8 @@ CompletableFuture updateNamespaceIsolationPolicyAsync( * Policy name * */ - CompletableFuture getNamespaceIsolationPolicyAsync(String cluster, String policyName); + CompletableFuture getNamespaceIsolationPolicyAsync(String cluster, + String policyName); /** * Create a domain into cluster. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java index 5443b3c184a63..18e0767007213 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java @@ -26,7 +26,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; @@ -205,7 +205,7 @@ public interface Functions { * @throws PulsarAdminException * Unexpected error */ - void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions) + void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions) throws PulsarAdminException; /** @@ -218,7 +218,7 @@ void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOption * options for the update operations */ CompletableFuture updateFunctionAsync( - FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions); + FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions); /** * Update the configuration for a function. @@ -277,7 +277,7 @@ CompletableFuture updateFunctionAsync( * @throws PulsarAdminException * Unexpected error */ - void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions) + void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateOptionsInterface updateOptions) throws PulsarAdminException; /** @@ -296,7 +296,7 @@ void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateO * options for the update operations */ CompletableFuture updateFunctionWithUrlAsync( - FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions); + FunctionConfig functionConfig, String pkgUrl, UpdateOptionsInterface updateOptions); /** * Delete an existing function. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java index f51cf6681944a..b78251d1f75d3 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.policies.data.SinkStatus; @@ -200,7 +200,8 @@ public interface Sinks { * @throws PulsarAdminException * Unexpected error */ - void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException; + void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptionsInterface updateOptions) + throws PulsarAdminException; /** * Update the configuration for a sink asynchronously. @@ -211,7 +212,8 @@ public interface Sinks { * @param updateOptions * options for the update operations */ - CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions); + CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fileName, + UpdateOptionsInterface updateOptions); /** * Update the configuration for a sink. @@ -270,7 +272,7 @@ public interface Sinks { * @throws PulsarAdminException * Unexpected error */ - void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions) + void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptionsInterface updateOptions) throws PulsarAdminException; /** @@ -288,7 +290,8 @@ void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updat * @param updateOptions * options for the update operations */ - CompletableFuture updateSinkWithUrlAsync(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions); + CompletableFuture updateSinkWithUrlAsync(SinkConfig sinkConfig, String pkgUrl, + UpdateOptionsInterface updateOptions); /** * Delete an existing sink. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java index fea9374be6084..d7e52c3ed160e 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.policies.data.SourceStatus; @@ -200,7 +200,7 @@ public interface Sources { * @throws PulsarAdminException * Unexpected error */ - void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions) + void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptionsInterface updateOptions) throws PulsarAdminException; /** @@ -212,7 +212,8 @@ void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptions upda * @param updateOptions * options for the update operations */ - CompletableFuture updateSourceAsync(SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions); + CompletableFuture updateSourceAsync(SourceConfig sourceConfig, String fileName, + UpdateOptionsInterface updateOptions); /** * Update the configuration for a source. @@ -271,7 +272,7 @@ void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptions upda * @throws PulsarAdminException * Unexpected error */ - void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions) + void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions) throws PulsarAdminException; /** @@ -290,7 +291,7 @@ void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptions * options for the update operations */ CompletableFuture updateSourceWithUrlAsync( - SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions); + SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions); /** * Delete an existing source. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsInterface.java new file mode 100644 index 0000000000000..d397bb3047dc5 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsInterface.java @@ -0,0 +1,25 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.functions; + +public interface UpdateOptionsInterface { + boolean isUpdateAuthData(); + + void setUpdateAuthData(boolean updateAuthData); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataInterface.java new file mode 100644 index 0000000000000..8f8d05b9eb517 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataInterface.java @@ -0,0 +1,60 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.LinkedHashSet; +import org.apache.pulsar.client.api.ProxyProtocol; + +public interface ClusterDataInterface { + String getServiceUrl(); + + String getServiceUrlTls(); + + void setServiceUrl(String serviceUrl); + + void setServiceUrlTls(String serviceUrlTls); + + String getBrokerServiceUrl(); + + void setBrokerServiceUrl(String brokerServiceUrl); + + String getBrokerServiceUrlTls(); + + void setBrokerServiceUrlTls(String brokerServiceUrlTls); + + String getProxyServiceUrl(); + + void setProxyServiceUrl(String proxyServiceUrl); + + ProxyProtocol getProxyProtocol(); + + void setProxyProtocol(ProxyProtocol proxyProtocol); + + LinkedHashSet getPeerClusterNames(); + + String getAuthenticationPlugin(); + + void setAuthenticationPlugin(String authenticationPlugin); + + String getAuthenticationParameters(); + + void setAuthenticationParameters(String authenticationParameters); + + void setPeerClusterNames(LinkedHashSet peerClusterNames); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java new file mode 100644 index 0000000000000..bfa558a640104 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java @@ -0,0 +1,41 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.List; + +public interface NamespaceIsolationDataInterface { + + List getNamespaces(); + + List getPrimary(); + + List getSecondary(); + + AutoFailoverPolicyData getAuto_failover_policy(); + + void setNamespaces(List namespaces); + + void setPrimary(List primary); + + void setSecondary(List secondary); + + void setAuto_failover_policy(AutoFailoverPolicyData autoFailoverPolicyData); + +} diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index d721c08a5a554..52d3bc88d1a2d 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -18,6 +18,7 @@ */ package org.apache.pulsar.client.admin.internal; +import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -35,8 +36,10 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; public class ClustersImpl extends BaseResource implements Clusters { @@ -80,7 +83,7 @@ public void failed(Throwable throwable) { } @Override - public ClusterData getCluster(String cluster) throws PulsarAdminException { + public ClusterDataInterface getCluster(String cluster) throws PulsarAdminException { try { return getClusterAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -94,9 +97,9 @@ public ClusterData getCluster(String cluster) throws PulsarAdminException { } @Override - public CompletableFuture getClusterAsync(String cluster) { + public CompletableFuture getClusterAsync(String cluster) { WebTarget path = adminClusters.path(cluster); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override @@ -113,7 +116,7 @@ public void failed(Throwable throwable) { } @Override - public void createCluster(String cluster, ClusterData clusterData) throws PulsarAdminException { + public void createCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException { try { createClusterAsync(cluster, clusterData).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -127,13 +130,13 @@ public void createCluster(String cluster, ClusterData clusterData) throws Pulsar } @Override - public CompletableFuture createClusterAsync(String cluster, ClusterData clusterData) { + public CompletableFuture createClusterAsync(String cluster, ClusterDataInterface clusterData) { WebTarget path = adminClusters.path(cluster); - return asyncPutRequest(path, Entity.entity(clusterData, MediaType.APPLICATION_JSON)); + return asyncPutRequest(path, Entity.entity((ClusterData) clusterData, MediaType.APPLICATION_JSON)); } @Override - public void updateCluster(String cluster, ClusterData clusterData) throws PulsarAdminException { + public void updateCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException { try { updateClusterAsync(cluster, clusterData).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -147,9 +150,9 @@ public void updateCluster(String cluster, ClusterData clusterData) throws Pulsar } @Override - public CompletableFuture updateClusterAsync(String cluster, ClusterData clusterData) { + public CompletableFuture updateClusterAsync(String cluster, ClusterDataInterface clusterData) { WebTarget path = adminClusters.path(cluster); - return asyncPostRequest(path, Entity.entity(clusterData, MediaType.APPLICATION_JSON_TYPE)); + return asyncPostRequest(path, Entity.entity((ClusterData) clusterData, MediaType.APPLICATION_JSON_TYPE)); } @Override @@ -228,7 +231,7 @@ public CompletableFuture deleteClusterAsync(String cluster) { } @Override - public Map getNamespaceIsolationPolicies(String cluster) + public Map getNamespaceIsolationPolicies(String cluster) throws PulsarAdminException { try { return getNamespaceIsolationPoliciesAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -243,14 +246,17 @@ public Map getNamespaceIsolationPolicies(String } @Override - public CompletableFuture> getNamespaceIsolationPoliciesAsync(String cluster) { + public CompletableFuture> getNamespaceIsolationPoliciesAsync( + String cluster) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies"); - final CompletableFuture> future = new CompletableFuture<>(); + final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback>() { @Override public void completed(Map stringNamespaceIsolationDataMap) { - future.complete(stringNamespaceIsolationDataMap); + Map result = new HashMap<>(); + stringNamespaceIsolationDataMap.forEach(result::put); + future.complete(result); } @Override @@ -334,25 +340,25 @@ public void failed(Throwable throwable) { @Override public void createNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException { setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData); } @Override public CompletableFuture createNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) { + String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) { return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData); } @Override public void updateNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException { setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData); } @Override public CompletableFuture updateNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) { + String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) { return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData); } @@ -377,7 +383,7 @@ public CompletableFuture deleteNamespaceIsolationPolicyAsync(String cluste } private void setNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException { try { setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData) .get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -392,13 +398,13 @@ private void setNamespaceIsolationPolicy(String cluster, String policyName, } private CompletableFuture setNamespaceIsolationPolicyAsync(String cluster, String policyName, - NamespaceIsolationData namespaceIsolationData) { + NamespaceIsolationDataInterface namespaceIsolationData) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName); return asyncPostRequest(path, Entity.entity(namespaceIsolationData, MediaType.APPLICATION_JSON)); } @Override - public NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, String policyName) + public NamespaceIsolationDataInterface getNamespaceIsolationPolicy(String cluster, String policyName) throws PulsarAdminException { try { return getNamespaceIsolationPolicyAsync(cluster, policyName) @@ -414,10 +420,10 @@ public NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, String } @Override - public CompletableFuture getNamespaceIsolationPolicyAsync( + public CompletableFuture getNamespaceIsolationPolicyAsync( String cluster, String policyName) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java index 7a2d848e3efc5..9c46d42f7ce6e 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java @@ -47,6 +47,7 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionStats; @@ -431,7 +432,7 @@ public CompletableFuture updateFunctionAsync(FunctionConfig functionConfig } @Override - public void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions) + public void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions) throws PulsarAdminException { try { updateFunctionAsync(functionConfig, fileName, updateOptions) @@ -449,7 +450,7 @@ public void updateFunction(FunctionConfig functionConfig, String fileName, Updat @Override public CompletableFuture updateFunctionAsync( - FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions) { + FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { RequestBuilder builder = @@ -459,9 +460,10 @@ public CompletableFuture updateFunctionAsync( .addBodyPart(new StringPart("functionConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(functionConfig), MediaType.APPLICATION_JSON)); - if (updateOptions != null) { + UpdateOptions options = (UpdateOptions) updateOptions; + if (options != null) { builder.addBodyPart(new StringPart("updateOptions", ObjectMapperFactory.getThreadLocal() - .writeValueAsString(updateOptions), MediaType.APPLICATION_JSON)); + .writeValueAsString(options), MediaType.APPLICATION_JSON)); } if (fileName != null && !fileName.startsWith("builtin://")) { @@ -493,7 +495,8 @@ public CompletableFuture updateFunctionAsync( } @Override - public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions) + public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, + UpdateOptionsInterface updateOptions) throws PulsarAdminException { try { updateFunctionWithUrlAsync(functionConfig, pkgUrl, updateOptions) @@ -511,7 +514,7 @@ public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, @Override public CompletableFuture updateFunctionWithUrlAsync( - FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions) { + FunctionConfig functionConfig, String pkgUrl, UpdateOptionsInterface updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { final FormDataMultiPart mp = new FormDataMultiPart(); @@ -520,10 +523,11 @@ public CompletableFuture updateFunctionWithUrlAsync( "functionConfig", ObjectMapperFactory.getThreadLocal().writeValueAsString(functionConfig), MediaType.APPLICATION_JSON_TYPE)); - if (updateOptions != null) { + UpdateOptions options = (UpdateOptions) updateOptions; + if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON_TYPE)); } WebTarget path = functions.path(functionConfig.getTenant()).path(functionConfig.getNamespace()) diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java index 790589db3c476..80b619646f1d0 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java @@ -40,6 +40,7 @@ import org.apache.pulsar.client.admin.Sinks; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.policies.data.SinkStatus; @@ -336,7 +337,7 @@ public CompletableFuture deleteSinkAsync(String tenant, String namespace, } @Override - public void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) + public void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptionsInterface updateOptions) throws PulsarAdminException { try { updateSinkAsync(sinkConfig, fileName, updateOptions).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -352,7 +353,7 @@ public void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptions upd @Override public CompletableFuture updateSinkAsync( - SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) { + SinkConfig sinkConfig, String fileName, UpdateOptionsInterface updateOptions) { final CompletableFuture future = new CompletableFuture<>(); if (!validateSinkName(sinkConfig.getTenant(), sinkConfig.getNamespace(), sinkConfig.getName(), future)) { return future; @@ -364,10 +365,11 @@ public CompletableFuture updateSinkAsync( .addBodyPart(new StringPart("sinkConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(sinkConfig), MediaType.APPLICATION_JSON)); - if (updateOptions != null) { + UpdateOptions options = (UpdateOptions) updateOptions; + if (options != null) { builder.addBodyPart(new StringPart("updateOptions", ObjectMapperFactory.getThreadLocal() - .writeValueAsString(updateOptions), MediaType.APPLICATION_JSON)); + .writeValueAsString(options), MediaType.APPLICATION_JSON)); } if (fileName != null && !fileName.startsWith("builtin://")) { @@ -407,7 +409,7 @@ public CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fil } @Override - public void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions) + public void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptionsInterface updateOptions) throws PulsarAdminException { try { updateSinkWithUrlAsync(sinkConfig, pkgUrl, updateOptions).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -423,7 +425,7 @@ public void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOption @Override public CompletableFuture updateSinkWithUrlAsync( - SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions) { + SinkConfig sinkConfig, String pkgUrl, UpdateOptionsInterface updateOptions) { final CompletableFuture future = new CompletableFuture<>(); if (!validateSinkName(sinkConfig.getTenant(), sinkConfig.getNamespace(), sinkConfig.getName(), future)) { return future; @@ -435,10 +437,11 @@ public CompletableFuture updateSinkWithUrlAsync( "sinkConfig", new Gson().toJson(sinkConfig), MediaType.APPLICATION_JSON_TYPE)); - if (updateOptions != null) { + UpdateOptions options = (UpdateOptions) updateOptions; + if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON_TYPE)); } WebTarget path = sink.path(sinkConfig.getTenant()).path(sinkConfig.getNamespace()) diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java index 09943a25c2095..b733f99cb3284 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java @@ -39,6 +39,7 @@ import org.apache.pulsar.client.admin.Sources; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.policies.data.SourceStatus; @@ -313,7 +314,7 @@ public CompletableFuture deleteSourceAsync(String tenant, String namespace } @Override - public void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions) + public void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptionsInterface updateOptions) throws PulsarAdminException { try { updateSourceAsync(sourceConfig, fileName, updateOptions).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -329,7 +330,7 @@ public void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptio @Override public CompletableFuture updateSourceAsync( - SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions) { + SourceConfig sourceConfig, String fileName, UpdateOptionsInterface updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { RequestBuilder builder = @@ -338,9 +339,10 @@ public CompletableFuture updateSourceAsync( .addBodyPart(new StringPart("sourceConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(sourceConfig), MediaType.APPLICATION_JSON)); - if (updateOptions != null) { + UpdateOptions options = (UpdateOptions) updateOptions; + if (options != null) { builder.addBodyPart(new StringPart("updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON)); } @@ -381,7 +383,7 @@ public CompletableFuture updateSourceAsync(SourceConfig sourceConfig, Stri } @Override - public void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions) + public void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions) throws PulsarAdminException { try { updateSourceWithUrlAsync(sourceConfig, pkgUrl, updateOptions) @@ -398,7 +400,7 @@ public void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, Update @Override public CompletableFuture updateSourceWithUrlAsync( - SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions) { + SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { final FormDataMultiPart mp = new FormDataMultiPart(); @@ -407,10 +409,11 @@ public CompletableFuture updateSourceWithUrlAsync( "sourceConfig", new Gson().toJson(sourceConfig), MediaType.APPLICATION_JSON_TYPE)); - if (updateOptions != null) { + UpdateOptions options = (UpdateOptions) updateOptions; + if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", - ObjectMapperFactory.getThreadLocal().writeValueAsString(updateOptions), + ObjectMapperFactory.getThreadLocal().writeValueAsString(options), MediaType.APPLICATION_JSON_TYPE)); } WebTarget path = source.path(sourceConfig.getTenant()).path(sourceConfig.getNamespace()) diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java index 4b844d57975cb..3a96d75b2d9eb 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java @@ -35,6 +35,7 @@ import com.beust.jcommander.ParameterException; import com.beust.jcommander.Parameters; import com.beust.jcommander.converters.CommaParameterSplitter; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @Parameters(commandDescription = "Operations about namespace isolation policy") public class CmdNamespaceIsolationPolicy extends CmdBase { @@ -78,7 +79,8 @@ private class GetAllPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - Map policyMap = getAdmin().clusters().getNamespaceIsolationPolicies(clusterName); + Map policyMap = + getAdmin().clusters().getNamespaceIsolationPolicies(clusterName); print(policyMap); } @@ -126,7 +128,7 @@ void run() throws PulsarAdminException { String clusterName = getOneArgument(params, 0, 2); String policyName = getOneArgument(params, 1, 2); - NamespaceIsolationData nsIsolationData = getAdmin().clusters().getNamespaceIsolationPolicy(clusterName, + NamespaceIsolationData nsIsolationData = (NamespaceIsolationData) getAdmin().clusters().getNamespaceIsolationPolicy(clusterName, policyName); print(nsIsolationData); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java similarity index 88% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java index 108ccac33b447..e0dec9cb1ffe5 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java @@ -29,9 +29,9 @@ @Data @NoArgsConstructor @ApiModel(value = "UpdateOptions", description = "Options while updating the sink") -public class UpdateOptions { +public class UpdateOptions implements UpdateOptionsInterface { @ApiModelProperty( - value = "Whether or not to update the auth data", - name = "update-auth-data") + value = "Whether or not to update the auth data", + name = "update-auth-data") private boolean updateAuthData = false; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java similarity index 77% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java index cf5c9f602a09f..f13ac1e69374b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java @@ -18,50 +18,50 @@ */ package org.apache.pulsar.common.policies.data; +import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.MoreObjects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.LinkedHashSet; import java.util.Objects; -import lombok.ToString; import org.apache.pulsar.client.api.ProxyProtocol; /** * The configuration data for a cluster. */ @ApiModel( - value = "ClusterData", - description = "The configuration data for a cluster" + value = "ClusterData", + description = "The configuration data for a cluster" ) -@ToString -public class ClusterData { +public class ClusterData implements ClusterDataInterface{ @ApiModelProperty( - name = "serviceUrl", - value = "The HTTP rest service URL (for admin operations)", - example = "http://pulsar.example.com:8080" + name = "serviceUrl", + value = "The HTTP rest service URL (for admin operations)", + example = "http://pulsar.example.com:8080" ) private String serviceUrl; @ApiModelProperty( - name = "serviceUrlTls", - value = "The HTTPS rest service URL (for admin operations)", - example = "https://pulsar.example.com:8443" + name = "serviceUrlTls", + value = "The HTTPS rest service URL (for admin operations)", + example = "https://pulsar.example.com:8443" ) private String serviceUrlTls; @ApiModelProperty( - name = "brokerServiceUrl", - value = "The broker service url (for produce and consume operations)", - example = "pulsar://pulsar.example.com:6650" + name = "brokerServiceUrl", + value = "The broker service url (for produce and consume operations)", + example = "pulsar://pulsar.example.com:6650" ) private String brokerServiceUrl; @ApiModelProperty( - name = "brokerServiceUrlTls", - value = "The secured broker service url (for produce and consume operations)", - example = "pulsar+ssl://pulsar.example.com:6651" + name = "brokerServiceUrlTls", + value = "The secured broker service url (for produce and consume operations)", + example = "pulsar+ssl://pulsar.example.com:6651" ) private String brokerServiceUrlTls; @ApiModelProperty( - name = "proxyServiceUrl", - value = "Proxy-service url when client would like to connect to broker via proxy.", - example = "pulsar+ssl://ats-proxy.example.com:4443 or " + name = "proxyServiceUrl", + value = "Proxy-service url when client would like to connect to broker via proxy.", + example = "pulsar+ssl://ats-proxy.example.com:4443 or " + "pulsar://ats-proxy.example.com:4080" ) private String proxyServiceUrl; @@ -77,17 +77,17 @@ public class ClusterData { ) private String authenticationParameters; @ApiModelProperty( - name = "proxyProtocol", - value = "protocol to decide type of proxy routing eg: SNI-routing", - example = "SNI" + name = "proxyProtocol", + value = "protocol to decide type of proxy routing eg: SNI-routing", + example = "SNI" ) private ProxyProtocol proxyProtocol; // For given Cluster1(us-west1, us-east1) and Cluster2(us-west2, us-east2) // Peer: [us-west1 -> us-west2] and [us-east1 -> us-east2] @ApiModelProperty( - name = "peerClusterNames", - value = "A set of peer cluster names" + name = "peerClusterNames", + value = "A set of peer cluster names" ) private LinkedHashSet peerClusterNames; @@ -135,9 +135,7 @@ public ClusterData(String serviceUrl, String serviceUrlTls, String brokerService public void update(ClusterData other) { - if (other == null) { - throw new NullPointerException(); - } + checkNotNull(other); this.serviceUrl = other.serviceUrl; this.serviceUrlTls = other.serviceUrlTls; this.brokerServiceUrl = other.brokerServiceUrl; @@ -239,7 +237,20 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(this.toString()); + return Objects.hash(this.toString()); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("serviceUrl", serviceUrl) + .add("serviceUrlTls", serviceUrlTls) + .add("brokerServiceUrl", brokerServiceUrl) + .add("brokerServiceUrlTls", brokerServiceUrlTls) + .add("proxyServiceUrl", proxyServiceUrl) + .add("proxyProtocol", proxyProtocol) + .add("peerClusterNames", peerClusterNames).add("authenticationPlugin", authenticationPlugin) + .add("authenticationParameters", authenticationParameters).toString(); } } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java similarity index 63% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java index 56e94db065036..1dd38120c2503 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java @@ -18,56 +18,60 @@ */ package org.apache.pulsar.common.policies.data; +import static com.google.common.base.Preconditions.checkArgument; +import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; + +import lombok.Data; import org.apache.commons.lang3.StringUtils; /** * The data of namespace isolation configuration. */ @ApiModel( - value = "NamespaceIsolationData", - description = "The data of namespace isolation configuration" + value = "NamespaceIsolationData", + description = "The data of namespace isolation configuration" ) -public class NamespaceIsolationData { +@Data +public class NamespaceIsolationData implements NamespaceIsolationDataInterface { @ApiModelProperty( - name = "namespaces", - value = "The list of namespaces to apply this namespace isolation data" + name = "namespaces", + value = "The list of namespaces to apply this namespace isolation data" ) public List namespaces = new ArrayList(); @ApiModelProperty( - name = "primary", - value = "The list of primary brokers for serving the list of namespaces in this isolation policy" + name = "primary", + value = "The list of primary brokers for serving the list of namespaces in this isolation policy" ) public List primary = new ArrayList(); @ApiModelProperty( - name = "primary", - value = "The list of secondary brokers for serving the list of namespaces in this isolation policy" + name = "primary", + value = "The list of secondary brokers for serving the list of namespaces in this isolation policy" ) public List secondary = new ArrayList(); @ApiModelProperty( - name = "auto_failover_policy", - value = "The data of auto-failover policy configuration", - example = - "{" - + " \"policy_type\": \"min_available\"" - + " \"parameters\": {" - + " \"\": \"\"" - + " }" - + "}" + name = "auto_failover_policy", + value = "The data of auto-failover policy configuration", + example = + "{" + + " \"policy_type\": \"min_available\"" + + " \"parameters\": {" + + " \"\": \"\"" + + " }" + + "}" ) @SuppressWarnings("checkstyle:MemberName") public AutoFailoverPolicyData auto_failover_policy; @Override public int hashCode() { - return Objects.hash(namespaces, primary, secondary, + return Objects.hashCode(namespaces, primary, secondary, auto_failover_policy); } @@ -75,20 +79,17 @@ public int hashCode() { public boolean equals(Object obj) { if (obj instanceof NamespaceIsolationData) { NamespaceIsolationData other = (NamespaceIsolationData) obj; - return Objects.equals(namespaces, other.namespaces) && Objects.equals(primary, other.primary) - && Objects.equals(secondary, other.secondary) - && Objects.equals(auto_failover_policy, other.auto_failover_policy); + return Objects.equal(namespaces, other.namespaces) && Objects.equal(primary, other.primary) + && Objects.equal(secondary, other.secondary) + && Objects.equal(auto_failover_policy, other.auto_failover_policy); } return false; } public void validate() { - if (!(namespaces != null && !namespaces.isEmpty() && primary != null && !primary.isEmpty() - && validateRegex(primary) && secondary != null && validateRegex(secondary) - && auto_failover_policy != null)) { - throw new IllegalArgumentException(); - } + checkArgument(namespaces != null && !namespaces.isEmpty() && primary != null && !primary.isEmpty() + && validateRegex(primary) && secondary != null && validateRegex(secondary) && auto_failover_policy != null); auto_failover_policy.validate(); } From dd09f9fcfd83f077f65241a68dbf5f3a1c40f35c Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 15:15:18 +0800 Subject: [PATCH 26/51] merge master --- .../pulsar/common/policies/data/TransactionBufferStats.java | 0 .../common/policies/data/TransactionCoordinatorInternalStats.java | 0 .../pulsar/common/policies/data/TransactionCoordinatorStats.java | 0 .../apache/pulsar/common/policies/data/TransactionLogStats.java | 0 .../common/policies/data/TransactionPendingAckInternalStats.java | 0 .../pulsar/common/policies/data/TransactionPendingAckStats.java | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java (100%) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java (100%) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionBufferStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckStats.java From 71ebee9e8a118c22f29df6bf4f741b359d0188d0 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 17:59:39 +0800 Subject: [PATCH 27/51] remove swagger --- .../pulsar/broker/admin/AdminApiTest2.java | 17 +- .../broker/admin/v1/V1_AdminApiTest.java | 5 +- .../broker/admin/v1/V1_AdminApiTest2.java | 3 +- .../apache/pulsar/client/admin/Clusters.java | 29 +- .../pulsar/client/admin/Properties.java | 8 +- .../apache/pulsar/client/admin/Tenants.java | 14 +- .../data/AutoFailoverPolicyDataInterface.java | 31 ++ ...BrokerNamespaceIsolationDataInterface.java | 39 ++ .../policies/data/FailureDomainInterface.java | 27 + .../data/ManagedLedgerInternalStats.java | 0 .../data/NamespaceIsolationDataInterface.java | 4 +- .../policies/data/TenantInfoInterface.java | 31 ++ .../TransactionCoordinatorInternalStats.java | 2 +- .../policies/data/TransactionLogStats.java | 6 +- .../TransactionPendingAckInternalStats.java | 2 +- .../impl/AutoFailoverPolicyFactory.java | 8 +- .../policies/impl/MinAvailablePolicy.java | 14 +- .../client/admin/internal/ClustersImpl.java | 50 +- .../client/admin/internal/TenantsImpl.java | 25 +- .../cli/CmdNamespaceIsolationPolicy.java | 10 +- .../policies/data/AutoFailoverPolicyData.java | 51 +- .../data/BrokerNamespaceIsolationData.java | 28 +- .../common/policies/data/FailureDomain.java | 7 +- .../policies/data/NamespaceIsolationData.java | 5 + .../common/policies/data/TenantInfo.java | 20 +- .../worker/rest/api/ComponentImpl.java | 2 +- .../functions/PulsarFunctionsTest.java | 481 +++++++++++++----- 27 files changed, 654 insertions(+), 265 deletions(-) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataInterface.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataInterface.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainInterface.java rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java (100%) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoInterface.java rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java (54%) rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java (72%) rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java (94%) rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java (81%) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 0e5d52b9a12ec..9a86965b88910 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -82,9 +82,11 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -765,7 +767,7 @@ public void clusterFailureDomain() throws PulsarAdminException { assertEquals(admin.clusters().getFailureDomain(cluster, "domain-1"), domain); - Map domains = admin.clusters().getFailureDomains(cluster); + Map domains = admin.clusters().getFailureDomains(cluster); assertEquals(domains.size(), 1); assertTrue(domains.containsKey("domain-1")); @@ -982,20 +984,21 @@ public void brokerNamespaceIsolationPolicies() throws Exception { nsPolicyData1.auto_failover_policy.parameters.put("usage_threshold", "100"); admin.clusters().createNamespaceIsolationPolicy(cluster, policyName1, nsPolicyData1); - List brokerIsolationDataList = admin.clusters() + List brokerIsolationDataList = admin.clusters() .getBrokersWithNamespaceIsolationPolicy(cluster); assertEquals(brokerIsolationDataList.size(), 1); - assertEquals(brokerIsolationDataList.get(0).brokerName, brokerAddress); - assertEquals(brokerIsolationDataList.get(0).namespaceRegex.size(), 1); - assertEquals(brokerIsolationDataList.get(0).namespaceRegex.get(0), namespaceRegex); + assertEquals(brokerIsolationDataList.get(0).getBrokerName(), brokerAddress); + assertEquals(brokerIsolationDataList.get(0).getNamespaceRegex().size(), 1); + assertEquals(brokerIsolationDataList.get(0).getNamespaceRegex().get(0), namespaceRegex); - BrokerNamespaceIsolationData brokerIsolationData = admin.clusters() + BrokerNamespaceIsolationData brokerIsolationData = (BrokerNamespaceIsolationData) admin.clusters() .getBrokerWithNamespaceIsolationPolicy(cluster, brokerAddress); assertEquals(brokerIsolationData.brokerName, brokerAddress); assertEquals(brokerIsolationData.namespaceRegex.size(), 1); assertEquals(brokerIsolationData.namespaceRegex.get(0), namespaceRegex); - BrokerNamespaceIsolationData isolationData = admin.clusters().getBrokerWithNamespaceIsolationPolicy(cluster, "invalid-broker"); + BrokerNamespaceIsolationData isolationData = (BrokerNamespaceIsolationData) admin.clusters() + .getBrokerWithNamespaceIsolationPolicy(cluster, "invalid-broker"); assertFalse(isolationData.isPrimary); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 5925575dc89c4..0700710939672 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -89,6 +89,7 @@ import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @@ -285,9 +286,9 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName2), nsPolicyData2); // verify local broker get matched. - List isoList = admin.clusters().getBrokersWithNamespaceIsolationPolicy("use"); + List isoList = admin.clusters().getBrokersWithNamespaceIsolationPolicy("use"); assertEquals(isoList.size(), 1); - assertTrue(isoList.get(0).isPrimary); + assertTrue(isoList.get(0).isPrimary()); // verify update of primary nsPolicyData1.primary.remove(0); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java index 2410843ba41d6..c131433a2f720 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java @@ -62,6 +62,7 @@ import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NonPersistentTopicStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -657,7 +658,7 @@ public void clusterFailureDomain() throws PulsarAdminException { assertEquals(admin.clusters().getFailureDomain(cluster, "domain-1"), domain); - Map domains = admin.clusters().getFailureDomains(cluster); + Map domains = admin.clusters().getFailureDomains(cluster); assertEquals(domains.size(), 1); assertTrue(domains.containsKey("domain-1")); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java index aa92098dd440c..5c2e940f7b979 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java @@ -27,9 +27,9 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterDataInterface; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; /** @@ -368,7 +368,7 @@ CompletableFuture createNamespaceIsolationPolicyAsync( * @return * @throws PulsarAdminException */ - List getBrokersWithNamespaceIsolationPolicy(String cluster) + List getBrokersWithNamespaceIsolationPolicy(String cluster) throws PulsarAdminException; /** @@ -377,7 +377,8 @@ List getBrokersWithNamespaceIsolationPolicy(String * @param cluster * @return */ - CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync(String cluster); + CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( + String cluster); /** * Returns active broker with namespace-isolation policies attached to it. @@ -387,7 +388,7 @@ List getBrokersWithNamespaceIsolationPolicy(String * @return * @throws PulsarAdminException */ - BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) + BrokerNamespaceIsolationDataInterface getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) throws PulsarAdminException; /** @@ -397,7 +398,7 @@ BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy(String cluste * @param broker * @return */ - CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( + CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( String cluster, String broker); /** @@ -558,7 +559,7 @@ CompletableFuture getNamespaceIsolationPolicyAs * @throws PulsarAdminException * Unexpected error */ - void createFailureDomain(String cluster, String domainName, FailureDomain domain) + void createFailureDomain(String cluster, String domainName, FailureDomainInterface domain) throws PulsarAdminException; /** @@ -577,7 +578,7 @@ void createFailureDomain(String cluster, String domainName, FailureDomain domain * @return * */ - CompletableFuture createFailureDomainAsync(String cluster, String domainName, FailureDomain domain); + CompletableFuture createFailureDomainAsync(String cluster, String domainName, FailureDomainInterface domain); /** * Update a domain into cluster. @@ -608,7 +609,7 @@ void createFailureDomain(String cluster, String domainName, FailureDomain domain * @throws PulsarAdminException * Unexpected error */ - void updateFailureDomain(String cluster, String domainName, FailureDomain domain) + void updateFailureDomain(String cluster, String domainName, FailureDomainInterface domain) throws PulsarAdminException; /** @@ -627,7 +628,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomain domain * @return * */ - CompletableFuture updateFailureDomainAsync(String cluster, String domainName, FailureDomain domain); + CompletableFuture updateFailureDomainAsync(String cluster, String domainName, FailureDomainInterface domain); /** * Delete a domain in cluster. @@ -685,7 +686,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomain domain * @throws PulsarAdminException * Unexpected error */ - Map getFailureDomains(String cluster) throws PulsarAdminException; + Map getFailureDomains(String cluster) throws PulsarAdminException; /** * Get all registered domains in cluster asynchronously. @@ -696,7 +697,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomain domain * @return * */ - CompletableFuture> getFailureDomainsAsync(String cluster); + CompletableFuture> getFailureDomainsAsync(String cluster); /** * Get the domain registered into a cluster. @@ -717,7 +718,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomain domain * @throws PulsarAdminException * Unexpected error */ - FailureDomain getFailureDomain(String cluster, String domainName) throws PulsarAdminException; + FailureDomainInterface getFailureDomain(String cluster, String domainName) throws PulsarAdminException; /** * Get the domain registered into a cluster asynchronously. @@ -728,6 +729,6 @@ void updateFailureDomain(String cluster, String domainName, FailureDomain domain * @return * */ - CompletableFuture getFailureDomainAsync(String cluster, String domainName); + CompletableFuture getFailureDomainAsync(String cluster, String domainName); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java index 06cd3d6dddb2e..79b7a1afccab9 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoInterface; /** * Admin interface for properties management. @@ -67,7 +67,7 @@ public interface Properties { * @throws PulsarAdminException * Unexpected error */ - TenantInfo getPropertyAdmin(String property) throws PulsarAdminException; + TenantInfoInterface getPropertyAdmin(String property) throws PulsarAdminException; /** * Create a new property. @@ -88,7 +88,7 @@ public interface Properties { * @throws PulsarAdminException * Unexpected error */ - void createProperty(String property, TenantInfo config) throws PulsarAdminException; + void createProperty(String property, TenantInfoInterface config) throws PulsarAdminException; /** * Update the admins for a property. @@ -107,7 +107,7 @@ public interface Properties { * @throws PulsarAdminException * Unexpected error */ - void updateProperty(String property, TenantInfo config) throws PulsarAdminException; + void updateProperty(String property, TenantInfoInterface config) throws PulsarAdminException; /** * Delete an existing property. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java index 0c23ebcc91386..7b6baca7e7818 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java @@ -24,7 +24,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoInterface; /** * Admin interface for tenants management. @@ -76,7 +76,7 @@ public interface Tenants { * @throws PulsarAdminException * Unexpected error */ - TenantInfo getTenantInfo(String tenant) throws PulsarAdminException; + TenantInfoInterface getTenantInfo(String tenant) throws PulsarAdminException; /** * Get the config of the tenant asynchronously. @@ -87,7 +87,7 @@ public interface Tenants { * Tenant name * @return the tenant configuration */ - CompletableFuture getTenantInfoAsync(String tenant); + CompletableFuture getTenantInfoAsync(String tenant); /** * Create a new tenant. @@ -108,7 +108,7 @@ public interface Tenants { * @throws PulsarAdminException * Unexpected error */ - void createTenant(String tenant, TenantInfo config) throws PulsarAdminException; + void createTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException; /** * Create a new tenant asynchronously. @@ -120,7 +120,7 @@ public interface Tenants { * @param config * Config data */ - CompletableFuture createTenantAsync(String tenant, TenantInfo config); + CompletableFuture createTenantAsync(String tenant, TenantInfoInterface config); /** * Update the admins for a tenant. @@ -139,7 +139,7 @@ public interface Tenants { * @throws PulsarAdminException * Unexpected error */ - void updateTenant(String tenant, TenantInfo config) throws PulsarAdminException; + void updateTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException; /** * Update the admins for a tenant asynchronously. @@ -151,7 +151,7 @@ public interface Tenants { * @param config * Config data */ - CompletableFuture updateTenantAsync(String tenant, TenantInfo config); + CompletableFuture updateTenantAsync(String tenant, TenantInfoInterface config); /** * Delete an existing tenant. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataInterface.java new file mode 100644 index 0000000000000..101b178737430 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataInterface.java @@ -0,0 +1,31 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Map; + +public interface AutoFailoverPolicyDataInterface { + AutoFailoverPolicyType getPolicy_type(); + + Map getParameters(); + + void setPolicy_type(AutoFailoverPolicyType policyType); + + void setParameters(Map parameters); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataInterface.java new file mode 100644 index 0000000000000..4ca15c9b4fa0e --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataInterface.java @@ -0,0 +1,39 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.List; + +public interface BrokerNamespaceIsolationDataInterface { + String getBrokerName(); + + String getPolicyName(); + + boolean isPrimary(); + + List getNamespaceRegex(); + + void setBrokerName(String brokerName); + + void setPolicyName(String policyName); + + void setPrimary(boolean isPrimary); + + void setNamespaceRegex(List namespaceRegex); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainInterface.java new file mode 100644 index 0000000000000..885d9a5456064 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainInterface.java @@ -0,0 +1,27 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Set; + +public interface FailureDomainInterface { + Set getBrokers(); + + void setBrokers(Set brokers); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java similarity index 100% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ManagedLedgerInternalStats.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java index bfa558a640104..5d5ad8b489f78 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java @@ -28,7 +28,7 @@ public interface NamespaceIsolationDataInterface { List getSecondary(); - AutoFailoverPolicyData getAuto_failover_policy(); + AutoFailoverPolicyDataInterface getAuto_failover_policy(); void setNamespaces(List namespaces); @@ -36,6 +36,6 @@ public interface NamespaceIsolationDataInterface { void setSecondary(List secondary); - void setAuto_failover_policy(AutoFailoverPolicyData autoFailoverPolicyData); + void setAuto_failover_policy(AutoFailoverPolicyDataInterface autoFailoverPolicyData); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoInterface.java new file mode 100644 index 0000000000000..4cca2c9a85799 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoInterface.java @@ -0,0 +1,31 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Set; + +public interface TenantInfoInterface { + Set getAdminRoles(); + + void setAdminRoles(Set adminRoles); + + Set getAllowedClusters(); + + void setAllowedClusters(Set allowedClusters); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java index 0d2a33471a558..4f099229e155b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionCoordinatorInternalStats.java @@ -23,6 +23,6 @@ */ public class TransactionCoordinatorInternalStats { - /** The transaction coordinator log stats */ + /** The transaction coordinator log stats. */ public TransactionLogStats transactionLogStats; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java index fab2e609363c7..35fadd18c85b8 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionLogStats.java @@ -23,9 +23,9 @@ */ public class TransactionLogStats { - /** The managed ledger name*/ - public String managedLedgerName ; + /** The managed ledger name. */ + public String managedLedgerName; - /** The manage ledger internal stats*/ + /** The manage ledger internal stats. */ public ManagedLedgerInternalStats managedLedgerInternalStats; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java index 8a8163926ed0a..cf513018c65ba 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TransactionPendingAckInternalStats.java @@ -23,6 +23,6 @@ */ public class TransactionPendingAckInternalStats { - /** The transaction pending ack log stats */ + /** The transaction pending ack log stats. */ public TransactionLogStats pendingAckLogStats; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java index 7a3f37168c586..6da3f8349222d 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java @@ -19,7 +19,7 @@ package org.apache.pulsar.common.policies.impl; import org.apache.pulsar.common.policies.AutoFailoverPolicy; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataInterface; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; /** @@ -27,11 +27,11 @@ */ public class AutoFailoverPolicyFactory { - public static AutoFailoverPolicy create(AutoFailoverPolicyData policyData) { + public static AutoFailoverPolicy create(AutoFailoverPolicyDataInterface policyData) { // TODO: Add more policy types when needed - if (!AutoFailoverPolicyType.min_available.equals(policyData.policy_type)) { + if (!AutoFailoverPolicyType.min_available.equals(policyData.getPolicy_type())) { // right now, only support one type of policy: MinAvailablePolicy - throw new IllegalArgumentException("Unrecognized auto_failover_policy: " + policyData.policy_type); + throw new IllegalArgumentException("Unrecognized auto_failover_policy: " + policyData.getPolicy_type()); } return new MinAvailablePolicy(policyData); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java index 1688859ab3119..d1814f647fda8 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java @@ -21,7 +21,7 @@ import java.util.Objects; import java.util.SortedSet; import org.apache.pulsar.common.policies.AutoFailoverPolicy; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataInterface; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; @@ -43,18 +43,18 @@ public class MinAvailablePolicy extends AutoFailoverPolicy { this.usage_threshold = usageThreshold; } - public MinAvailablePolicy(AutoFailoverPolicyData policyData) { - if (!policyData.policy_type.equals(AutoFailoverPolicyType.min_available)) { + public MinAvailablePolicy(AutoFailoverPolicyDataInterface policyData) { + if (!policyData.getPolicy_type().equals(AutoFailoverPolicyType.min_available)) { throw new IllegalArgumentException(); } - if (!policyData.parameters.containsKey(MIN_LIMIT_KEY)) { + if (!policyData.getParameters().containsKey(MIN_LIMIT_KEY)) { throw new IllegalArgumentException(); } - if (!policyData.parameters.containsKey(USAGE_THRESHOLD_KEY)) { + if (!policyData.getParameters().containsKey(USAGE_THRESHOLD_KEY)) { throw new IllegalArgumentException(); } - this.min_limit = Integer.parseInt(policyData.parameters.get(MIN_LIMIT_KEY)); - this.usage_threshold = Integer.parseInt(policyData.parameters.get(USAGE_THRESHOLD_KEY)); + this.min_limit = Integer.parseInt(policyData.getParameters().get(MIN_LIMIT_KEY)); + this.usage_threshold = Integer.parseInt(policyData.getParameters().get(USAGE_THRESHOLD_KEY)); } @Override diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index 52d3bc88d1a2d..86ca2136cf507 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -18,6 +18,7 @@ */ package org.apache.pulsar.client.admin.internal; +import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; @@ -35,9 +36,11 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @@ -268,7 +271,7 @@ public void failed(Throwable throwable) { } @Override - public List getBrokersWithNamespaceIsolationPolicy(String cluster) + public List getBrokersWithNamespaceIsolationPolicy(String cluster) throws PulsarAdminException { try { return getBrokersWithNamespaceIsolationPolicyAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -283,15 +286,17 @@ public List getBrokersWithNamespaceIsolationPolicy } @Override - public CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( + public CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( String cluster) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path("brokers"); - final CompletableFuture> future = new CompletableFuture<>(); + final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback>() { @Override public void completed(List brokerNamespaceIsolationData) { - future.complete(brokerNamespaceIsolationData); + List data = + new ArrayList<>(brokerNamespaceIsolationData); + future.complete(data); } @Override @@ -303,7 +308,7 @@ public void failed(Throwable throwable) { } @Override - public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) + public BrokerNamespaceIsolationDataInterface getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) throws PulsarAdminException { try { return getBrokerWithNamespaceIsolationPolicyAsync(cluster, broker) @@ -319,10 +324,10 @@ public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy(String } @Override - public CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( + public CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( String cluster, String broker) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path("brokers").path(broker); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override @@ -440,24 +445,26 @@ public void failed(Throwable throwable) { } @Override - public void createFailureDomain(String cluster, String domainName, FailureDomain domain) + public void createFailureDomain(String cluster, String domainName, FailureDomainInterface domain) throws PulsarAdminException { setDomain(cluster, domainName, domain); } @Override - public CompletableFuture createFailureDomainAsync(String cluster, String domainName, FailureDomain domain) { + public CompletableFuture createFailureDomainAsync(String cluster, String domainName, + FailureDomainInterface domain) { return setDomainAsync(cluster, domainName, domain); } @Override - public void updateFailureDomain(String cluster, String domainName, FailureDomain domain) + public void updateFailureDomain(String cluster, String domainName, FailureDomainInterface domain) throws PulsarAdminException { setDomain(cluster, domainName, domain); } @Override - public CompletableFuture updateFailureDomainAsync(String cluster, String domainName, FailureDomain domain) { + public CompletableFuture updateFailureDomainAsync(String cluster, String domainName, + FailureDomainInterface domain) { return setDomainAsync(cluster, domainName, domain); } @@ -482,7 +489,7 @@ public CompletableFuture deleteFailureDomainAsync(String cluster, String d } @Override - public Map getFailureDomains(String cluster) throws PulsarAdminException { + public Map getFailureDomains(String cluster) throws PulsarAdminException { try { return getFailureDomainsAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -496,14 +503,15 @@ public Map getFailureDomains(String cluster) throws Pulsa } @Override - public CompletableFuture> getFailureDomainsAsync(String cluster) { + public CompletableFuture> getFailureDomainsAsync(String cluster) { WebTarget path = adminClusters.path(cluster).path("failureDomains"); - final CompletableFuture> future = new CompletableFuture<>(); + final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback>() { @Override public void completed(Map failureDomains) { - future.complete(failureDomains); + Map result = new HashMap<>(failureDomains); + future.complete(result); } @Override @@ -515,7 +523,7 @@ public void failed(Throwable throwable) { } @Override - public FailureDomain getFailureDomain(String cluster, String domainName) throws PulsarAdminException { + public FailureDomainInterface getFailureDomain(String cluster, String domainName) throws PulsarAdminException { try { return getFailureDomainAsync(cluster, domainName).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -529,9 +537,9 @@ public FailureDomain getFailureDomain(String cluster, String domainName) throws } @Override - public CompletableFuture getFailureDomainAsync(String cluster, String domainName) { + public CompletableFuture getFailureDomainAsync(String cluster, String domainName) { WebTarget path = adminClusters.path(cluster).path("failureDomains").path(domainName); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override @@ -548,7 +556,7 @@ public void failed(Throwable throwable) { } private void setDomain(String cluster, String domainName, - FailureDomain domain) throws PulsarAdminException { + FailureDomainInterface domain) throws PulsarAdminException { try { setDomainAsync(cluster, domainName, domain).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -562,8 +570,8 @@ private void setDomain(String cluster, String domainName, } private CompletableFuture setDomainAsync(String cluster, String domainName, - FailureDomain domain) { + FailureDomainInterface domain) { WebTarget path = adminClusters.path(cluster).path("failureDomains").path(domainName); - return asyncPostRequest(path, Entity.entity(domain, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((FailureDomain) domain, MediaType.APPLICATION_JSON)); } } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java index 390ef00ca676b..2de5c4c3a38bc 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java @@ -32,6 +32,7 @@ import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoInterface; @SuppressWarnings("deprecation") public class TenantsImpl extends BaseResource implements Tenants, Properties { @@ -75,7 +76,7 @@ public void failed(Throwable throwable) { } @Override - public TenantInfo getTenantInfo(String tenant) throws PulsarAdminException { + public TenantInfoInterface getTenantInfo(String tenant) throws PulsarAdminException { try { return getTenantInfoAsync(tenant).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -89,9 +90,9 @@ public TenantInfo getTenantInfo(String tenant) throws PulsarAdminException { } @Override - public CompletableFuture getTenantInfoAsync(String tenant) { + public CompletableFuture getTenantInfoAsync(String tenant) { WebTarget path = adminTenants.path(tenant); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override @@ -108,7 +109,7 @@ public void failed(Throwable throwable) { } @Override - public void createTenant(String tenant, TenantInfo config) throws PulsarAdminException { + public void createTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException { try { createTenantAsync(tenant, config) .get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -123,13 +124,13 @@ public void createTenant(String tenant, TenantInfo config) throws PulsarAdminExc } @Override - public CompletableFuture createTenantAsync(String tenant, TenantInfo config) { + public CompletableFuture createTenantAsync(String tenant, TenantInfoInterface config) { WebTarget path = adminTenants.path(tenant); - return asyncPutRequest(path, Entity.entity(config, MediaType.APPLICATION_JSON)); + return asyncPutRequest(path, Entity.entity((TenantInfo) config, MediaType.APPLICATION_JSON)); } @Override - public void updateTenant(String tenant, TenantInfo config) throws PulsarAdminException { + public void updateTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException { try { updateTenantAsync(tenant, config).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -143,9 +144,9 @@ public void updateTenant(String tenant, TenantInfo config) throws PulsarAdminExc } @Override - public CompletableFuture updateTenantAsync(String tenant, TenantInfo config) { + public CompletableFuture updateTenantAsync(String tenant, TenantInfoInterface config) { WebTarget path = adminTenants.path(tenant); - return asyncPostRequest(path, Entity.entity(config, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((TenantInfo) config, MediaType.APPLICATION_JSON)); } @Override @@ -191,12 +192,12 @@ public CompletableFuture deleteTenantAsync(String tenant, boolean force) { // Compat method names @Override - public void createProperty(String tenant, TenantInfo config) throws PulsarAdminException { + public void createProperty(String tenant, TenantInfoInterface config) throws PulsarAdminException { createTenant(tenant, config); } @Override - public void updateProperty(String tenant, TenantInfo config) throws PulsarAdminException { + public void updateProperty(String tenant, TenantInfoInterface config) throws PulsarAdminException { updateTenant(tenant, config); } @@ -211,7 +212,7 @@ public List getProperties() throws PulsarAdminException { } @Override - public TenantInfo getPropertyAdmin(String tenant) throws PulsarAdminException { + public TenantInfoInterface getPropertyAdmin(String tenant) throws PulsarAdminException { return getTenantInfo(tenant); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java index 3a96d75b2d9eb..629b20ed5330f 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java @@ -29,6 +29,7 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import com.beust.jcommander.Parameter; @@ -94,10 +95,11 @@ private class GetAllBrokersWithPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - List brokers = getAdmin().clusters() + List brokers = getAdmin().clusters() .getBrokersWithNamespaceIsolationPolicy(clusterName); - - print(brokers); + List data = new ArrayList<>(); + brokers.forEach(v -> data.add((BrokerNamespaceIsolationData) v)); + print(data); } } @@ -112,7 +114,7 @@ private class GetBrokerWithPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - BrokerNamespaceIsolationData brokerData = getAdmin().clusters() + BrokerNamespaceIsolationData brokerData = (BrokerNamespaceIsolationData) getAdmin().clusters() .getBrokerWithNamespaceIsolationPolicy(clusterName, broker); print(brokerData); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java similarity index 54% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java index 10136b7cd789b..fea6b04e43460 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java @@ -18,63 +18,64 @@ */ package org.apache.pulsar.common.policies.data; +import static com.google.common.base.Preconditions.checkArgument; +import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Map; -import java.util.Objects; +import lombok.Data; import org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory; /** * The auto failover policy configuration data. */ @ApiModel( - value = "AutoFailoverPolicyData", - description = "The auto failover policy configuration data" + value = "AutoFailoverPolicyData", + description = "The auto failover policy configuration data" ) -public class AutoFailoverPolicyData { +@Data +public class AutoFailoverPolicyData implements AutoFailoverPolicyDataInterface { @ApiModelProperty( - name = "policy_type", - value = "The auto failover policy type", - allowableValues = "min_available" + name = "policy_type", + value = "The auto failover policy type", + allowableValues = "min_available" ) @SuppressWarnings("checkstyle:MemberName") public AutoFailoverPolicyType policy_type; @ApiModelProperty( - name = "parameters", - value = - "The parameters applied to the auto failover policy specified by `policy_type`.\n" - + "The parameters for 'min_available' are :\n" - + " - 'min_limit': the limit of minimal number of available brokers in primary" - + " group before auto failover\n" - + " - 'usage_threshold': the resource usage threshold. If the usage of a broker" - + " is beyond this value, it would be marked as unavailable\n", - example = - "{\n" - + " \"min_limit\": 3,\n" - + " \"usage_threshold\": 80\n" - + "}\n" + name = "parameters", + value = + "The parameters applied to the auto failover policy specified by `policy_type`.\n" + + "The parameters for 'min_available' are :\n" + + " - 'min_limit': the limit of minimal number of available brokers in primary" + + " group before auto failover\n" + + " - 'usage_threshold': the resource usage threshold. If the usage of a broker" + + " is beyond this value, it would be marked as unavailable\n", + example = + "{\n" + + " \"min_limit\": 3,\n" + + " \"usage_threshold\": 80\n" + + "}\n" ) public Map parameters; @Override public int hashCode() { - return Objects.hash(policy_type, parameters); + return Objects.hashCode(policy_type, parameters); } @Override public boolean equals(Object obj) { if (obj instanceof AutoFailoverPolicyData) { AutoFailoverPolicyData other = (AutoFailoverPolicyData) obj; - return Objects.equals(policy_type, other.policy_type) && Objects.equals(parameters, other.parameters); + return Objects.equal(policy_type, other.policy_type) && Objects.equal(parameters, other.parameters); } return false; } public void validate() { - if (!(policy_type != null && parameters != null)){ - throw new IllegalArgumentException(); - } + checkArgument(policy_type != null && parameters != null); AutoFailoverPolicyFactory.create(this); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java similarity index 72% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java index c3d3300b2d479..7b0616c054cd3 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java @@ -18,54 +18,56 @@ */ package org.apache.pulsar.common.policies.data; +import com.google.common.base.Objects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import java.util.List; -import java.util.Objects; /** * The namespace isolation data for a given broker. */ @ApiModel( - value = "BrokerNamespaceIsolationData", - description = "The namespace isolation data for a given broker" + value = "BrokerNamespaceIsolationData", + description = "The namespace isolation data for a given broker" ) -public class BrokerNamespaceIsolationData { +@Data +public class BrokerNamespaceIsolationData implements BrokerNamespaceIsolationDataInterface { @ApiModelProperty( - name = "brokerName", - value = "The broker name", - example = "broker1:8080" + name = "brokerName", + value = "The broker name", + example = "broker1:8080" ) public String brokerName; @ApiModelProperty( name = "policyName", value = "Policy name", example = "my-policy" - ) + ) public String policyName; @ApiModelProperty( name = "isPrimary", value = "Is Primary broker", example = "true/false" - ) + ) public boolean isPrimary; @ApiModelProperty( - name = "namespaceRegex", - value = "The namespace-isolation policies attached to this broker" + name = "namespaceRegex", + value = "The namespace-isolation policies attached to this broker" ) public List namespaceRegex; //isolated namespace regex @Override public int hashCode() { - return Objects.hash(brokerName, namespaceRegex); + return Objects.hashCode(brokerName, namespaceRegex); } @Override public boolean equals(Object obj) { if (obj instanceof BrokerNamespaceIsolationData) { BrokerNamespaceIsolationData other = (BrokerNamespaceIsolationData) obj; - return Objects.equals(brokerName, other.brokerName) && Objects.equals(namespaceRegex, other.namespaceRegex); + return Objects.equal(brokerName, other.brokerName) && Objects.equal(namespaceRegex, other.namespaceRegex); } return false; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java similarity index 94% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java index 6fce8bd4e8aa7..a1721be888b98 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java @@ -23,6 +23,8 @@ import java.util.HashSet; import java.util.Objects; import java.util.Set; + +import lombok.Data; import lombok.ToString; /** @@ -33,7 +35,8 @@ description = "The data of a failure domain configuration in a cluster" ) @ToString -public class FailureDomain { +@Data +public class FailureDomain implements FailureDomainInterface { @ApiModelProperty( name = "brokers", @@ -42,10 +45,12 @@ public class FailureDomain { ) public Set brokers = new HashSet(); + @Override public Set getBrokers() { return brokers; } + @Override public void setBrokers(Set brokers) { this.brokers = brokers; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java index 1dd38120c2503..27032b84de117 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java @@ -113,4 +113,9 @@ public String toString() { return String.format("namespaces=%s primary=%s secondary=%s auto_failover_policy=%s", namespaces, primary, secondary, auto_failover_policy); } + + @Override + public void setAuto_failover_policy(AutoFailoverPolicyDataInterface autoFailoverPolicyData) { + this.auto_failover_policy = (AutoFailoverPolicyData) autoFailoverPolicyData; + } } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java similarity index 81% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java index 2953f095a68f4..8471952f75e9b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java @@ -18,9 +18,9 @@ */ package org.apache.pulsar.common.policies.data; +import com.google.common.collect.Sets; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import java.util.HashSet; import java.util.Set; import lombok.Data; @@ -29,13 +29,13 @@ */ @Data @ApiModel(value = "TenantInfo", description = "Information of adminRoles and allowedClusters for tenant") -public class TenantInfo { +public class TenantInfo implements TenantInfoInterface { /** * List of role enabled as admin for this tenant. */ @ApiModelProperty( - value = "Comma separated list of auth principal allowed to administrate the tenant.", - name = "adminRoles" + value = "Comma separated list of auth principal allowed to administrate the tenant.", + name = "adminRoles" ) private Set adminRoles; @@ -43,14 +43,14 @@ public class TenantInfo { * List of clusters this tenant is restricted on. */ @ApiModelProperty( - value = "Comma separated allowed clusters.", - name = "allowedClusters" + value = "Comma separated allowed clusters.", + name = "allowedClusters" ) private Set allowedClusters; public TenantInfo() { - adminRoles = new HashSet<>(); - allowedClusters = new HashSet<>(); + adminRoles = Sets.newHashSet(); + allowedClusters = Sets.newHashSet(); } public TenantInfo(Set adminRoles, Set allowedClusters) { @@ -58,18 +58,22 @@ public TenantInfo(Set adminRoles, Set allowedClusters) { this.allowedClusters = allowedClusters; } + @Override public Set getAdminRoles() { return adminRoles; } + @Override public void setAdminRoles(Set adminRoles) { this.adminRoles = adminRoles; } + @Override public Set getAllowedClusters() { return allowedClusters; } + @Override public void setAllowedClusters(Set allowedClusters) { this.allowedClusters = allowedClusters; } diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java index 1c442a49a40f4..5a7cdac11b6f5 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java @@ -1448,7 +1448,7 @@ public boolean isAuthorizedRole(String tenant, String namespace, String clientRo if (clientRole != null) { try { - TenantInfo tenantInfo = worker().getBrokerAdmin().tenants().getTenantInfo(tenant); + TenantInfo tenantInfo = (TenantInfo) worker().getBrokerAdmin().tenants().getTenantInfo(tenant); if (tenantInfo != null && worker().getAuthorizationService().isTenantAdmin(tenant, clientRole, tenantInfo, authenticationData).get()) { return true; } diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java index 23c9a9ee588e2..7f4dbaaa61ce9 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java @@ -23,6 +23,10 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.gson.Gson; import java.time.Duration; import java.util.Collections; @@ -32,9 +36,12 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import lombok.Cleanup; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.BatcherBuilder; @@ -43,19 +50,30 @@ import org.apache.pulsar.client.api.MessageId; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClient; +import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.Schema; +import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.client.api.SubscriptionType; +import org.apache.pulsar.client.api.schema.GenericRecord; import org.apache.pulsar.client.impl.PulsarClientImpl; +import org.apache.pulsar.client.impl.schema.generic.GenericJsonRecord; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatsUtil; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.FunctionStatusUtil; +import org.apache.pulsar.common.policies.data.RetentionPolicies; +import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TopicStats; +import org.apache.pulsar.common.schema.KeyValue; +import org.apache.pulsar.common.schema.KeyValueEncodingType; import org.apache.pulsar.common.schema.SchemaInfo; +import org.apache.pulsar.common.schema.SchemaType; import org.apache.pulsar.functions.api.examples.AutoSchemaFunction; import org.apache.pulsar.functions.api.examples.AvroSchemaTestFunction; +import org.apache.pulsar.functions.api.examples.MergeTopicFunction; import org.apache.pulsar.functions.api.examples.pojo.AvroTestObject; +import org.apache.pulsar.functions.api.examples.pojo.Users; import org.apache.pulsar.functions.api.examples.serde.CustomObject; import org.apache.pulsar.tests.integration.docker.ContainerExecException; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; @@ -73,6 +91,8 @@ @Slf4j public abstract class PulsarFunctionsTest extends PulsarFunctionsTestBase { + private final ObjectMapper objectMapper = new ObjectMapper(); + public PulsarFunctionsTest(FunctionRuntimeType functionRuntimeType) { super(functionRuntimeType); } @@ -81,13 +101,13 @@ protected Map produceMessagesToInputTopic(String inputTopicName, int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Producer producer = client.newProducer(Schema.STRING) - .topic(inputTopicName) - .create(); + .topic(inputTopicName) + .create(); LinkedHashMap kvs = new LinkedHashMap<>(); for (int i = 0; i < numMessages; i++) { @@ -95,9 +115,9 @@ protected Map produceMessagesToInputTopic(String inputTopicName, String value = "value-" + i; kvs.put(key, value); producer.newMessage() - .key(key) - .value(value) - .send(); + .key(key) + .value(value) + .send(); } return kvs; } @@ -536,7 +556,8 @@ protected void testPublishFunction(Runtime runtime) throws Exception { null, PUBLISH_JAVA_CLASS, schema, - Collections.singletonMap("publish-topic", outputTopicName)); + Collections.singletonMap("publish-topic", outputTopicName), + null, null, null); break; case PYTHON: submitFunction( @@ -547,7 +568,8 @@ protected void testPublishFunction(Runtime runtime) throws Exception { PUBLISH_FUNCTION_PYTHON_FILE, PUBLISH_PYTHON_CLASS, schema, - Collections.singletonMap("publish-topic", outputTopicName)); + Collections.singletonMap("publish-topic", outputTopicName), + null, null, null); break; case GO: submitFunction( @@ -558,7 +580,8 @@ protected void testPublishFunction(Runtime runtime) throws Exception { PUBLISH_FUNCTION_GO_FILE, null, schema, - Collections.singletonMap("publish-topic", outputTopicName)); + Collections.singletonMap("publish-topic", outputTopicName), + null, null, null); } // get function info @@ -628,9 +651,9 @@ protected void testPublishFunction(Runtime runtime) throws Exception { } protected void testExclamationFunction(Runtime runtime, - boolean isTopicPattern, - boolean pyZip, - boolean withExtraDeps) throws Exception { + boolean isTopicPattern, + boolean pyZip, + boolean withExtraDeps) throws Exception { if (functionRuntimeType == FunctionRuntimeType.THREAD && runtime == Runtime.PYTHON) { // python can only run on process mode return; @@ -673,7 +696,7 @@ protected void testExclamationFunction(Runtime runtime, // submit the exclamation function submitExclamationFunction( - runtime, inputTopicName, outputTopicName, functionName, pyZip, withExtraDeps, schema); + runtime, inputTopicName, outputTopicName, functionName, pyZip, withExtraDeps, schema); // get function info getFunctionInfoSuccess(functionName); @@ -714,33 +737,33 @@ protected void testExclamationFunction(Runtime runtime, } private void submitExclamationFunction(Runtime runtime, - String inputTopicName, - String outputTopicName, - String functionName, - boolean pyZip, - boolean withExtraDeps, - Schema schema) throws Exception { - submitFunction( - runtime, - inputTopicName, - outputTopicName, - functionName, - pyZip, - withExtraDeps, - false, - getExclamationClass(runtime, pyZip, withExtraDeps), - schema); - } - - private void submitFunction(Runtime runtime, String inputTopicName, String outputTopicName, String functionName, boolean pyZip, boolean withExtraDeps, - boolean isPublishFunction, - String functionClass, - Schema inputTopicSchema) throws Exception { + Schema schema) throws Exception { + submitFunction( + runtime, + inputTopicName, + outputTopicName, + functionName, + pyZip, + withExtraDeps, + false, + getExclamationClass(runtime, pyZip, withExtraDeps), + schema); + } + + private void submitFunction(Runtime runtime, + String inputTopicName, + String outputTopicName, + String functionName, + boolean pyZip, + boolean withExtraDeps, + boolean isPublishFunction, + String functionClass, + Schema inputTopicSchema) throws Exception { String file = null; if (Runtime.JAVA == runtime) { @@ -761,26 +784,30 @@ private void submitFunction(Runtime runtime, } private void submitFunction(Runtime runtime, - String inputTopicName, - String outputTopicName, - String functionName, - String functionFile, - String functionClass, - Schema inputTopicSchema) throws Exception { - submitFunction(runtime, inputTopicName, outputTopicName, functionName, functionFile, functionClass, inputTopicSchema, null); + String inputTopicName, + String outputTopicName, + String functionName, + String functionFile, + String functionClass, + Schema inputTopicSchema) throws Exception { + submitFunction(runtime, inputTopicName, outputTopicName, functionName, functionFile, functionClass, + inputTopicSchema, null, null, null, null); } private void submitFunction(Runtime runtime, - String inputTopicName, - String outputTopicName, - String functionName, - String functionFile, - String functionClass, - Schema inputTopicSchema, - Map userConfigs) throws Exception { + String inputTopicName, + String outputTopicName, + String functionName, + String functionFile, + String functionClass, + Schema inputTopicSchema, + Map userConfigs, + String customSchemaInputs, + String outputSchemaType, + SubscriptionInitialPosition subscriptionInitialPosition) throws Exception { CommandGenerator generator; - log.info("------- INPUT TOPIC: '{}'", inputTopicName); + log.info("------- INPUT TOPIC: '{}', customSchemaInputs: {}", inputTopicName, customSchemaInputs); if (inputTopicName.endsWith(".*")) { log.info("----- CREATING TOPIC PATTERN FUNCTION --- "); generator = CommandGenerator.createTopicPatternGenerator(inputTopicName, functionClass); @@ -793,6 +820,15 @@ private void submitFunction(Runtime runtime, if (userConfigs != null) { generator.setUserConfig(userConfigs); } + if (customSchemaInputs != null) { + generator.setCustomSchemaInputs(customSchemaInputs); + } + if (outputSchemaType != null) { + generator.setSchemaType(outputSchemaType); + } + if (subscriptionInitialPosition != null) { + generator.setSubscriptionInitialPosition(subscriptionInitialPosition); + } String command = ""; switch (runtime){ @@ -816,7 +852,10 @@ private void submitFunction(Runtime runtime, commands); assertTrue(result.getStdout().contains("\"Created successfully\"")); - ensureSubscriptionCreated(inputTopicName, String.format("public/default/%s", functionName), inputTopicSchema); + if (StringUtils.isNotEmpty(inputTopicName)) { + ensureSubscriptionCreated( + inputTopicName, String.format("public/default/%s", functionName), inputTopicSchema); + } } private void updateFunctionParallelism(String functionName, int parallelism) throws Exception { @@ -836,13 +875,13 @@ private void updateFunctionParallelism(String functionName, int parallelism) thr } protected void submitFunction(Runtime runtime, - String inputTopicName, - String outputTopicName, - String functionName, - String functionFile, - String functionClass, - String outputSerdeClassName, - Map userConfigs) throws Exception { + String inputTopicName, + String outputTopicName, + String functionName, + String functionFile, + String functionClass, + String outputSerdeClassName, + Map userConfigs) throws Exception { CommandGenerator generator; log.info("------- INPUT TOPIC: '{}'", inputTopicName); @@ -879,30 +918,30 @@ protected void submitFunction(Runtime runtime, } private void ensureSubscriptionCreated(String inputTopicName, - String subscriptionName, - Schema inputTopicSchema) + String subscriptionName, + Schema inputTopicSchema) throws Exception { // ensure the function subscription exists before we start producing messages try (PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build()) { + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build()) { try (Consumer ignored = client.newConsumer(inputTopicSchema) - .topic(inputTopicName) - .subscriptionType(SubscriptionType.Shared) - .subscriptionName(subscriptionName) - .subscribe()) { + .topic(inputTopicName) + .subscriptionType(SubscriptionType.Shared) + .subscriptionName(subscriptionName) + .subscribe()) { } } } protected void getFunctionInfoSuccess(String functionName) throws Exception { ContainerExecResult result = pulsarCluster.getAnyWorker().execCmd( - PulsarCluster.ADMIN_SCRIPT, - "functions", - "get", - "--tenant", "public", - "--namespace", "default", - "--name", functionName + PulsarCluster.ADMIN_SCRIPT, + "functions", + "get", + "--tenant", "public", + "--namespace", "default", + "--name", functionName ); log.info("FUNCTION STATE: {}", result.getStdout()); @@ -1046,7 +1085,7 @@ private void getFunctionStatus(String functionName, int numMessages, boolean che } private void getFunctionStatus(String functionName, int numMessages, boolean checkRestarts, int parallelism) - throws Exception { + throws Exception { Awaitility.await() .pollInterval(Duration.ofSeconds(1)) .atMost(Duration.ofSeconds(15)) @@ -1058,12 +1097,12 @@ private void getFunctionStatus(String functionName, int numMessages, boolean che private void doGetFunctionStatus(String functionName, int numMessages, boolean checkRestarts, int parallelism) throws Exception { ContainerExecResult result = pulsarCluster.getAnyWorker().execCmd( - PulsarCluster.ADMIN_SCRIPT, - "functions", - "status", - "--tenant", "public", - "--namespace", "default", - "--name", functionName + PulsarCluster.ADMIN_SCRIPT, + "functions", + "status", + "--tenant", "public", + "--namespace", "default", + "--name", functionName ); FunctionStatus functionStatus = FunctionStatusUtil.decode(result.getStdout()); @@ -1100,17 +1139,17 @@ private void doGetFunctionStatus(String functionName, int numMessages, boolean c } private void publishAndConsumeMessages(String inputTopic, - String outputTopic, - int numMessages) throws Exception { + String outputTopic, + int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Consumer consumer = client.newConsumer(Schema.STRING) - .topic(outputTopic) - .subscriptionType(SubscriptionType.Exclusive) - .subscriptionName("test-sub") - .subscribe(); + .topic(outputTopic) + .subscriptionType(SubscriptionType.Exclusive) + .subscriptionName("test-sub") + .subscribe(); if (inputTopic.endsWith(".*")) { @Cleanup Producer producer1 = client.newProducer(Schema.STRING) @@ -1152,17 +1191,17 @@ private void publishAndConsumeMessages(String inputTopic, } private void publishAndConsumeMessagesBytes(String inputTopic, - String outputTopic, - int numMessages) throws Exception { + String outputTopic, + int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Consumer consumer = client.newConsumer(Schema.BYTES) - .topic(outputTopic) - .subscriptionType(SubscriptionType.Exclusive) - .subscriptionName("test-sub") - .subscribe(); + .topic(outputTopic) + .subscriptionType(SubscriptionType.Exclusive) + .subscriptionName("test-sub") + .subscribe(); if (inputTopic.endsWith(".*")) { @Cleanup Producer producer1 = client.newProducer(Schema.BYTES) @@ -1206,12 +1245,12 @@ private void publishAndConsumeMessagesBytes(String inputTopic, private void deleteFunction(String functionName) throws Exception { ContainerExecResult result = pulsarCluster.getAnyWorker().execCmd( - PulsarCluster.ADMIN_SCRIPT, - "functions", - "delete", - "--tenant", "public", - "--namespace", "default", - "--name", functionName + PulsarCluster.ADMIN_SCRIPT, + "functions", + "delete", + "--tenant", "public", + "--namespace", "default", + "--name", functionName ); assertTrue(result.getStdout().contains("Deleted successfully")); result.assertNoStderr(); @@ -1227,15 +1266,15 @@ public void testAutoSchemaFunction() throws Exception { // submit the exclamation function submitFunction( - Runtime.JAVA, - inputTopicName, - outputTopicName, - functionName, - false, - false, - false, - AutoSchemaFunction.class.getName(), - Schema.AVRO(CustomObject.class)); + Runtime.JAVA, + inputTopicName, + outputTopicName, + functionName, + false, + false, + false, + AutoSchemaFunction.class.getName(), + Schema.AVRO(CustomObject.class)); // get function info getFunctionInfoSuccess(functionName); @@ -1255,22 +1294,22 @@ public void testAutoSchemaFunction() throws Exception { } private void publishAndConsumeAvroMessages(String inputTopic, - String outputTopic, - int numMessages) throws Exception { + String outputTopic, + int numMessages) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() - .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) - .build(); + .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) + .build(); @Cleanup Consumer consumer = client.newConsumer(Schema.STRING) - .topic(outputTopic) - .subscriptionType(SubscriptionType.Exclusive) - .subscriptionName("test-sub") - .subscribe(); + .topic(outputTopic) + .subscriptionType(SubscriptionType.Exclusive) + .subscriptionName("test-sub") + .subscribe(); @Cleanup Producer producer = client.newProducer(Schema.AVRO(CustomObject.class)) - .topic(inputTopic) - .create(); + .topic(inputTopic) + .create(); for (int i = 0; i < numMessages; i++) { CustomObject co = new CustomObject(i); @@ -1455,9 +1494,9 @@ protected void testLoggingFunction(Runtime runtime) throws Exception { } private void submitJavaLoggingFunction(String inputTopicName, - String logTopicName, - String functionName, - Schema schema) throws Exception { + String logTopicName, + String functionName, + Schema schema) throws Exception { CommandGenerator generator; log.info("------- INPUT TOPIC: '{}'", inputTopicName); if (inputTopicName.endsWith(".*")) { @@ -1483,9 +1522,9 @@ private void submitJavaLoggingFunction(String inputTopicName, } private void publishAndConsumeMessages(String inputTopic, - String outputTopic, - int numMessages, - String messagePostfix) throws Exception { + String outputTopic, + int numMessages, + String messagePostfix) throws Exception { @Cleanup PulsarClient client = PulsarClient.builder() .serviceUrl(pulsarCluster.getPlainTextServiceUrl()) .build(); @@ -1522,4 +1561,192 @@ private void publishAndConsumeMessages(String inputTopic, client.close(); } + protected void testMergeFunction() throws Exception { + log.info("start merge function test ..."); + + String ns = "public/ns-merge-" + randomName(8); + @Cleanup + PulsarAdmin pulsarAdmin = getPulsarAdmin(); + pulsarAdmin.namespaces().createNamespace(ns); + pulsarAdmin.namespaces().setSchemaCompatibilityStrategy(ns, SchemaCompatibilityStrategy.ALWAYS_COMPATIBLE); + SchemaCompatibilityStrategy strategy = pulsarAdmin.namespaces().getSchemaCompatibilityStrategy(ns); + log.info("namespace {} SchemaCompatibilityStrategy is {}", ns, strategy); + + @Cleanup + PulsarClient pulsarClient = getPulsarClient(); + + ObjectNode inputSpecNode = objectMapper.createObjectNode(); + Map topicMsgCntMap = new ConcurrentHashMap<>(); + int messagePerTopic = 10; + prepareDataForMergeFunction(ns, pulsarClient, inputSpecNode, messagePerTopic, topicMsgCntMap); + + final String outputTopic = ns + "/test-merge-output"; + @Cleanup + Consumer consumer = pulsarClient + .newConsumer(Schema.AUTO_CONSUME()) + .subscriptionName("test-merge-fn") + .subscriptionInitialPosition(SubscriptionInitialPosition.Earliest) + .topic(outputTopic) + .subscribe(); + + final String functionName = "test-merge-fn-" + randomName(8); + submitFunction( + Runtime.JAVA, + "", + outputTopic, + functionName, + null, + MergeTopicFunction.class.getName(), + null, + null, + inputSpecNode.toString(), + SchemaType.AUTO_PUBLISH.name().toUpperCase(), + SubscriptionInitialPosition.Earliest); + + getFunctionInfoSuccess(functionName); + + getFunctionStatus(functionName, topicMsgCntMap.keySet().size() * messagePerTopic, true); + + Message message; + do { + message = consumer.receive(30, TimeUnit.SECONDS); + if (message != null) { + String baseTopic = message.getProperty("baseTopic"); + GenericRecord genericRecord = message.getValue(); + log.info("receive msg baseTopic: {}, schemaType: {}, nativeClass: {}, nativeObject: {}", + baseTopic, + genericRecord.getSchemaType(), + genericRecord.getNativeObject().getClass(), + genericRecord.getNativeObject()); + checkSchemaForAutoSchema(message, baseTopic); + topicMsgCntMap.get(baseTopic).decrementAndGet(); + consumer.acknowledge(message); + } + } while (message != null); + + for (Map.Entry entry : topicMsgCntMap.entrySet()) { + assertEquals(entry.getValue().get(), 0, + "topic " + entry.getKey() + " left message cnt is not 0."); + } + + deleteFunction(functionName); + + getFunctionInfoNotFound(functionName); + log.info("finish merge function test."); + } + + private void prepareDataForMergeFunction(String ns, + PulsarClient pulsarClient, + ObjectNode inputSpecNode, + int messagePerTopic, + Map topicMsgCntMap) throws PulsarClientException { + generateDataByDifferentSchema(ns, "merge-schema-bytes", pulsarClient, + Schema.BYTES, "bytes schema test".getBytes(), messagePerTopic, inputSpecNode, topicMsgCntMap); + generateDataByDifferentSchema(ns, "merge-schema-string", pulsarClient, + Schema.STRING, "string schema test", messagePerTopic, inputSpecNode, topicMsgCntMap); + generateDataByDifferentSchema(ns, "merge-schema-json-userv1", pulsarClient, + Schema.JSON(Users.UserV1.class), new Users.UserV1("ran", 33), + messagePerTopic, inputSpecNode, topicMsgCntMap); + generateDataByDifferentSchema(ns, "merge-schema-json-userv2", pulsarClient, + Schema.JSON(Users.UserV2.class), new Users.UserV2("tang", 18, "123123123"), + messagePerTopic, inputSpecNode, topicMsgCntMap); + generateDataByDifferentSchema(ns, "merge-schema-avro-userv2", pulsarClient, + Schema.AVRO(Users.UserV2.class), new Users.UserV2("tang", 20, "456456456"), + messagePerTopic, inputSpecNode, topicMsgCntMap); + generateDataByDifferentSchema(ns, "merge-schema-k-int-v-json-userv1-separate", pulsarClient, + Schema.KeyValue(Schema.INT32, Schema.JSON(Users.UserV1.class), KeyValueEncodingType.SEPARATED), + new KeyValue<>(100, new Users.UserV1("ran", 40)), + messagePerTopic, inputSpecNode, topicMsgCntMap); + generateDataByDifferentSchema(ns, "merge-schema-k-json-userv2-v-json-userv1-inline", pulsarClient, + Schema.KeyValue(Schema.JSON(Users.UserV2.class), Schema.JSON(Users.UserV1.class), + KeyValueEncodingType.INLINE), + new KeyValue<>(new Users.UserV2("tang", 20, "789789789"), + new Users.UserV1("ran", 40)), + messagePerTopic, inputSpecNode, topicMsgCntMap); + } + + private void generateDataByDifferentSchema(String ns, + String baseTopic, + PulsarClient pulsarClient, + Schema schema, + Object data, + int messageCnt, + ObjectNode inputSpecNode, + Map topicMsgCntMap) throws PulsarClientException { + String topic = ns + "/" + baseTopic; + Producer producer = pulsarClient.newProducer(schema) + .topic(topic) + .create(); + for (int i = 0; i < messageCnt; i++) { + producer.newMessage().value(data).property("baseTopic", baseTopic).send(); + } + ObjectNode confNode = objectMapper.createObjectNode(); + confNode.put("schemaType", SchemaType.AUTO_CONSUME.name().toUpperCase()); + inputSpecNode.put(topic, confNode.toString()); + topicMsgCntMap.put(baseTopic, new AtomicInteger(messageCnt)); + producer.close(); + log.info("[merge-fn] generate {} messages for schema {}", messageCnt, schema.getSchemaInfo()); + } + + private void checkSchemaForAutoSchema(Message message, String baseTopic) { + if (!message.getReaderSchema().isPresent()) { + fail("Failed to get reader schema for auto consume multiple schema topic."); + } + Object nativeObject = message.getValue().getNativeObject(); + JsonNode jsonNode; + KeyValue kv; + switch (baseTopic) { + case "merge-schema-bytes": + assertEquals(new String((byte[]) nativeObject), "bytes schema test"); + break; + case "merge-schema-string": + assertEquals((String) nativeObject, "string schema test"); + break; + case "merge-schema-json-userv1": + jsonNode = (JsonNode) nativeObject; + assertEquals(jsonNode.get("name").textValue(), "ran"); + assertEquals(jsonNode.get("age").intValue(), 33); + break; + case "merge-schema-json-userv2": + jsonNode = (JsonNode) nativeObject; + assertEquals(jsonNode.get("name").textValue(), "tang"); + assertEquals(jsonNode.get("age").intValue(), 18); + assertEquals(jsonNode.get("phone").textValue(), "123123123"); + break; + case "merge-schema-avro-userv2": + org.apache.avro.generic.GenericRecord genericRecord = + (org.apache.avro.generic.GenericRecord) nativeObject; + assertEquals(genericRecord.get("name").toString(), "tang"); + assertEquals(genericRecord.get("age"), 20); + assertEquals(genericRecord.get("phone").toString(), "456456456"); + break; + case "merge-schema-k-int-v-json-userv1-separate": + kv = (KeyValue) nativeObject; + assertEquals(kv.getKey(), 100); + jsonNode = ((GenericJsonRecord) kv.getValue()).getJsonNode(); + assertEquals(jsonNode.get("name").textValue(), "ran"); + assertEquals(jsonNode.get("age").intValue(), 40); + break; + case "merge-schema-k-json-userv2-v-json-userv1-inline": + kv = (KeyValue) nativeObject; + jsonNode = ((GenericJsonRecord) kv.getKey()).getJsonNode(); + assertEquals(jsonNode.get("name").textValue(), "tang"); + assertEquals(jsonNode.get("age").intValue(), 20); + assertEquals(jsonNode.get("phone").textValue(), "789789789"); + jsonNode = ((GenericJsonRecord) kv.getValue()).getJsonNode(); + assertEquals(jsonNode.get("name").textValue(), "ran"); + assertEquals(jsonNode.get("age").intValue(), 40); + break; + default: + // nothing to do + } + } + + private PulsarClient getPulsarClient() throws PulsarClientException { + return PulsarClient.builder().serviceUrl(pulsarCluster.getPlainTextServiceUrl()).build(); + } + + private PulsarAdmin getPulsarAdmin() throws PulsarClientException { + return PulsarAdmin.builder().serviceHttpUrl(pulsarCluster.getHttpServiceUrl()).build(); + } } From dc7aee8a384915cd8f96061474e6ac1f606dd185 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 21:16:01 +0800 Subject: [PATCH 28/51] remove io.swagger --- pulsar-client-admin-api/pom.xml | 6 ------ .../pulsar/common/policies/data/AutoFailoverPolicyType.java | 6 ------ 2 files changed, 12 deletions(-) diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index 38e2d55727f26..be9f346da8ec7 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -40,12 +40,6 @@ ${project.version} - - io.swagger - swagger-annotations - provided - - org.apache.commons commons-lang3 diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java index 57229e653f0c1..31d01231778f1 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyType.java @@ -18,15 +18,9 @@ */ package org.apache.pulsar.common.policies.data; -import io.swagger.annotations.ApiModel; - /** * The policy type of auto failover. */ -@ApiModel( - value = "AutoFailoverPolicyType", - description = "The policy type of auto failover." -) public enum AutoFailoverPolicyType { min_available; From ec10ed8b36023ba3053689ded8bf5eb9aed5d7c5 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 21:23:04 +0800 Subject: [PATCH 29/51] remove commons-lang3 --- pulsar-client-admin-api/pom.xml | 6 ------ .../java/org/apache/pulsar/client/admin/Bookies.java | 5 +++-- .../policies/data/BookiesRackConfiguration.java | 8 ++++---- .../pulsar/client/admin/internal/BookiesImpl.java | 11 ++++++----- 4 files changed, 13 insertions(+), 17 deletions(-) rename {pulsar-common => pulsar-client-admin-api}/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java (92%) diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml index be9f346da8ec7..113040546b3b5 100644 --- a/pulsar-client-admin-api/pom.xml +++ b/pulsar-client-admin-api/pom.xml @@ -40,12 +40,6 @@ ${project.version} - - org.apache.commons - commons-lang3 - provided - - org.slf4j slf4j-api diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java index e22e32087ec5a..c25e41c26fc3b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java @@ -23,6 +23,7 @@ import java.util.concurrent.CompletableFuture; import org.apache.pulsar.common.policies.data.BookieInfo; import org.apache.pulsar.common.policies.data.BookiesClusterInfo; +import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; /** * Admin interface for bookies rack placement management. @@ -32,12 +33,12 @@ public interface Bookies { /** * Gets the rack placement information for all the bookies in the cluster. */ - TreeMap> getBookiesRackInfo() throws PulsarAdminException; + BookiesRackConfiguration getBookiesRackInfo() throws PulsarAdminException; /** * Gets the rack placement information for all the bookies in the cluster asynchronously. */ - CompletableFuture>> getBookiesRackInfoAsync(); + CompletableFuture getBookiesRackInfoAsync(); /** * Gets discovery information for all the bookies in the cluster. diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java similarity index 92% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java index 60bd0397013b2..f7f477c0e06c9 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BookiesRackConfiguration.java @@ -18,8 +18,8 @@ */ package org.apache.pulsar.common.policies.data; -import static com.google.common.base.Preconditions.checkNotNull; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.TreeMap; @@ -53,9 +53,9 @@ public synchronized Optional getBookie(String address) { } public synchronized void updateBookie(String group, String address, BookieInfo bookieInfo) { - checkNotNull(group); - checkNotNull(address); - checkNotNull(bookieInfo); + Objects.requireNonNull(group); + Objects.requireNonNull(address); + Objects.requireNonNull(bookieInfo); // Remove from any group first removeBookie(address); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java index 3d9e19cd1666d..56247050f8248 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java @@ -33,6 +33,7 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.BookieInfo; import org.apache.pulsar.common.policies.data.BookiesClusterInfo; +import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; public class BookiesImpl extends BaseResource implements Bookies { private final WebTarget adminBookies; @@ -43,7 +44,7 @@ public BookiesImpl(WebTarget web, Authentication auth, long readTimeoutMs) { } @Override - public TreeMap> getBookiesRackInfo() throws PulsarAdminException { + public BookiesRackConfiguration getBookiesRackInfo() throws PulsarAdminException { try { return getBookiesRackInfoAsync().get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -90,13 +91,13 @@ public BookiesClusterInfo getBookies() throws PulsarAdminException { } @Override - public CompletableFuture>> getBookiesRackInfoAsync() { + public CompletableFuture getBookiesRackInfoAsync() { WebTarget path = adminBookies.path("racks-info"); - final CompletableFuture>> future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback>>() { + new InvocationCallback() { @Override - public void completed(TreeMap> bookiesRackConfiguration) { + public void completed(BookiesRackConfiguration bookiesRackConfiguration) { future.complete(bookiesRackConfiguration); } From 4b123ae39b32151bc6349a51037469184fe82f96 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 21:52:57 +0800 Subject: [PATCH 30/51] use Objects.requireNonNull --- .../apache/pulsar/common/policies/data/ConsumerStats.java | 5 ++--- .../common/policies/data/NonPersistentPublisherStats.java | 6 +++--- .../common/policies/data/NonPersistentReplicatorStats.java | 6 +++--- .../policies/data/NonPersistentSubscriptionStats.java | 6 +++--- .../common/policies/data/NonPersistentTopicStats.java | 5 ++--- .../apache/pulsar/common/policies/data/ReplicatorStats.java | 6 +++--- .../pulsar/common/policies/data/SubscriptionStats.java | 5 ++--- .../org/apache/pulsar/common/policies/data/TopicStats.java | 5 ++--- 8 files changed, 20 insertions(+), 24 deletions(-) diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java index 18b2b1d56017f..4bba99798f6ed 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ConsumerStats.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; +import java.util.Objects; /** * Consumer statistics. @@ -96,9 +97,7 @@ public class ConsumerStats { private StringBuilder stringBuffer = new StringBuilder(); public ConsumerStats add(ConsumerStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); this.msgRateOut += stats.msgRateOut; this.msgThroughputOut += stats.msgThroughputOut; this.bytesOutCounter += stats.bytesOutCounter; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java index 3888e87b80ebb..74e17524c8548 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentPublisherStats.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.common.policies.data; +import java.util.Objects; + /** * Non-persistent publisher statistics. */ @@ -29,9 +31,7 @@ public class NonPersistentPublisherStats extends PublisherStats { public double msgDropRate; public NonPersistentPublisherStats add(NonPersistentPublisherStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java index 9174f5af3c523..d27813c3b272f 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentReplicatorStats.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.common.policies.data; +import java.util.Objects; + /** * Statistics for a non-persistent replicator. */ @@ -29,9 +31,7 @@ public class NonPersistentReplicatorStats extends ReplicatorStats { public double msgDropRate; public NonPersistentReplicatorStats add(NonPersistentReplicatorStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java index 69e8867b20d2a..8d06d41991c21 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentSubscriptionStats.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.common.policies.data; +import java.util.Objects; + /** * Statistics for subscription to non-persistent topics. */ @@ -37,9 +39,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats public NonPersistentSubscriptionStats add(NonPersistentSubscriptionStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java index 66c700227d59f..fd06101d7facc 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NonPersistentTopicStats.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.TreeMap; /** @@ -58,9 +59,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats. public NonPersistentTopicStats add(NonPersistentTopicStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); super.add(stats); this.msgDropRate += stats.msgDropRate; return this; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java index 88d5c77767cbe..2969b512c6e52 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ReplicatorStats.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.common.policies.data; +import java.util.Objects; + /** * Statistics about a replicator. */ @@ -60,9 +62,7 @@ public class ReplicatorStats { public String outboundConnectedSince; public ReplicatorStats add(ReplicatorStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; this.msgRateOut += stats.msgRateOut; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java index 1d7c1584e1d3a..7685c72c24813 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/SubscriptionStats.java @@ -22,6 +22,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Statistics about subscription. @@ -143,9 +144,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats public SubscriptionStats add(SubscriptionStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); this.msgRateOut += stats.msgRateOut; this.msgThroughputOut += stats.msgThroughputOut; this.bytesOutCounter += stats.bytesOutCounter; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java index 36004242c3fc1..a86b928187697 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TopicStats.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.TreeMap; /** @@ -124,9 +125,7 @@ public void reset() { // if the stats are added for the 1st time, we will need to make a copy of these stats and add it to the current // stats. public TopicStats add(TopicStats stats) { - if (stats == null) { - throw new NullPointerException(); - } + Objects.requireNonNull(stats); this.count++; this.msgRateIn += stats.msgRateIn; this.msgThroughputIn += stats.msgThroughputIn; From 0e85893fe7b1d66760029fa9c8a5fd414009fd71 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 22:27:34 +0800 Subject: [PATCH 31/51] remove commons-lang3 --- .../apache/pulsar/client/admin/Bookies.java | 2 - .../common/policies/data/OffloadPolicies.java | 9 ++--- .../core/common/PackageMetadata.java | 18 --------- .../client/admin/internal/BookiesImpl.java | 2 - .../core/common/PackageMetadataUtil.java | 40 +++++++++++++++++++ .../core/impl/PackagesManagementImpl.java | 7 ++-- .../core/common/PackageMetadataSerdeTest.java | 6 +-- .../core/impl/PackagesManagementImplTest.java | 5 ++- 8 files changed, 54 insertions(+), 35 deletions(-) create mode 100644 pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadataUtil.java diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java index c25e41c26fc3b..6734925b1ff49 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Bookies.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.client.admin; -import java.util.Map; -import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import org.apache.pulsar.common.policies.data.BookieInfo; import org.apache.pulsar.common.policies.data.BookiesClusterInfo; diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java index 7cd5904205f85..a39e53ac2262a 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -34,7 +34,6 @@ import lombok.Data; import lombok.ToString; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.common.classification.InterfaceAudience; import org.apache.pulsar.common.classification.InterfaceStability; @@ -237,7 +236,7 @@ public boolean driverSupported() { } public static String getSupportedDriverNames() { - return StringUtils.join(DRIVER_NAMES, ","); + return String.join(",", DRIVER_NAMES); } public boolean isS3Driver() { @@ -266,13 +265,13 @@ public boolean bucketValid() { if (managedLedgerOffloadDriver == null) { return false; } - if (StringUtils.isNotEmpty(managedLedgerOffloadBucket)) { + if (managedLedgerOffloadBucket != null && !managedLedgerOffloadBucket.isEmpty()) { return true; } if (isS3Driver()) { - return StringUtils.isNotEmpty(s3ManagedLedgerOffloadBucket); + return s3ManagedLedgerOffloadBucket != null && !s3ManagedLedgerOffloadBucket.isEmpty(); } else if (isGcsDriver()) { - return StringUtils.isNotEmpty(gcsManagedLedgerOffloadBucket); + return gcsManagedLedgerOffloadBucket != null && !gcsManagedLedgerOffloadBucket.isEmpty(); } else if (isFileSystemDriver()) { return true; } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java index ac5cf6a788d1a..164e6c7cdc4ce 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadata.java @@ -27,8 +27,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.apache.commons.lang3.SerializationUtils; -import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException.MetadataFormatException; /** * Package metadata. @@ -45,20 +43,4 @@ public class PackageMetadata implements Serializable { long createTime; long modificationTime; Map properties; - - public static PackageMetadata fromBytes(byte[] bytes) throws MetadataFormatException { - try { - Object o = SerializationUtils.deserialize(bytes); - if (!(o instanceof PackageMetadata)) { - throw new MetadataFormatException("Unexpected metadata format"); - } - return (PackageMetadata) o; - } catch (Exception e) { - throw new MetadataFormatException("Unexpected error", e); - } - } - - public byte[] toBytes() { - return SerializationUtils.serialize(this); - } } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java index 56247050f8248..164e9ea41c62b 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BookiesImpl.java @@ -18,8 +18,6 @@ */ package org.apache.pulsar.client.admin.internal; -import java.util.Map; -import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; diff --git a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadataUtil.java b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadataUtil.java new file mode 100644 index 0000000000000..523bdfe27b93f --- /dev/null +++ b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/common/PackageMetadataUtil.java @@ -0,0 +1,40 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.packages.management.core.common; + +import org.apache.commons.lang3.SerializationUtils; +import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException; + +public class PackageMetadataUtil { + public static PackageMetadata fromBytes(byte[] bytes) throws PackagesManagementException.MetadataFormatException { + try { + Object o = SerializationUtils.deserialize(bytes); + if (!(o instanceof PackageMetadata)) { + throw new PackagesManagementException.MetadataFormatException("Unexpected metadata format"); + } + return (PackageMetadata) o; + } catch (Exception e) { + throw new PackagesManagementException.MetadataFormatException("Unexpected error", e); + } + } + + public static byte[] toBytes(PackageMetadata packageMetadata) { + return SerializationUtils.serialize(packageMetadata); + } +} diff --git a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java index cbc6f27b49a2c..be6d356434b19 100644 --- a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java +++ b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java @@ -28,6 +28,7 @@ import org.apache.pulsar.packages.management.core.PackagesManagement; import org.apache.pulsar.packages.management.core.PackagesStorage; import org.apache.pulsar.packages.management.core.common.PackageMetadata; +import org.apache.pulsar.packages.management.core.common.PackageMetadataUtil; import org.apache.pulsar.packages.management.core.common.PackageName; import org.apache.pulsar.packages.management.core.common.PackageType; import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException; @@ -83,7 +84,7 @@ public CompletableFuture updateMeta(PackageName packageName, PackageMetada future.completeExceptionally(throwable); return; } - try (ByteArrayInputStream inputStream = new ByteArrayInputStream(metadata.toBytes())) { + try (ByteArrayInputStream inputStream = new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) { storage.deleteAsync(metadataPath) .thenCompose(aVoid -> storage.writeAsync(metadataPath, inputStream)) .whenComplete((aVoid, t) -> { @@ -105,7 +106,7 @@ public CompletableFuture updateMeta(PackageName packageName, PackageMetada private CompletableFuture writeMeta(PackageName packageName, PackageMetadata metadata) { CompletableFuture future = new CompletableFuture<>(); String metadataPath = metadataPath(packageName); - try (ByteArrayInputStream inputStream = new ByteArrayInputStream(metadata.toBytes())) { + try (ByteArrayInputStream inputStream = new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) { storage.writeAsync(metadataPath, inputStream) .whenComplete((aVoid, t) -> { if (t != null) { @@ -234,7 +235,7 @@ private CompletableFuture checkPackageExistsAndThrowException(PackageName private CompletableFuture metadataReadFromStream(ByteArrayOutputStream outputStream) { CompletableFuture future = new CompletableFuture<>(); try { - PackageMetadata metadata = PackageMetadata.fromBytes(outputStream.toByteArray()); + PackageMetadata metadata = PackageMetadataUtil.fromBytes(outputStream.toByteArray()); future.complete(metadata); } catch (PackagesManagementException.MetadataFormatException e) { future.completeExceptionally(e); diff --git a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java index 98b216883b244..fd74a81e663f0 100644 --- a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java +++ b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/common/PackageMetadataSerdeTest.java @@ -35,10 +35,10 @@ public void testPackageMetadataSerDe() { .modificationTime(System.currentTimeMillis() + 1000) .properties(properties).build(); - byte[] metadataSerialized = metadata.toBytes(); + byte[] metadataSerialized = PackageMetadataUtil.toBytes(metadata); try { - PackageMetadata deSerializedMetadata = PackageMetadata.fromBytes(metadataSerialized); + PackageMetadata deSerializedMetadata = PackageMetadataUtil.fromBytes(metadataSerialized); Assert.assertEquals(metadata, deSerializedMetadata); } catch (PackagesManagementException.MetadataFormatException e) { Assert.fail("should not throw any exception"); @@ -46,7 +46,7 @@ public void testPackageMetadataSerDe() { try { byte[] failedMetadataSerialized = "wrong package metadata".getBytes(); - PackageMetadata deSerializedMetadata = PackageMetadata.fromBytes(failedMetadataSerialized); + PackageMetadata deSerializedMetadata = PackageMetadataUtil.fromBytes(failedMetadataSerialized); Assert.fail("should throw the metadata format exception"); } catch (PackagesManagementException.MetadataFormatException e) { // expected error diff --git a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java index 777c86ba5e3f8..6dc28352c00c2 100644 --- a/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java +++ b/pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImplTest.java @@ -28,6 +28,7 @@ import org.apache.pulsar.packages.management.core.PackagesStorage; import org.apache.pulsar.packages.management.core.PackagesStorageProvider; import org.apache.pulsar.packages.management.core.common.PackageMetadata; +import org.apache.pulsar.packages.management.core.common.PackageMetadataUtil; import org.apache.pulsar.packages.management.core.common.PackageName; import org.apache.pulsar.packages.management.core.exceptions.PackagesManagementException; import org.testng.Assert; @@ -119,7 +120,7 @@ public void testPackagesManagementFlow() { .contact("test@apache.org") .description("A mocked test package") .createTime(System.currentTimeMillis()).build(); - try (ByteArrayInputStream inputStream= new ByteArrayInputStream(metadata.toBytes())) { + try (ByteArrayInputStream inputStream= new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) { packagesManagement.upload(packageName, metadata, inputStream).get(); } catch (Exception e) { Assert.fail("should not throw any exception"); @@ -136,7 +137,7 @@ public void testPackagesManagementFlow() { // download an existent package should succeed try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { packagesManagement.download(packageName, outputStream).get(); - PackageMetadata getPackage = PackageMetadata.fromBytes(outputStream.toByteArray()); + PackageMetadata getPackage = PackageMetadataUtil.fromBytes(outputStream.toByteArray()); Assert.assertEquals(metadata, getPackage); } catch (Exception e) { Assert.fail("should not throw any exception"); From 76773369a509ec169d91f72fd33ecc8f16abf60b Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sat, 29 May 2021 23:05:57 +0800 Subject: [PATCH 32/51] fix interface mapping --- .../admin/internal/JacksonConfigurator.java | 30 ------------------- .../common/util/ObjectMapperFactory.java | 22 ++++++++++++++ 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java index 87364e21ac855..ad9a5e61cf4bd 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/JacksonConfigurator.java @@ -24,20 +24,7 @@ import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; import org.apache.pulsar.client.admin.OffloadProcessStatus; -import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; -import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; -import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; -import org.apache.pulsar.common.policies.data.ResourceQuota; -import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; -import org.apache.pulsar.common.stats.Metrics; -import org.apache.pulsar.common.stats.MetricsMixIn; import org.apache.pulsar.common.util.ObjectMapperFactory; -import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; -import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; /** * Provides custom configuration for jackson. @@ -61,23 +48,6 @@ private void setInterfaceDefaultMapperModule() { SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(OffloadProcessStatus.class, OffloadProcessStatusImpl.class); - // we use customized deserializer to replace jackson annotations in some POJOs - module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); - - // we use MixIn class to add jackson annotations - mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); - mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); - mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); - mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); - mapper.addMixIn(FunctionStats.class, FunctionStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); - mapper.addMixIn(Metrics.class, MetricsMixIn.class); - module.setAbstractTypes(resolver); mapper.registerModule(module); } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index e83fae2c48070..84021bfeeba97 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -21,18 +21,31 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import io.netty.util.concurrent.FastThreadLocal; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataInterface; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; +import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataInterface; +import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; +import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; +import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoInterface; import org.apache.pulsar.common.stats.Metrics; import org.apache.pulsar.common.stats.MetricsMixIn; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -87,6 +100,13 @@ private static void setAnnotationsModule(ObjectMapper mapper) { // we use customized deserializer to replace jackson annotations in some POJOs module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); + SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); + resolver.addMapping(AutoFailoverPolicyDataInterface.class, AutoFailoverPolicyData.class); + resolver.addMapping(BrokerNamespaceIsolationDataInterface.class, BrokerNamespaceIsolationData.class); + resolver.addMapping(ClusterDataInterface.class, ClusterData.class); + resolver.addMapping(FailureDomainInterface.class, FailureDomain.class); + resolver.addMapping(NamespaceIsolationDataInterface.class, NamespaceIsolationData.class); + resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); // we use MixIn class to add jackson annotations mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); @@ -102,6 +122,8 @@ private static void setAnnotationsModule(ObjectMapper mapper) { FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); mapper.addMixIn(Metrics.class, MetricsMixIn.class); + module.setAbstractTypes(resolver); + mapper.registerModule(module); } From 1c82c6b49a25c1ed223df1638642b3a34a77abc8 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sun, 30 May 2021 11:13:20 +0800 Subject: [PATCH 33/51] fix ci --- .../pulsar/broker/admin/impl/PersistentTopicsBase.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 c522557d9ffa1..55b19cf4073ff 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 @@ -1162,15 +1162,14 @@ protected void internalGetManagedLedgerInfo(AsyncResponse asyncResponse, boolean clientAppId(), topicNamePartition, throwable); asyncResponse.resume(new RestException(throwable)); } - Gson gson = new GsonBuilder().setPrettyPrinting().create(); try { partitionedManagedLedgerInfo.partitions.put(topicNamePartition.toString(), - jsonMapper().readValue(gson.toJson(response), + jsonMapper().readValue(response, ManagedLedgerInfo.class)); } catch (JsonProcessingException ex) { log.error("[{}] Failed to parse ManagedLedgerInfo for {} from [{}]", clientAppId(), - topicNamePartition, gson.toJson(response), ex); + topicNamePartition, response, ex); } })); } catch (Exception e) { From 3044a8656b4f9af15e07534fd42c82d55e220a46 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sun, 30 May 2021 14:42:56 +0800 Subject: [PATCH 34/51] extract OffloadPoliciesInterface --- .../mledger/impl/ManagedLedgerImpl.java | 2 +- .../mledger/impl/OffloadPrefixReadTest.java | 5 +- .../mledger/impl/OffloadPrefixTest.java | 3 +- .../pulsar/broker/ServiceConfiguration.java | 3 +- .../apache/pulsar/broker/PulsarService.java | 3 +- .../broker/admin/impl/NamespacesBase.java | 2 +- .../admin/impl/PersistentTopicsBase.java | 7 +- .../pulsar/broker/service/BrokerService.java | 8 +- .../broker/admin/AdminApiOffloadTest.java | 16 +- .../pulsar/broker/admin/NamespacesTest.java | 9 +- .../pulsar/client/admin/Namespaces.java | 10 +- .../apache/pulsar/client/admin/Topics.java | 14 +- .../common/policies/data/OffloadPolicies.java | 431 ------------- .../data/OffloadPoliciesInterface.java | 133 ++++ .../policies/data/OffloadedReadPriority.java | 72 +++ .../pulsar/common/policies/data/Policies.java | 2 +- .../client/admin/internal/NamespacesImpl.java | 12 +- .../client/admin/internal/TopicsImpl.java | 17 +- .../pulsar/admin/cli/PulsarAdminToolTest.java | 10 +- .../pulsar/admin/cli/CmdNamespaces.java | 5 +- .../apache/pulsar/admin/cli/CmdTopics.java | 5 +- .../common/policies/data/OffloadPolicies.java | 583 ++++++++++++++++++ .../policies/data/OffloadPoliciesUtil.java | 196 ------ .../common/util/ObjectMapperFactory.java | 3 + .../policies/data/OffloadPoliciesTest.java | 21 +- .../sql/presto/PulsarConnectorConfig.java | 3 +- .../pulsar/sql/presto/PulsarSplitManager.java | 2 +- .../sql/presto/TestPulsarSplitManager.java | 6 +- .../offload/filesystem/FileStoreTestBase.java | 3 +- .../impl/BlobStoreManagedLedgerOffloader.java | 3 +- 30 files changed, 872 insertions(+), 717 deletions(-) delete mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesInterface.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadedReadPriority.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java delete mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java index a338c3067eb3c..49fddac0e5306 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java @@ -128,7 +128,7 @@ import org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition; import org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfig; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.util.DateFormatter; import org.apache.pulsar.common.util.FutureUtil; diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java index bb4370262a93e..f7597bf2dee10 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java @@ -59,8 +59,7 @@ import org.apache.bookkeeper.net.BookieId; import org.apache.bookkeeper.test.MockedBookKeeperTestCase; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.testng.Assert; import org.testng.annotations.Test; @@ -203,7 +202,7 @@ static class MockLedgerOffloader implements LedgerOffloader { ConcurrentHashMap offloads = new ConcurrentHashMap(); - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create("S3", "", "", "", + OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java index 174287801b7fd..ffbc2ae27a68d 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java @@ -49,7 +49,6 @@ import org.apache.bookkeeper.test.MockedBookKeeperTestCase; import org.apache.commons.lang3.tuple.Pair; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Test; @@ -992,7 +991,7 @@ Set deletedOffloads() { return deletes.keySet(); } - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create("S3", "", "", "", + OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java index 94a4ba17627c4..1c69c90503318 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java @@ -42,6 +42,7 @@ import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.TopicType; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.sasl.SaslConstants; @@ -1581,7 +1582,7 @@ public class ServiceConfiguration implements PulsarConfiguration { @FieldContext(category = CATEGORY_STORAGE_ML, doc = "Read priority when ledgers exists in both bookkeeper and the second layer storage.") - private String managedLedgerDataReadPriority = OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST + private String managedLedgerDataReadPriority = OffloadedReadPriority.TIERED_STORAGE_FIRST .getValue(); /*** --- Load balancer --- ****/ diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java index 10259d656b754..667b390152ae8 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java @@ -125,7 +125,6 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.protocol.schema.SchemaStorage; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.netty.EventLoopUtil; @@ -644,7 +643,7 @@ config, localMetadataStore, getZkClient(), bkClientFactory, ioEventLoopGroup schemaStorage, config.getSchemaRegistryCompatibilityCheckers()); this.defaultOffloader = createManagedLedgerOffloader( - OffloadPoliciesUtil.create(this.getConfiguration().getProperties())); + OffloadPolicies.create(this.getConfiguration().getProperties())); this.brokerInterceptor = BrokerInterceptors.load(config); brokerService.setInterceptor(getBrokerInterceptor()); this.brokerInterceptor.initialize(this); 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 25fe227c218bb..3ee8e3a5cf352 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 @@ -2538,7 +2538,7 @@ protected OffloadPolicies internalGetOffloadPolicies() { validateNamespacePolicyOperation(namespaceName, PolicyName.OFFLOAD, PolicyOperation.READ); Policies policies = getNamespacePolicies(namespaceName); - return policies.offload_policies; + return (OffloadPolicies) policies.offload_policies; } protected int internalGetMaxTopicsPerNamespace() { 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 55b19cf4073ff..bf833fab81b65 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 @@ -26,8 +26,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import io.netty.buffer.ByteBuf; import java.io.IOException; import java.util.ArrayList; @@ -108,7 +106,6 @@ import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -776,8 +773,8 @@ protected CompletableFuture internalGetOffloadPolicies(boolean OffloadPolicies offloadPolicies = getTopicPolicies(topicName).map(TopicPolicies::getOffloadPolicies).orElse(null); if (applied) { - OffloadPolicies namespacePolicy = getNamespacePolicies(namespaceName).offload_policies; - offloadPolicies = OffloadPoliciesUtil.mergeConfiguration(offloadPolicies + OffloadPolicies namespacePolicy = (OffloadPolicies) getNamespacePolicies(namespaceName).offload_policies; + offloadPolicies = OffloadPolicies.mergeConfiguration(offloadPolicies , namespacePolicy, pulsar().getConfiguration().getProperties()); } return CompletableFuture.completedFuture(offloadPolicies); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java index 35cf8e334eed2..d8558bb651ad8 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java @@ -145,7 +145,6 @@ import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentOfflineTopicStats; import org.apache.pulsar.common.policies.data.Policies; @@ -1363,10 +1362,11 @@ public CompletableFuture getManagedLedgerConfig(TopicName t managedLedgerConfig.setAutoSkipNonRecoverableData(serviceConfig.isAutoSkipNonRecoverableData()); managedLedgerConfig.setLazyCursorRecovery(serviceConfig.isLazyCursorRecovery()); - OffloadPolicies nsLevelOffloadPolicies = policies.map(p -> p.offload_policies).orElse(null); - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.mergeConfiguration( + OffloadPolicies nsLevelOffloadPolicies = + (OffloadPolicies) policies.map(p -> p.offload_policies).orElse(null); + OffloadPolicies offloadPolicies = OffloadPolicies.mergeConfiguration( topicLevelOffloadPolicies, - OffloadPoliciesUtil.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), + OffloadPolicies.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), getPulsar().getConfig().getProperties()); if (topicLevelOffloadPolicies != null) { try { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java index a9a36f45ff819..db2c5c92518c5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java @@ -48,7 +48,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.Assert; @@ -171,17 +171,17 @@ public void testOffloadPolicies() throws Exception { String endpoint = "test-endpoint"; long offloadThresholdInBytes = 0; long offloadDeletionLagInMillis = 100L; - OffloadPolicies.OffloadedReadPriority priority = OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST; + OffloadedReadPriority priority = OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offload1 = OffloadPoliciesUtil.create( + OffloadPolicies offload1 = OffloadPolicies.create( driver, region, bucket, endpoint, null, null, null, null, 100, 100, offloadThresholdInBytes, offloadDeletionLagInMillis, priority); admin.namespaces().setOffloadPolicies(namespaceName, offload1); - OffloadPolicies offload2 = admin.namespaces().getOffloadPolicies(namespaceName); + OffloadPolicies offload2 = (OffloadPolicies) admin.namespaces().getOffloadPolicies(namespaceName); assertEquals(offload1, offload2); admin.namespaces().removeOffloadPolicies(namespaceName); - OffloadPolicies offload3 = admin.namespaces().getOffloadPolicies(namespaceName); + OffloadPolicies offload3 = (OffloadPolicies) admin.namespaces().getOffloadPolicies(namespaceName); assertNull(offload3); } @@ -192,7 +192,7 @@ public void testOffloadPoliciesApi() throws Exception { pulsarClient.newProducer().topic(topicName).create().close(); Awaitility.await() .until(() -> pulsar.getTopicPoliciesService().cacheIsInitialized(TopicName.get(topicName))); - OffloadPolicies offloadPolicies = admin.topics().getOffloadPolicies(topicName); + OffloadPolicies offloadPolicies = (OffloadPolicies) admin.topics().getOffloadPolicies(topicName); assertNull(offloadPolicies); OffloadPolicies offload = new OffloadPolicies(); String path = "fileSystemPath"; @@ -215,8 +215,8 @@ public void testOffloadPoliciesAppliedApi() throws Exception { pulsarClient.newProducer().topic(topicName).create().close(); Awaitility.await() .until(() -> pulsar.getTopicPoliciesService().cacheIsInitialized(TopicName.get(topicName))); - OffloadPolicies offloadPolicies = admin.topics().getOffloadPolicies(topicName, true); - OffloadPolicies brokerPolicies = OffloadPoliciesUtil + OffloadPolicies offloadPolicies = (OffloadPolicies) admin.topics().getOffloadPolicies(topicName, true); + OffloadPolicies brokerPolicies = OffloadPolicies .mergeConfiguration(null,null, pulsar.getConfiguration().getProperties()); assertEquals(offloadPolicies, brokerPolicies); 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 6d531e4b86b37..071b8b3f4c24e 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 @@ -86,7 +86,6 @@ import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -1318,7 +1317,7 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); // the ledger config should have the expected value ManagedLedgerConfig ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", + MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, @@ -1335,7 +1334,7 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(100, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); admin.namespaces().getOffloadPolicies(namespace); - offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, @@ -1351,7 +1350,7 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -2); assertEquals(-2, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, @@ -1367,7 +1366,7 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -1); assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPoliciesUtil.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", null, null, null, null, OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java index 556418093fe22..d44eeb6ed131f 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java @@ -37,7 +37,7 @@ import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -3681,7 +3681,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @throws PulsarAdminException * Unexpected error */ - void setOffloadPolicies(String namespace, OffloadPolicies offloadPolicies) throws PulsarAdminException; + void setOffloadPolicies(String namespace, OffloadPoliciesInterface offloadPolicies) throws PulsarAdminException; /** * Remove the offload configuration for a namespace. @@ -3722,7 +3722,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @param offloadPolicies * Offload configuration */ - CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPolicies offloadPolicies); + CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPoliciesInterface offloadPolicies); /** * Remove the offload configuration for a namespace asynchronously. @@ -3769,7 +3769,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @throws PulsarAdminException * Unexpected error */ - OffloadPolicies getOffloadPolicies(String namespace) throws PulsarAdminException; + OffloadPoliciesInterface getOffloadPolicies(String namespace) throws PulsarAdminException; /** * Get the offload configuration for a namespace asynchronously. @@ -3794,7 +3794,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @param namespace * Namespace name */ - CompletableFuture getOffloadPoliciesAsync(String namespace); + CompletableFuture getOffloadPoliciesAsync(String namespace); /** * Get maxTopicsPerNamespace for a namespace. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java index 66ac8c456ec3b..c2541b422adab 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java @@ -37,7 +37,7 @@ import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -2043,14 +2043,14 @@ void setInactiveTopicPolicies(String topic * @return * @throws PulsarAdminException */ - OffloadPolicies getOffloadPolicies(String topic) throws PulsarAdminException; + OffloadPoliciesInterface getOffloadPolicies(String topic) throws PulsarAdminException; /** * get offload policies of a topic asynchronously. * @param topic * @return */ - CompletableFuture getOffloadPoliciesAsync(String topic); + CompletableFuture getOffloadPoliciesAsync(String topic); /** * get applied offload policies of a topic. @@ -2058,14 +2058,14 @@ void setInactiveTopicPolicies(String topic * @return * @throws PulsarAdminException */ - OffloadPolicies getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException; + OffloadPoliciesInterface getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException; /** * get applied offload policies of a topic asynchronously. * @param topic * @return */ - CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied); + CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied); /** * set offload policies of a topic. @@ -2073,7 +2073,7 @@ void setInactiveTopicPolicies(String topic * @param offloadPolicies * @throws PulsarAdminException */ - void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) throws PulsarAdminException; + void setOffloadPolicies(String topic, OffloadPoliciesInterface offloadPolicies) throws PulsarAdminException; /** * set offload policies of a topic asynchronously. @@ -2081,7 +2081,7 @@ void setInactiveTopicPolicies(String topic * @param offloadPolicies * @return */ - CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPolicies offloadPolicies); + CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPoliciesInterface offloadPolicies); /** * remove offload policies of a topic. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java deleted file mode 100644 index a39e53ac2262a..0000000000000 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ /dev/null @@ -1,431 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.pulsar.common.policies.data; - -import java.io.Serializable; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Properties; -import java.util.stream.Collectors; -import lombok.Data; -import lombok.ToString; -import lombok.extern.slf4j.Slf4j; -import org.apache.pulsar.common.classification.InterfaceAudience; -import org.apache.pulsar.common.classification.InterfaceStability; - -/** - * Definition of the offload policies. - */ -@Slf4j -@Data -@ToString -public class OffloadPolicies implements Serializable { - - @InterfaceAudience.Public - @InterfaceStability.Stable - public enum OffloadedReadPriority { - /** - * For offloaded messages, readers will try to read from bookkeeper at first, - * if messages not exist at bookkeeper then read from offloaded storage. - */ - BOOKKEEPER_FIRST("bookkeeper-first"), - /** - * For offloaded messages, readers will try to read from offloaded storage first, - * even they are still exist in bookkeeper. - */ - TIERED_STORAGE_FIRST("tiered-storage-first"); - - private final String value; - - OffloadedReadPriority(String value) { - this.value = value; - } - - public boolean equalsName(String otherName) { - return value.equals(otherName); - } - - @Override - public String toString() { - return value; - } - - public static OffloadedReadPriority fromString(String str) { - for (OffloadedReadPriority value : OffloadedReadPriority.values()) { - if (value.value.equals(str)) { - return value; - } - } - - throw new IllegalArgumentException("--offloadedReadPriority parameter must be one of " - + Arrays.stream(OffloadedReadPriority.values()) - .map(OffloadedReadPriority::toString) - .collect(Collectors.joining(",")) - + " but got: " + str); - } - - public String getValue() { - return value; - } - } - - private final static long serialVersionUID = 0L; - - final static List CONFIGURATION_FIELDS; - - static { - CONFIGURATION_FIELDS = new ArrayList<>(); - Class clazz = OffloadPolicies.class; - Field[] fields = clazz.getDeclaredFields(); - for (Field field : fields) { - if (field.isAnnotationPresent(Configuration.class)) { - CONFIGURATION_FIELDS.add(field); - } - } - } - - public final static int DEFAULT_MAX_BLOCK_SIZE_IN_BYTES = 64 * 1024 * 1024; // 64MB - public final static int DEFAULT_READ_BUFFER_SIZE_IN_BYTES = 1024 * 1024; // 1MB - public final static int DEFAULT_OFFLOAD_MAX_THREADS = 2; - public final static int DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS = 1; - public final static List DRIVER_NAMES = Collections.unmodifiableList( - Arrays.asList("S3", "aws-s3", "google-cloud-storage", "filesystem", "azureblob", "aliyun-oss") - ); - public final static String DEFAULT_OFFLOADER_DIRECTORY = "./offloaders"; - public final static Long DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES = null; - public final static Long DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS = null; - - public final static String OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE = - "managedLedgerOffloadAutoTriggerSizeThresholdBytes"; - public final static String DELETION_LAG_NAME_IN_CONF_FILE = "managedLedgerOffloadDeletionLagMs"; - public final static OffloadedReadPriority DEFAULT_OFFLOADED_READ_PRIORITY = - OffloadedReadPriority.TIERED_STORAGE_FIRST; - - // common config - @Configuration - String offloadersDirectory = DEFAULT_OFFLOADER_DIRECTORY; - - @Configuration - String managedLedgerOffloadDriver = null; - - @Configuration - Integer managedLedgerOffloadMaxThreads = DEFAULT_OFFLOAD_MAX_THREADS; - - @Configuration - Integer managedLedgerOffloadPrefetchRounds = DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS; - - @Configuration - Long managedLedgerOffloadThresholdInBytes = DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; - - @Configuration - Long managedLedgerOffloadDeletionLagInMillis = DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; - - @Configuration - OffloadedReadPriority managedLedgerOffloadedReadPriority = DEFAULT_OFFLOADED_READ_PRIORITY; - - // s3 config, set by service configuration or cli - @Configuration - String s3ManagedLedgerOffloadRegion = null; - - @Configuration - String s3ManagedLedgerOffloadBucket = null; - - @Configuration - String s3ManagedLedgerOffloadServiceEndpoint = null; - - @Configuration - Integer s3ManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; - - @Configuration - Integer s3ManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; - - // s3 config, set by service configuration - @Configuration - String s3ManagedLedgerOffloadCredentialId = null; - - @Configuration - String s3ManagedLedgerOffloadCredentialSecret = null; - - @Configuration - String s3ManagedLedgerOffloadRole = null; - - @Configuration - String s3ManagedLedgerOffloadRoleSessionName = "pulsar-s3-offload"; - - // gcs config, set by service configuration or cli - @Configuration - String gcsManagedLedgerOffloadRegion = null; - - @Configuration - String gcsManagedLedgerOffloadBucket = null; - - @Configuration - Integer gcsManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; - - @Configuration - Integer gcsManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; - - // gcs config, set by service configuration - @Configuration - String gcsManagedLedgerOffloadServiceAccountKeyFile = null; - - // file system config, set by service configuration - @Configuration - String fileSystemProfilePath = null; - - @Configuration - String fileSystemURI = null; - - // --------- new offload configurations --------- - // they are universal configurations and could be used to `aws-s3`, `google-cloud-storage` or `azureblob`. - @Configuration - String managedLedgerOffloadBucket; - - @Configuration - String managedLedgerOffloadRegion; - - @Configuration - String managedLedgerOffloadServiceEndpoint; - - @Configuration - Integer managedLedgerOffloadMaxBlockSizeInBytes; - - @Configuration - Integer managedLedgerOffloadReadBufferSizeInBytes; - - void compatibleWithBrokerConfigFile(Properties properties) { - if (!properties.containsKey("managedLedgerOffloadThresholdInBytes") - && properties.containsKey(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)) { - setManagedLedgerOffloadThresholdInBytes( - Long.parseLong(properties.getProperty(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE))); - } - - if (!properties.containsKey("managedLedgerOffloadDeletionLagInMillis") - && properties.containsKey(DELETION_LAG_NAME_IN_CONF_FILE)) { - setManagedLedgerOffloadDeletionLagInMillis( - Long.parseLong(properties.getProperty(DELETION_LAG_NAME_IN_CONF_FILE))); - } - } - - public boolean driverSupported() { - return DRIVER_NAMES.stream().anyMatch(d -> d.equalsIgnoreCase(this.managedLedgerOffloadDriver)); - } - - public static String getSupportedDriverNames() { - return String.join(",", DRIVER_NAMES); - } - - public boolean isS3Driver() { - if (managedLedgerOffloadDriver == null) { - return false; - } - return managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(0)) - || managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(1)); - } - - public boolean isGcsDriver() { - if (managedLedgerOffloadDriver == null) { - return false; - } - return managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(2)); - } - - public boolean isFileSystemDriver() { - if (managedLedgerOffloadDriver == null) { - return false; - } - return managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(3)); - } - - public boolean bucketValid() { - if (managedLedgerOffloadDriver == null) { - return false; - } - if (managedLedgerOffloadBucket != null && !managedLedgerOffloadBucket.isEmpty()) { - return true; - } - if (isS3Driver()) { - return s3ManagedLedgerOffloadBucket != null && !s3ManagedLedgerOffloadBucket.isEmpty(); - } else if (isGcsDriver()) { - return gcsManagedLedgerOffloadBucket != null && !gcsManagedLedgerOffloadBucket.isEmpty(); - } else if (isFileSystemDriver()) { - return true; - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash( - managedLedgerOffloadedReadPriority, - managedLedgerOffloadDriver, - managedLedgerOffloadMaxThreads, - managedLedgerOffloadPrefetchRounds, - managedLedgerOffloadThresholdInBytes, - managedLedgerOffloadDeletionLagInMillis, - s3ManagedLedgerOffloadRegion, - s3ManagedLedgerOffloadBucket, - s3ManagedLedgerOffloadServiceEndpoint, - s3ManagedLedgerOffloadMaxBlockSizeInBytes, - s3ManagedLedgerOffloadReadBufferSizeInBytes, - s3ManagedLedgerOffloadRole, - s3ManagedLedgerOffloadRoleSessionName, - gcsManagedLedgerOffloadRegion, - gcsManagedLedgerOffloadBucket, - gcsManagedLedgerOffloadMaxBlockSizeInBytes, - gcsManagedLedgerOffloadReadBufferSizeInBytes, - gcsManagedLedgerOffloadServiceAccountKeyFile, - fileSystemProfilePath, - fileSystemURI, - managedLedgerOffloadBucket, - managedLedgerOffloadRegion, - managedLedgerOffloadServiceEndpoint, - managedLedgerOffloadMaxBlockSizeInBytes, - managedLedgerOffloadReadBufferSizeInBytes); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - OffloadPolicies other = (OffloadPolicies) obj; - return Objects.equals(managedLedgerOffloadedReadPriority, other.getManagedLedgerOffloadedReadPriority()) - && Objects.equals(managedLedgerOffloadDriver, other.getManagedLedgerOffloadDriver()) - && Objects.equals(managedLedgerOffloadMaxThreads, other.getManagedLedgerOffloadMaxThreads()) - && Objects.equals(managedLedgerOffloadPrefetchRounds, other.getManagedLedgerOffloadPrefetchRounds()) - && Objects.equals(managedLedgerOffloadThresholdInBytes, - other.getManagedLedgerOffloadThresholdInBytes()) - && Objects.equals(managedLedgerOffloadDeletionLagInMillis, - other.getManagedLedgerOffloadDeletionLagInMillis()) - && Objects.equals(s3ManagedLedgerOffloadRegion, other.getS3ManagedLedgerOffloadRegion()) - && Objects.equals(s3ManagedLedgerOffloadBucket, other.getS3ManagedLedgerOffloadBucket()) - && Objects.equals(s3ManagedLedgerOffloadServiceEndpoint, - other.getS3ManagedLedgerOffloadServiceEndpoint()) - && Objects.equals(s3ManagedLedgerOffloadMaxBlockSizeInBytes, - other.getS3ManagedLedgerOffloadMaxBlockSizeInBytes()) - && Objects.equals(s3ManagedLedgerOffloadReadBufferSizeInBytes, - other.getS3ManagedLedgerOffloadReadBufferSizeInBytes()) - && Objects.equals(s3ManagedLedgerOffloadRole, other.getS3ManagedLedgerOffloadRole()) - && Objects.equals(s3ManagedLedgerOffloadRoleSessionName, - other.getS3ManagedLedgerOffloadRoleSessionName()) - && Objects.equals(gcsManagedLedgerOffloadRegion, other.getGcsManagedLedgerOffloadRegion()) - && Objects.equals(gcsManagedLedgerOffloadBucket, other.getGcsManagedLedgerOffloadBucket()) - && Objects.equals(gcsManagedLedgerOffloadMaxBlockSizeInBytes, - other.getGcsManagedLedgerOffloadMaxBlockSizeInBytes()) - && Objects.equals(gcsManagedLedgerOffloadReadBufferSizeInBytes, - other.getGcsManagedLedgerOffloadReadBufferSizeInBytes()) - && Objects.equals(gcsManagedLedgerOffloadServiceAccountKeyFile, - other.getGcsManagedLedgerOffloadServiceAccountKeyFile()) - && Objects.equals(fileSystemProfilePath, other.getFileSystemProfilePath()) - && Objects.equals(fileSystemURI, other.getFileSystemURI()) - && Objects.equals(managedLedgerOffloadBucket, other.getManagedLedgerOffloadBucket()) - && Objects.equals(managedLedgerOffloadRegion, other.getManagedLedgerOffloadRegion()) - && Objects.equals(managedLedgerOffloadServiceEndpoint, other.getManagedLedgerOffloadServiceEndpoint()) - && Objects.equals(managedLedgerOffloadMaxBlockSizeInBytes, - other.getManagedLedgerOffloadMaxBlockSizeInBytes()) - && Objects.equals(managedLedgerOffloadReadBufferSizeInBytes, - other.getManagedLedgerOffloadReadBufferSizeInBytes()); - } - - public Properties toProperties() { - Properties properties = new Properties(); - setProperty(properties, "managedLedgerOffloadedReadPriority", this.getManagedLedgerOffloadedReadPriority()); - setProperty(properties, "offloadersDirectory", this.getOffloadersDirectory()); - setProperty(properties, "managedLedgerOffloadDriver", this.getManagedLedgerOffloadDriver()); - setProperty(properties, "managedLedgerOffloadMaxThreads", - this.getManagedLedgerOffloadMaxThreads()); - setProperty(properties, "managedLedgerOffloadPrefetchRounds", - this.getManagedLedgerOffloadPrefetchRounds()); - setProperty(properties, "managedLedgerOffloadThresholdInBytes", - this.getManagedLedgerOffloadThresholdInBytes()); - setProperty(properties, "managedLedgerOffloadDeletionLagInMillis", - this.getManagedLedgerOffloadDeletionLagInMillis()); - - if (this.isS3Driver()) { - setProperty(properties, "s3ManagedLedgerOffloadRegion", - this.getS3ManagedLedgerOffloadRegion()); - setProperty(properties, "s3ManagedLedgerOffloadBucket", - this.getS3ManagedLedgerOffloadBucket()); - setProperty(properties, "s3ManagedLedgerOffloadServiceEndpoint", - this.getS3ManagedLedgerOffloadServiceEndpoint()); - setProperty(properties, "s3ManagedLedgerOffloadMaxBlockSizeInBytes", - this.getS3ManagedLedgerOffloadMaxBlockSizeInBytes()); - setProperty(properties, "s3ManagedLedgerOffloadCredentialId", - this.getS3ManagedLedgerOffloadCredentialId()); - setProperty(properties, "s3ManagedLedgerOffloadCredentialSecret", - this.getS3ManagedLedgerOffloadCredentialSecret()); - setProperty(properties, "s3ManagedLedgerOffloadRole", - this.getS3ManagedLedgerOffloadRole()); - setProperty(properties, "s3ManagedLedgerOffloadRoleSessionName", - this.getS3ManagedLedgerOffloadRoleSessionName()); - setProperty(properties, "s3ManagedLedgerOffloadReadBufferSizeInBytes", - this.getS3ManagedLedgerOffloadReadBufferSizeInBytes()); - } else if (this.isGcsDriver()) { - setProperty(properties, "gcsManagedLedgerOffloadRegion", - this.getGcsManagedLedgerOffloadRegion()); - setProperty(properties, "gcsManagedLedgerOffloadBucket", - this.getGcsManagedLedgerOffloadBucket()); - setProperty(properties, "gcsManagedLedgerOffloadMaxBlockSizeInBytes", - this.getGcsManagedLedgerOffloadMaxBlockSizeInBytes()); - setProperty(properties, "gcsManagedLedgerOffloadReadBufferSizeInBytes", - this.getGcsManagedLedgerOffloadReadBufferSizeInBytes()); - setProperty(properties, "gcsManagedLedgerOffloadServiceAccountKeyFile", - this.getGcsManagedLedgerOffloadServiceAccountKeyFile()); - } else if (this.isFileSystemDriver()) { - setProperty(properties, "fileSystemProfilePath", this.getFileSystemProfilePath()); - setProperty(properties, "fileSystemURI", this.getFileSystemURI()); - } - - setProperty(properties, "managedLedgerOffloadBucket", this.getManagedLedgerOffloadBucket()); - setProperty(properties, "managedLedgerOffloadRegion", this.getManagedLedgerOffloadRegion()); - setProperty(properties, "managedLedgerOffloadServiceEndpoint", - this.getManagedLedgerOffloadServiceEndpoint()); - setProperty(properties, "managedLedgerOffloadMaxBlockSizeInBytes", - this.getManagedLedgerOffloadMaxBlockSizeInBytes()); - setProperty(properties, "managedLedgerOffloadReadBufferSizeInBytes", - this.getManagedLedgerOffloadReadBufferSizeInBytes()); - - return properties; - } - - private static void setProperty(Properties properties, String key, Object value) { - if (value != null) { - properties.setProperty(key, "" + value); - } - } - - @Target(ElementType.FIELD) - @Retention(RetentionPolicy.RUNTIME) - private @interface Configuration { - - } - -} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesInterface.java new file mode 100644 index 0000000000000..eb36de2892840 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesInterface.java @@ -0,0 +1,133 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +public interface OffloadPoliciesInterface { + String getOffloadersDirectory(); + + String getManagedLedgerOffloadDriver(); + + Integer getManagedLedgerOffloadMaxThreads(); + + Integer getManagedLedgerOffloadPrefetchRounds(); + + Long getManagedLedgerOffloadThresholdInBytes(); + + Long getManagedLedgerOffloadDeletionLagInMillis(); + + OffloadedReadPriority getManagedLedgerOffloadedReadPriority(); + + String getS3ManagedLedgerOffloadRegion(); + + String getS3ManagedLedgerOffloadBucket(); + + String getS3ManagedLedgerOffloadServiceEndpoint(); + + Integer getS3ManagedLedgerOffloadMaxBlockSizeInBytes(); + + Integer getS3ManagedLedgerOffloadReadBufferSizeInBytes(); + + String getS3ManagedLedgerOffloadCredentialId(); + + String getS3ManagedLedgerOffloadCredentialSecret(); + + String getS3ManagedLedgerOffloadRole(); + + String getS3ManagedLedgerOffloadRoleSessionName(); + + String getGcsManagedLedgerOffloadRegion(); + + String getGcsManagedLedgerOffloadBucket(); + + Integer getGcsManagedLedgerOffloadMaxBlockSizeInBytes(); + + Integer getGcsManagedLedgerOffloadReadBufferSizeInBytes(); + + String getGcsManagedLedgerOffloadServiceAccountKeyFile(); + + String getFileSystemProfilePath(); + + String getFileSystemURI(); + + String getManagedLedgerOffloadBucket(); + + String getManagedLedgerOffloadRegion(); + + String getManagedLedgerOffloadServiceEndpoint(); + + Integer getManagedLedgerOffloadMaxBlockSizeInBytes(); + + Integer getManagedLedgerOffloadReadBufferSizeInBytes(); + + void setOffloadersDirectory(String offloadersDirectory); + + void setManagedLedgerOffloadDriver(String managedLedgerOffloadDriver); + + void setManagedLedgerOffloadMaxThreads(Integer managedLedgerOffloadMaxThreads); + + void setManagedLedgerOffloadPrefetchRounds(Integer managedLedgerOffloadPrefetchRounds); + + void setManagedLedgerOffloadThresholdInBytes(Long managedLedgerOffloadThresholdInBytes); + + void setManagedLedgerOffloadDeletionLagInMillis(Long managedLedgerOffloadDeletionLagInMillis); + + void setManagedLedgerOffloadedReadPriority(OffloadedReadPriority managedLedgerOffloadedReadPriority); + + void setS3ManagedLedgerOffloadRegion(String s3ManagedLedgerOffloadRegion); + + void setS3ManagedLedgerOffloadBucket(String s3ManagedLedgerOffloadBucket); + + void setS3ManagedLedgerOffloadServiceEndpoint(String s3ManagedLedgerOffloadServiceEndpoint); + + void setS3ManagedLedgerOffloadMaxBlockSizeInBytes(Integer s3ManagedLedgerOffloadMaxBlockSizeInBytes); + + void setS3ManagedLedgerOffloadReadBufferSizeInBytes(Integer s3ManagedLedgerOffloadReadBufferSizeInBytes); + + void setS3ManagedLedgerOffloadCredentialId(String s3ManagedLedgerOffloadCredentialId); + + void setS3ManagedLedgerOffloadCredentialSecret(String s3ManagedLedgerOffloadCredentialSecret); + + void setS3ManagedLedgerOffloadRole(String s3ManagedLedgerOffloadRole); + + void setS3ManagedLedgerOffloadRoleSessionName(String s3ManagedLedgerOffloadRoleSessionName); + + void setGcsManagedLedgerOffloadRegion(String gcsManagedLedgerOffloadRegion); + + void setGcsManagedLedgerOffloadBucket(String gcsManagedLedgerOffloadBucket); + + void setGcsManagedLedgerOffloadMaxBlockSizeInBytes(Integer gcsManagedLedgerOffloadMaxBlockSizeInBytes); + + void setGcsManagedLedgerOffloadReadBufferSizeInBytes(Integer gcsManagedLedgerOffloadReadBufferSizeInBytes); + + void setGcsManagedLedgerOffloadServiceAccountKeyFile(String gcsManagedLedgerOffloadServiceAccountKeyFile); + + void setFileSystemProfilePath(String fileSystemProfilePath); + + void setFileSystemURI(String fileSystemURI); + + void setManagedLedgerOffloadBucket(String managedLedgerOffloadBucket); + + void setManagedLedgerOffloadRegion(String managedLedgerOffloadRegion); + + void setManagedLedgerOffloadServiceEndpoint(String managedLedgerOffloadServiceEndpoint); + + void setManagedLedgerOffloadMaxBlockSizeInBytes(Integer managedLedgerOffloadMaxBlockSizeInBytes); + + void setManagedLedgerOffloadReadBufferSizeInBytes(Integer managedLedgerOffloadReadBufferSizeInBytes); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadedReadPriority.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadedReadPriority.java new file mode 100644 index 0000000000000..245ec6068920f --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadedReadPriority.java @@ -0,0 +1,72 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.Arrays; +import java.util.stream.Collectors; +import org.apache.pulsar.common.classification.InterfaceAudience; +import org.apache.pulsar.common.classification.InterfaceStability; + +@InterfaceAudience.Public +@InterfaceStability.Stable +public enum OffloadedReadPriority { + /** + * For offloaded messages, readers will try to read from bookkeeper at first, + * if messages not exist at bookkeeper then read from offloaded storage. + */ + BOOKKEEPER_FIRST("bookkeeper-first"), + /** + * For offloaded messages, readers will try to read from offloaded storage first, + * even they are still exist in bookkeeper. + */ + TIERED_STORAGE_FIRST("tiered-storage-first"); + + private final String value; + + OffloadedReadPriority(String value) { + this.value = value; + } + + public boolean equalsName(String otherName) { + return value.equals(otherName); + } + + @Override + public String toString() { + return value; + } + + public static OffloadedReadPriority fromString(String str) { + for (OffloadedReadPriority value : OffloadedReadPriority.values()) { + if (value.value.equals(str)) { + return value; + } + } + + throw new IllegalArgumentException("--offloadedReadPriority parameter must be one of " + + Arrays.stream(OffloadedReadPriority.values()) + .map(OffloadedReadPriority::toString) + .collect(Collectors.joining(",")) + + " but got: " + str); + } + + public String getValue() { + return value; + } +} \ No newline at end of file diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java index 86c0b2b8a19b5..378f52a43be1e 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java @@ -112,7 +112,7 @@ public class Policies { public boolean schema_validation_enforced = false; @SuppressWarnings("checkstyle:MemberName") - public OffloadPolicies offload_policies = null; + public OffloadPoliciesInterface offload_policies = null; public Integer deduplicationSnapshotIntervalSeconds = null; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java index b5bfbaf471cb5..98b541802a3ec 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java @@ -48,6 +48,7 @@ import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -3209,7 +3210,8 @@ public CompletableFuture setIsAllowAutoUpdateSchemaAsync(String namespace, } @Override - public void setOffloadPolicies(String namespace, OffloadPolicies offloadPolicies) throws PulsarAdminException { + public void setOffloadPolicies(String namespace, OffloadPoliciesInterface offloadPolicies) + throws PulsarAdminException { try { setOffloadPoliciesAsync(namespace, offloadPolicies) .get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -3239,7 +3241,7 @@ public void removeOffloadPolicies(String namespace) throws PulsarAdminException } @Override - public CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPolicies offloadPolicies) { + public CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPoliciesInterface offloadPolicies) { NamespaceName ns = NamespaceName.get(namespace); WebTarget path = namespacePath(ns, "offloadPolicies"); return asyncPostRequest(path, Entity.entity(offloadPolicies, MediaType.APPLICATION_JSON)); @@ -3253,7 +3255,7 @@ public CompletableFuture removeOffloadPoliciesAsync(String namespace) { } @Override - public OffloadPolicies getOffloadPolicies(String namespace) throws PulsarAdminException { + public OffloadPoliciesInterface getOffloadPolicies(String namespace) throws PulsarAdminException { try { return getOffloadPoliciesAsync(namespace). get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -3268,10 +3270,10 @@ public OffloadPolicies getOffloadPolicies(String namespace) throws PulsarAdminEx } @Override - public CompletableFuture getOffloadPoliciesAsync(String namespace) { + public CompletableFuture getOffloadPoliciesAsync(String namespace) { NamespaceName ns = NamespaceName.get(namespace); WebTarget path = namespacePath(ns, "offloadPolicies"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java index e737fda2a4ddd..b056c46d46ce6 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java @@ -73,6 +73,7 @@ import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -2037,17 +2038,17 @@ public CompletableFuture removeDeduplicationStatusAsync(String topic) { } @Override - public OffloadPolicies getOffloadPolicies(String topic) throws PulsarAdminException { + public OffloadPoliciesInterface getOffloadPolicies(String topic) throws PulsarAdminException { return getOffloadPolicies(topic, false); } @Override - public CompletableFuture getOffloadPoliciesAsync(String topic) { + public CompletableFuture getOffloadPoliciesAsync(String topic) { return getOffloadPoliciesAsync(topic, false); } @Override - public OffloadPolicies getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException { + public OffloadPoliciesInterface getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException { try { return getOffloadPoliciesAsync(topic, applied). get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -2062,11 +2063,11 @@ public OffloadPolicies getOffloadPolicies(String topic, boolean applied) throws } @Override - public CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied) { + public CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied) { TopicName topicName = validateTopic(topic); WebTarget path = topicPath(topicName, "offloadPolicies"); path = path.queryParam("applied", applied); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override public void completed(OffloadPolicies offloadPolicies) { @@ -2082,7 +2083,7 @@ public void failed(Throwable throwable) { } @Override - public void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) throws PulsarAdminException { + public void setOffloadPolicies(String topic, OffloadPoliciesInterface offloadPolicies) throws PulsarAdminException { try { setOffloadPoliciesAsync(topic, offloadPolicies). get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -2097,10 +2098,10 @@ public void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) th } @Override - public CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPolicies offloadPolicies) { + public CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPoliciesInterface offloadPolicies) { TopicName topicName = validateTopic(topic); WebTarget path = topicPath(topicName, "offloadPolicies"); - return asyncPostRequest(path, Entity.entity(offloadPolicies, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((OffloadPolicies) offloadPolicies, MediaType.APPLICATION_JSON)); } @Override diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java index 3b2a7e9e63f4e..150d0f05b67ce 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java @@ -81,7 +81,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats.LedgerInfo; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.Policies; @@ -646,9 +646,9 @@ public void namespaces() throws Exception { namespaces.run(split( "set-offload-policies myprop/clust/ns1 -r test-region -d aws-s3 -b test-bucket -e http://test.endpoint -mbs 32M -rbs 5M -oat 10M -oae 10s -orp tiered-storage-first")); verify(mockNamespaces).setOffloadPolicies("myprop/clust/ns1", - OffloadPoliciesUtil.create("aws-s3", "test-region", "test-bucket", + OffloadPolicies.create("aws-s3", "test-region", "test-bucket", "http://test.endpoint",null, null, null, null, 32 * 1024 * 1024, 5 * 1024 * 1024, - 10 * 1024 * 1024L, 10000L, OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST)); + 10 * 1024 * 1024L, 10000L, OffloadedReadPriority.TIERED_STORAGE_FIRST)); namespaces.run(split("remove-offload-policies myprop/clust/ns1")); verify(mockNamespaces).removeOffloadPolicies("myprop/clust/ns1"); @@ -963,9 +963,9 @@ public void topics() throws Exception { verify(mockTopics).removeDelayedDeliveryPolicy("persistent://myprop/clust/ns1/ds1") ; cmdTopics.run(split("set-offload-policies persistent://myprop/clust/ns1/ds1 -d s3 -r region -b bucket -e endpoint -m 8 -rb 9 -t 10 -orp tiered-storage-first")); - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create("s3", "region", "bucket" + OffloadPolicies offloadPolicies = OffloadPolicies.create("s3", "region", "bucket" , "endpoint", null, null, null, null, - 8, 9, 10L, null, OffloadPolicies.OffloadedReadPriority.TIERED_STORAGE_FIRST); + 8, 9, 10L, null, OffloadedReadPriority.TIERED_STORAGE_FIRST); verify(mockTopics).setOffloadPolicies("persistent://myprop/clust/ns1/ds1", offloadPolicies); cmdTopics.run(split("get-max-unacked-messages-on-consumer persistent://myprop/clust/ns1/ds1")); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java index 61afe0e61e49c..b9461fdf87851 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java @@ -54,8 +54,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -2032,7 +2031,7 @@ && maxValueCheck("OffloadAfterThreshold", offloadAfterThreshold, Long.MAX_VALUE) } } - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(driver, region, bucket, endpoint, + OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, readBufferSizeInBytes, offloadAfterThresholdInBytes, diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java index 0696b631be687..bd47e5f0ba7f8 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java @@ -61,8 +61,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.PublishRate; @@ -1539,7 +1538,7 @@ void run() throws PulsarAdminException { } } - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(driver, region, bucket, endpoint, + OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java new file mode 100644 index 0000000000000..4e61960e7d343 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -0,0 +1,583 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import static org.apache.pulsar.common.util.FieldParser.value; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.MoreObjects; +import com.google.common.collect.ImmutableList; +import java.io.Serializable; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.Properties; +import java.util.stream.Collectors; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.pulsar.common.classification.InterfaceAudience; +import org.apache.pulsar.common.classification.InterfaceStability; + +/** + * Definition of the offload policies. + */ +@Slf4j +@Data +public class OffloadPolicies implements Serializable, OffloadPoliciesInterface { + + private final static long serialVersionUID = 0L; + + public final static List CONFIGURATION_FIELDS; + + static { + List temp = new ArrayList<>(); + Class clazz = OffloadPolicies.class; + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(Configuration.class)) { + temp.add(field); + } + } + CONFIGURATION_FIELDS = Collections.unmodifiableList(temp); + } + + public final static int DEFAULT_MAX_BLOCK_SIZE_IN_BYTES = 64 * 1024 * 1024; // 64MB + public final static int DEFAULT_READ_BUFFER_SIZE_IN_BYTES = 1024 * 1024; // 1MB + public final static int DEFAULT_OFFLOAD_MAX_THREADS = 2; + public final static int DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS = 1; + public final static ImmutableList DRIVER_NAMES = ImmutableList + .of("S3", "aws-s3", "google-cloud-storage", "filesystem", "azureblob", "aliyun-oss"); + public final static String DEFAULT_OFFLOADER_DIRECTORY = "./offloaders"; + public final static Long DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES = null; + public final static Long DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS = null; + + public final static String OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE = + "managedLedgerOffloadAutoTriggerSizeThresholdBytes"; + public final static String DELETION_LAG_NAME_IN_CONF_FILE = "managedLedgerOffloadDeletionLagMs"; + public final static OffloadedReadPriority DEFAULT_OFFLOADED_READ_PRIORITY = OffloadedReadPriority.TIERED_STORAGE_FIRST; + + // common config + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String offloadersDirectory = DEFAULT_OFFLOADER_DIRECTORY; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String managedLedgerOffloadDriver = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer managedLedgerOffloadMaxThreads = DEFAULT_OFFLOAD_MAX_THREADS; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer managedLedgerOffloadPrefetchRounds = DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Long managedLedgerOffloadThresholdInBytes = DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Long managedLedgerOffloadDeletionLagInMillis = DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private OffloadedReadPriority managedLedgerOffloadedReadPriority = DEFAULT_OFFLOADED_READ_PRIORITY; + + // s3 config, set by service configuration or cli + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String s3ManagedLedgerOffloadRegion = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String s3ManagedLedgerOffloadBucket = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String s3ManagedLedgerOffloadServiceEndpoint = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer s3ManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer s3ManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + // s3 config, set by service configuration + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String s3ManagedLedgerOffloadCredentialId = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String s3ManagedLedgerOffloadCredentialSecret = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String s3ManagedLedgerOffloadRole = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String s3ManagedLedgerOffloadRoleSessionName = "pulsar-s3-offload"; + + // gcs config, set by service configuration or cli + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String gcsManagedLedgerOffloadRegion = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String gcsManagedLedgerOffloadBucket = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer gcsManagedLedgerOffloadMaxBlockSizeInBytes = DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer gcsManagedLedgerOffloadReadBufferSizeInBytes = DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + // gcs config, set by service configuration + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String gcsManagedLedgerOffloadServiceAccountKeyFile = null; + + // file system config, set by service configuration + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String fileSystemProfilePath = null; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String fileSystemURI = null; + + // --------- new offload configurations --------- + // they are universal configurations and could be used to `aws-s3`, `google-cloud-storage` or `azureblob`. + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String managedLedgerOffloadBucket; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String managedLedgerOffloadRegion; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private String managedLedgerOffloadServiceEndpoint; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer managedLedgerOffloadMaxBlockSizeInBytes; + @Configuration + @JsonProperty(access = JsonProperty.Access.READ_WRITE) + private Integer managedLedgerOffloadReadBufferSizeInBytes; + + public static OffloadPolicies create(String driver, String region, String bucket, String endpoint, + String role, String roleSessionName, + String credentialId, String credentialSecret, + Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, + Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, + OffloadedReadPriority readPriority) { + OffloadPolicies offloadPolicies = new OffloadPolicies(); + offloadPolicies.setManagedLedgerOffloadDriver(driver); + offloadPolicies.setManagedLedgerOffloadThresholdInBytes(offloadThresholdInBytes); + offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(offloadDeletionLagInMillis); + + offloadPolicies.setManagedLedgerOffloadBucket(bucket); + offloadPolicies.setManagedLedgerOffloadRegion(region); + offloadPolicies.setManagedLedgerOffloadServiceEndpoint(endpoint); + offloadPolicies.setManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); + offloadPolicies.setManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); + offloadPolicies.setManagedLedgerOffloadedReadPriority(readPriority); + + if (driver.equalsIgnoreCase(DRIVER_NAMES.get(0)) || driver.equalsIgnoreCase(DRIVER_NAMES.get(1))) { + if (role != null) { + offloadPolicies.setS3ManagedLedgerOffloadRole(role); + } + if (roleSessionName != null) { + offloadPolicies.setS3ManagedLedgerOffloadRoleSessionName(roleSessionName); + } + if (credentialId != null) { + offloadPolicies.setS3ManagedLedgerOffloadCredentialId(credentialId); + } + if (credentialSecret != null) { + offloadPolicies.setS3ManagedLedgerOffloadCredentialSecret(credentialSecret); + } + offloadPolicies.setS3ManagedLedgerOffloadRegion(region); + offloadPolicies.setS3ManagedLedgerOffloadBucket(bucket); + offloadPolicies.setS3ManagedLedgerOffloadServiceEndpoint(endpoint); + offloadPolicies.setS3ManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); + offloadPolicies.setS3ManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); + } else if (driver.equalsIgnoreCase(DRIVER_NAMES.get(2))) { + offloadPolicies.setGcsManagedLedgerOffloadRegion(region); + offloadPolicies.setGcsManagedLedgerOffloadBucket(bucket); + offloadPolicies.setGcsManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); + offloadPolicies.setGcsManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); + } + return offloadPolicies; + } + + public static OffloadPolicies create(Properties properties) { + OffloadPolicies data = new OffloadPolicies(); + Field[] fields = OffloadPolicies.class.getDeclaredFields(); + Arrays.stream(fields).forEach(f -> { + if (properties.containsKey(f.getName())) { + try { + f.setAccessible(true); + f.set(data, value((String) properties.get(f.getName()), f)); + } catch (Exception e) { + throw new IllegalArgumentException( + String.format("failed to initialize %s field while setting value %s", + f.getName(), properties.get(f.getName())), e); + } + } + }); + data.compatibleWithBrokerConfigFile(properties); + return data; + } + + public void compatibleWithBrokerConfigFile(Properties properties) { + if (!properties.containsKey("managedLedgerOffloadThresholdInBytes") + && properties.containsKey(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)) { + setManagedLedgerOffloadThresholdInBytes( + Long.parseLong(properties.getProperty(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE))); + } + + if (!properties.containsKey("managedLedgerOffloadDeletionLagInMillis") + && properties.containsKey(DELETION_LAG_NAME_IN_CONF_FILE)) { + setManagedLedgerOffloadDeletionLagInMillis( + Long.parseLong(properties.getProperty(DELETION_LAG_NAME_IN_CONF_FILE))); + } + } + + public boolean driverSupported() { + return DRIVER_NAMES.stream().anyMatch(d -> d.equalsIgnoreCase(this.managedLedgerOffloadDriver)); + } + + public static String getSupportedDriverNames() { + return StringUtils.join(DRIVER_NAMES, ","); + } + + public boolean isS3Driver() { + if (managedLedgerOffloadDriver == null) { + return false; + } + return managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(0)) + || managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(1)); + } + + public boolean isGcsDriver() { + if (managedLedgerOffloadDriver == null) { + return false; + } + return managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(2)); + } + + public boolean isFileSystemDriver() { + if (managedLedgerOffloadDriver == null) { + return false; + } + return managedLedgerOffloadDriver.equalsIgnoreCase(DRIVER_NAMES.get(3)); + } + + public boolean bucketValid() { + if (managedLedgerOffloadDriver == null) { + return false; + } + if (StringUtils.isNotEmpty(managedLedgerOffloadBucket)) { + return true; + } + if (isS3Driver()) { + return StringUtils.isNotEmpty(s3ManagedLedgerOffloadBucket); + } else if (isGcsDriver()) { + return StringUtils.isNotEmpty(gcsManagedLedgerOffloadBucket); + } else if (isFileSystemDriver()) { + return true; + } + return false; + } + + @Override + public int hashCode() { + return Objects.hash( + managedLedgerOffloadedReadPriority, + managedLedgerOffloadDriver, + managedLedgerOffloadMaxThreads, + managedLedgerOffloadPrefetchRounds, + managedLedgerOffloadThresholdInBytes, + managedLedgerOffloadDeletionLagInMillis, + s3ManagedLedgerOffloadRegion, + s3ManagedLedgerOffloadBucket, + s3ManagedLedgerOffloadServiceEndpoint, + s3ManagedLedgerOffloadMaxBlockSizeInBytes, + s3ManagedLedgerOffloadReadBufferSizeInBytes, + s3ManagedLedgerOffloadRole, + s3ManagedLedgerOffloadRoleSessionName, + gcsManagedLedgerOffloadRegion, + gcsManagedLedgerOffloadBucket, + gcsManagedLedgerOffloadMaxBlockSizeInBytes, + gcsManagedLedgerOffloadReadBufferSizeInBytes, + gcsManagedLedgerOffloadServiceAccountKeyFile, + fileSystemProfilePath, + fileSystemURI, + managedLedgerOffloadBucket, + managedLedgerOffloadRegion, + managedLedgerOffloadServiceEndpoint, + managedLedgerOffloadMaxBlockSizeInBytes, + managedLedgerOffloadReadBufferSizeInBytes); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + OffloadPolicies other = (OffloadPolicies) obj; + return Objects.equals(managedLedgerOffloadedReadPriority, other.getManagedLedgerOffloadedReadPriority()) + && Objects.equals(managedLedgerOffloadDriver, other.getManagedLedgerOffloadDriver()) + && Objects.equals(managedLedgerOffloadMaxThreads, other.getManagedLedgerOffloadMaxThreads()) + && Objects.equals(managedLedgerOffloadPrefetchRounds, other.getManagedLedgerOffloadPrefetchRounds()) + && Objects.equals(managedLedgerOffloadThresholdInBytes, + other.getManagedLedgerOffloadThresholdInBytes()) + && Objects.equals(managedLedgerOffloadDeletionLagInMillis, + other.getManagedLedgerOffloadDeletionLagInMillis()) + && Objects.equals(s3ManagedLedgerOffloadRegion, other.getS3ManagedLedgerOffloadRegion()) + && Objects.equals(s3ManagedLedgerOffloadBucket, other.getS3ManagedLedgerOffloadBucket()) + && Objects.equals(s3ManagedLedgerOffloadServiceEndpoint, + other.getS3ManagedLedgerOffloadServiceEndpoint()) + && Objects.equals(s3ManagedLedgerOffloadMaxBlockSizeInBytes, + other.getS3ManagedLedgerOffloadMaxBlockSizeInBytes()) + && Objects.equals(s3ManagedLedgerOffloadReadBufferSizeInBytes, + other.getS3ManagedLedgerOffloadReadBufferSizeInBytes()) + && Objects.equals(s3ManagedLedgerOffloadRole, other.getS3ManagedLedgerOffloadRole()) + && Objects.equals(s3ManagedLedgerOffloadRoleSessionName, + other.getS3ManagedLedgerOffloadRoleSessionName()) + && Objects.equals(gcsManagedLedgerOffloadRegion, other.getGcsManagedLedgerOffloadRegion()) + && Objects.equals(gcsManagedLedgerOffloadBucket, other.getGcsManagedLedgerOffloadBucket()) + && Objects.equals(gcsManagedLedgerOffloadMaxBlockSizeInBytes, + other.getGcsManagedLedgerOffloadMaxBlockSizeInBytes()) + && Objects.equals(gcsManagedLedgerOffloadReadBufferSizeInBytes, + other.getGcsManagedLedgerOffloadReadBufferSizeInBytes()) + && Objects.equals(gcsManagedLedgerOffloadServiceAccountKeyFile, + other.getGcsManagedLedgerOffloadServiceAccountKeyFile()) + && Objects.equals(fileSystemProfilePath, other.getFileSystemProfilePath()) + && Objects.equals(fileSystemURI, other.getFileSystemURI()) + && Objects.equals(managedLedgerOffloadBucket, other.getManagedLedgerOffloadBucket()) + && Objects.equals(managedLedgerOffloadRegion, other.getManagedLedgerOffloadRegion()) + && Objects.equals(managedLedgerOffloadServiceEndpoint, other.getManagedLedgerOffloadServiceEndpoint()) + && Objects.equals(managedLedgerOffloadMaxBlockSizeInBytes, + other.getManagedLedgerOffloadMaxBlockSizeInBytes()) + && Objects.equals(managedLedgerOffloadReadBufferSizeInBytes, + other.getManagedLedgerOffloadReadBufferSizeInBytes()); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("managedLedgerOffloadedReadPriority", managedLedgerOffloadedReadPriority) + .add("managedLedgerOffloadDriver", managedLedgerOffloadDriver) + .add("managedLedgerOffloadMaxThreads", managedLedgerOffloadMaxThreads) + .add("managedLedgerOffloadPrefetchRounds", managedLedgerOffloadPrefetchRounds) + .add("managedLedgerOffloadAutoTriggerSizeThresholdBytes", + managedLedgerOffloadThresholdInBytes) + .add("managedLedgerOffloadDeletionLagInMillis", managedLedgerOffloadDeletionLagInMillis) + .add("s3ManagedLedgerOffloadRegion", s3ManagedLedgerOffloadRegion) + .add("s3ManagedLedgerOffloadBucket", s3ManagedLedgerOffloadBucket) + .add("s3ManagedLedgerOffloadServiceEndpoint", s3ManagedLedgerOffloadServiceEndpoint) + .add("s3ManagedLedgerOffloadMaxBlockSizeInBytes", s3ManagedLedgerOffloadMaxBlockSizeInBytes) + .add("s3ManagedLedgerOffloadReadBufferSizeInBytes", s3ManagedLedgerOffloadReadBufferSizeInBytes) + .add("s3ManagedLedgerOffloadRole", s3ManagedLedgerOffloadRole) + .add("s3ManagedLedgerOffloadRoleSessionName", s3ManagedLedgerOffloadRoleSessionName) + .add("gcsManagedLedgerOffloadRegion", gcsManagedLedgerOffloadRegion) + .add("gcsManagedLedgerOffloadBucket", gcsManagedLedgerOffloadBucket) + .add("gcsManagedLedgerOffloadMaxBlockSizeInBytes", gcsManagedLedgerOffloadMaxBlockSizeInBytes) + .add("gcsManagedLedgerOffloadReadBufferSizeInBytes", gcsManagedLedgerOffloadReadBufferSizeInBytes) + .add("gcsManagedLedgerOffloadServiceAccountKeyFile", gcsManagedLedgerOffloadServiceAccountKeyFile) + .add("fileSystemProfilePath", fileSystemProfilePath) + .add("fileSystemURI", fileSystemURI) + .add("managedLedgerOffloadBucket", managedLedgerOffloadBucket) + .add("managedLedgerOffloadRegion", managedLedgerOffloadRegion) + .add("managedLedgerOffloadServiceEndpoint", managedLedgerOffloadServiceEndpoint) + .add("managedLedgerOffloadMaxBlockSizeInBytes", managedLedgerOffloadMaxBlockSizeInBytes) + .add("managedLedgerOffloadReadBufferSizeInBytes", managedLedgerOffloadReadBufferSizeInBytes) + .toString(); + } + + public Properties toProperties() { + Properties properties = new Properties(); + setProperty(properties, "managedLedgerOffloadedReadPriority", this.getManagedLedgerOffloadedReadPriority()); + setProperty(properties, "offloadersDirectory", this.getOffloadersDirectory()); + setProperty(properties, "managedLedgerOffloadDriver", this.getManagedLedgerOffloadDriver()); + setProperty(properties, "managedLedgerOffloadMaxThreads", + this.getManagedLedgerOffloadMaxThreads()); + setProperty(properties, "managedLedgerOffloadPrefetchRounds", + this.getManagedLedgerOffloadPrefetchRounds()); + setProperty(properties, "managedLedgerOffloadThresholdInBytes", + this.getManagedLedgerOffloadThresholdInBytes()); + setProperty(properties, "managedLedgerOffloadDeletionLagInMillis", + this.getManagedLedgerOffloadDeletionLagInMillis()); + + if (this.isS3Driver()) { + setProperty(properties, "s3ManagedLedgerOffloadRegion", + this.getS3ManagedLedgerOffloadRegion()); + setProperty(properties, "s3ManagedLedgerOffloadBucket", + this.getS3ManagedLedgerOffloadBucket()); + setProperty(properties, "s3ManagedLedgerOffloadServiceEndpoint", + this.getS3ManagedLedgerOffloadServiceEndpoint()); + setProperty(properties, "s3ManagedLedgerOffloadMaxBlockSizeInBytes", + this.getS3ManagedLedgerOffloadMaxBlockSizeInBytes()); + setProperty(properties, "s3ManagedLedgerOffloadCredentialId", + this.getS3ManagedLedgerOffloadCredentialId()); + setProperty(properties, "s3ManagedLedgerOffloadCredentialSecret", + this.getS3ManagedLedgerOffloadCredentialSecret()); + setProperty(properties, "s3ManagedLedgerOffloadRole", + this.getS3ManagedLedgerOffloadRole()); + setProperty(properties, "s3ManagedLedgerOffloadRoleSessionName", + this.getS3ManagedLedgerOffloadRoleSessionName()); + setProperty(properties, "s3ManagedLedgerOffloadReadBufferSizeInBytes", + this.getS3ManagedLedgerOffloadReadBufferSizeInBytes()); + } else if (this.isGcsDriver()) { + setProperty(properties, "gcsManagedLedgerOffloadRegion", + this.getGcsManagedLedgerOffloadRegion()); + setProperty(properties, "gcsManagedLedgerOffloadBucket", + this.getGcsManagedLedgerOffloadBucket()); + setProperty(properties, "gcsManagedLedgerOffloadMaxBlockSizeInBytes", + this.getGcsManagedLedgerOffloadMaxBlockSizeInBytes()); + setProperty(properties, "gcsManagedLedgerOffloadReadBufferSizeInBytes", + this.getGcsManagedLedgerOffloadReadBufferSizeInBytes()); + setProperty(properties, "gcsManagedLedgerOffloadServiceAccountKeyFile", + this.getGcsManagedLedgerOffloadServiceAccountKeyFile()); + } else if (this.isFileSystemDriver()) { + setProperty(properties, "fileSystemProfilePath", this.getFileSystemProfilePath()); + setProperty(properties, "fileSystemURI", this.getFileSystemURI()); + } + + setProperty(properties, "managedLedgerOffloadBucket", this.getManagedLedgerOffloadBucket()); + setProperty(properties, "managedLedgerOffloadRegion", this.getManagedLedgerOffloadRegion()); + setProperty(properties, "managedLedgerOffloadServiceEndpoint", + this.getManagedLedgerOffloadServiceEndpoint()); + setProperty(properties, "managedLedgerOffloadMaxBlockSizeInBytes", + this.getManagedLedgerOffloadMaxBlockSizeInBytes()); + setProperty(properties, "managedLedgerOffloadReadBufferSizeInBytes", + this.getManagedLedgerOffloadReadBufferSizeInBytes()); + + return properties; + } + + private static void setProperty(Properties properties, String key, Object value) { + if (value != null) { + properties.setProperty(key, "" + value); + } + } + + @Target(ElementType.FIELD) + @Retention(RetentionPolicy.RUNTIME) + private @interface Configuration { + + } + + /** + * This method is used to make a compatible with old policies. + * + *

The filed {@link Policies#offload_threshold} is primitive, so it can't be known whether it had been set. + * In the old logic, if the field value is -1, it could be thought that the field had not been set. + * + * @param nsLevelPolicies namespace level offload policies + * @param policies namespace policies + * @return offload policies + */ + public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolicies, Policies policies) { + if (policies == null || (policies.offload_threshold == -1 && policies.offload_deletion_lag_ms == null)) { + return nsLevelPolicies; + } + if (nsLevelPolicies == null) { + nsLevelPolicies = new OffloadPolicies(); + } + if (nsLevelPolicies.getManagedLedgerOffloadThresholdInBytes() == null + && policies.offload_threshold != -1) { + nsLevelPolicies.setManagedLedgerOffloadThresholdInBytes(policies.offload_threshold); + } + if (nsLevelPolicies.getManagedLedgerOffloadDeletionLagInMillis() == null + && policies.offload_deletion_lag_ms != null) { + nsLevelPolicies.setManagedLedgerOffloadDeletionLagInMillis(policies.offload_deletion_lag_ms); + } + return nsLevelPolicies; + } + + /** + * Merge different level offload policies. + * + *

policies level priority: topic > namespace > broker + * + * @param topicLevelPolicies topic level offload policies + * @param nsLevelPolicies namespace level offload policies + * @param brokerProperties broker level offload configuration + * @return offload policies + */ + public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolicies, + OffloadPolicies nsLevelPolicies, + Properties brokerProperties) { + try { + boolean allConfigValuesAreNull = true; + OffloadPolicies offloadPolicies = new OffloadPolicies(); + for (Field field : CONFIGURATION_FIELDS) { + Object object; + if (topicLevelPolicies != null && field.get(topicLevelPolicies) != null) { + object = field.get(topicLevelPolicies); + } else if (nsLevelPolicies != null && field.get(nsLevelPolicies) != null) { + object = field.get(nsLevelPolicies); + } else { + object = getCompatibleValue(brokerProperties, field); + } + if (object != null) { + field.set(offloadPolicies, object); + if (allConfigValuesAreNull) { + allConfigValuesAreNull = false; + } + } + } + if (allConfigValuesAreNull) { + return null; + } else { + return offloadPolicies; + } + } catch (Exception e) { + log.error("Failed to merge configuration.", e); + return null; + } + } + + /** + * Make configurations of the OffloadPolicies compatible with the config file. + * + *

The names of the fields {@link OffloadPolicies#managedLedgerOffloadDeletionLagInMillis} + * and {@link OffloadPolicies#managedLedgerOffloadThresholdInBytes} are not matched with + * config file (broker.conf or standalone.conf). + * + * @param properties broker configuration properties + * @param field filed + * @return field value + */ + private static Object getCompatibleValue(Properties properties, Field field) { + Object object; + if (field.getName().equals("managedLedgerOffloadThresholdInBytes")) { + object = properties.getProperty("managedLedgerOffloadThresholdInBytes", + properties.getProperty(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)); + } else if (field.getName().equals("managedLedgerOffloadDeletionLagInMillis")) { + object = properties.getProperty("managedLedgerOffloadDeletionLagInMillis", + properties.getProperty(DELETION_LAG_NAME_IN_CONF_FILE)); + } else { + object = properties.get(field.getName()); + } + return value((String) object, field); + } + +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java deleted file mode 100644 index 89b2a248adf2e..0000000000000 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesUtil.java +++ /dev/null @@ -1,196 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.pulsar.common.policies.data; - -import static org.apache.pulsar.common.policies.data.OffloadPolicies.CONFIGURATION_FIELDS; -import static org.apache.pulsar.common.policies.data.OffloadPolicies.DELETION_LAG_NAME_IN_CONF_FILE; -import static org.apache.pulsar.common.policies.data.OffloadPolicies.DRIVER_NAMES; -import static org.apache.pulsar.common.policies.data.OffloadPolicies.OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE; -import lombok.extern.slf4j.Slf4j; -import org.apache.pulsar.common.util.FieldParser; -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.Properties; - -/** - * Utils of Pulsar offload policies. - */ -@Slf4j -public class OffloadPoliciesUtil { - public static OffloadPolicies create(String driver, String region, String bucket, String endpoint, - String role, String roleSessionName, - String credentialId, String credentialSecret, - Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, - Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, - OffloadPolicies.OffloadedReadPriority readPriority) { - OffloadPolicies offloadPolicies = new OffloadPolicies(); - offloadPolicies.setManagedLedgerOffloadDriver(driver); - offloadPolicies.setManagedLedgerOffloadThresholdInBytes(offloadThresholdInBytes); - offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(offloadDeletionLagInMillis); - - offloadPolicies.setManagedLedgerOffloadBucket(bucket); - offloadPolicies.setManagedLedgerOffloadRegion(region); - offloadPolicies.setManagedLedgerOffloadServiceEndpoint(endpoint); - offloadPolicies.setManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); - offloadPolicies.setManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); - offloadPolicies.setManagedLedgerOffloadedReadPriority(readPriority); - - if (driver.equalsIgnoreCase(DRIVER_NAMES.get(0)) || driver.equalsIgnoreCase(DRIVER_NAMES.get(1))) { - if (role != null) { - offloadPolicies.setS3ManagedLedgerOffloadRole(role); - } - if (roleSessionName != null) { - offloadPolicies.setS3ManagedLedgerOffloadRoleSessionName(roleSessionName); - } - if (credentialId != null) { - offloadPolicies.setS3ManagedLedgerOffloadCredentialId(credentialId); - } - if (credentialSecret != null) { - offloadPolicies.setS3ManagedLedgerOffloadCredentialSecret(credentialSecret); - } - offloadPolicies.setS3ManagedLedgerOffloadRegion(region); - offloadPolicies.setS3ManagedLedgerOffloadBucket(bucket); - offloadPolicies.setS3ManagedLedgerOffloadServiceEndpoint(endpoint); - offloadPolicies.setS3ManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); - offloadPolicies.setS3ManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); - } else if (driver.equalsIgnoreCase(DRIVER_NAMES.get(2))) { - offloadPolicies.setGcsManagedLedgerOffloadRegion(region); - offloadPolicies.setGcsManagedLedgerOffloadBucket(bucket); - offloadPolicies.setGcsManagedLedgerOffloadMaxBlockSizeInBytes(maxBlockSizeInBytes); - offloadPolicies.setGcsManagedLedgerOffloadReadBufferSizeInBytes(readBufferSizeInBytes); - } - return offloadPolicies; - } - - public static OffloadPolicies create(Properties properties) { - OffloadPolicies data = new OffloadPolicies(); - Field[] fields = OffloadPolicies.class.getDeclaredFields(); - Arrays.stream(fields).forEach(f -> { - if (properties.containsKey(f.getName())) { - try { - f.setAccessible(true); - f.set(data, FieldParser.value((String) properties.get(f.getName()), f)); - } catch (Exception e) { - throw new IllegalArgumentException( - String.format("failed to initialize %s field while setting value %s", - f.getName(), properties.get(f.getName())), e); - } - } - }); - data.compatibleWithBrokerConfigFile(properties); - return data; - } - - /** - * Merge different level offload policies. - * - *

policies level priority: topic > namespace > broker - * - * @param topicLevelPolicies topic level offload policies - * @param nsLevelPolicies namespace level offload policies - * @param brokerProperties broker level offload configuration - * @return offload policies - */ - public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolicies, - OffloadPolicies nsLevelPolicies, - Properties brokerProperties) { - try { - boolean allConfigValuesAreNull = true; - OffloadPolicies offloadPolicies = new OffloadPolicies(); - for (Field field : CONFIGURATION_FIELDS) { - Object object; - if (topicLevelPolicies != null && field.get(topicLevelPolicies) != null) { - object = field.get(topicLevelPolicies); - } else if (nsLevelPolicies != null && field.get(nsLevelPolicies) != null) { - object = field.get(nsLevelPolicies); - } else { - object = getCompatibleValue(brokerProperties, field); - } - if (object != null) { - field.set(offloadPolicies, object); - if (allConfigValuesAreNull) { - allConfigValuesAreNull = false; - } - } - } - if (allConfigValuesAreNull) { - return null; - } else { - return offloadPolicies; - } - } catch (Exception e) { - log.error("Failed to merge configuration.", e); - return null; - } - } - - /** - * Make configurations of the OffloadPolicies compatible with the config file. - * - *

The names of the fields {@link OffloadPolicies#managedLedgerOffloadDeletionLagInMillis} - * and {@link OffloadPolicies#managedLedgerOffloadThresholdInBytes} are not matched with - * config file (broker.conf or standalone.conf). - * - * @param properties broker configuration properties - * @param field filed - * @return field value - */ - private static Object getCompatibleValue(Properties properties, Field field) { - Object object; - if (field.getName().equals("managedLedgerOffloadThresholdInBytes")) { - object = properties.getProperty("managedLedgerOffloadThresholdInBytes", - properties.getProperty(OFFLOAD_THRESHOLD_NAME_IN_CONF_FILE)); - } else if (field.getName().equals("managedLedgerOffloadDeletionLagInMillis")) { - object = properties.getProperty("managedLedgerOffloadDeletionLagInMillis", - properties.getProperty(DELETION_LAG_NAME_IN_CONF_FILE)); - } else { - object = properties.get(field.getName()); - } - return FieldParser.value((String) object, field); - } - - /** - * This method is used to make a compatible with old policies. - * - *

The filed {@link Policies#offload_threshold} is primitive, so it can't be known whether it had been set. - * In the old logic, if the field value is -1, it could be thought that the field had not been set. - * - * @param nsLevelPolicies namespace level offload policies - * @param policies namespace policies - * @return offload policies - */ - public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolicies, Policies policies) { - if (policies == null || (policies.offload_threshold == -1 && policies.offload_deletion_lag_ms == null)) { - return nsLevelPolicies; - } - if (nsLevelPolicies == null) { - nsLevelPolicies = new OffloadPolicies(); - } - if (nsLevelPolicies.getManagedLedgerOffloadThresholdInBytes() == null - && policies.offload_threshold != -1) { - nsLevelPolicies.setManagedLedgerOffloadThresholdInBytes(policies.offload_threshold); - } - if (nsLevelPolicies.getManagedLedgerOffloadDeletionLagInMillis() == null - && policies.offload_deletion_lag_ms != null) { - nsLevelPolicies.setManagedLedgerOffloadDeletionLagInMillis(policies.offload_deletion_lag_ms); - } - return nsLevelPolicies; - } - -} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 84021bfeeba97..3c574ebc0a9e5 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -42,6 +42,8 @@ import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; +import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -107,6 +109,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(FailureDomainInterface.class, FailureDomain.class); resolver.addMapping(NamespaceIsolationDataInterface.class, NamespaceIsolationData.class); resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); + resolver.addMapping(OffloadPoliciesInterface.class, OffloadPolicies.class); // we use MixIn class to add jackson annotations mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java index 6e47bb83875f7..397a985ad2016 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java @@ -19,7 +19,6 @@ package org.apache.pulsar.common.policies.data; import java.util.Properties; -import org.apache.pulsar.common.policies.data.OffloadPolicies.OffloadedReadPriority; import org.testng.Assert; import org.testng.annotations.Test; @@ -52,7 +51,7 @@ public void testS3Configuration() { final Long offloadThresholdInBytes = 10L * M; final Long offloadDeletionLagInMillis = 5L * MIN; - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create( + OffloadPolicies offloadPolicies = OffloadPolicies.create( driver, region, bucket, @@ -96,7 +95,7 @@ public void testGcsConfiguration() { final Long offloadDeletionLagInMillis = 5 * MIN; final OffloadedReadPriority readPriority = OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create( + OffloadPolicies offloadPolicies = OffloadPolicies.create( driver, region, bucket, @@ -178,7 +177,7 @@ public void testCreateByProperties() { properties.setProperty("fileSystemProfilePath", fileSystemProfilePath); properties.setProperty("fileSystemURI", fileSystemURI); - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(properties); + OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); Assert.assertEquals(offloadPolicies.getOffloadersDirectory(), offloadersDirectory); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), driver); @@ -222,7 +221,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis); - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(properties); + OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); Assert.assertEquals(offloadThresholdInBytes, offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis, offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis()); @@ -230,7 +229,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadThresholdInBytes", "" + (offloadThresholdInBytes + 10)); properties.setProperty("managedLedgerOffloadDeletionLagInMillis", "" + (offloadDeletionLagInMillis + 10)); - offloadPolicies = OffloadPoliciesUtil.create(properties); + offloadPolicies = OffloadPolicies.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 10), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 10, @@ -242,7 +241,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes + 30); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis + 30); - offloadPolicies = OffloadPoliciesUtil.create(properties); + offloadPolicies = OffloadPolicies.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 20), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 20, @@ -254,19 +253,19 @@ public void oldPoliciesCompatibleTest() { Policies policies = new Policies(); Assert.assertEquals(policies.offload_threshold, -1); - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.oldPoliciesCompatible(null, policies); + OffloadPolicies offloadPolicies = OffloadPolicies.oldPoliciesCompatible(null, policies); Assert.assertNull(offloadPolicies); policies.offload_deletion_lag_ms = 1000L; policies.offload_threshold = 0; - offloadPolicies = OffloadPoliciesUtil.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); policies.offload_deletion_lag_ms = 2000L; policies.offload_threshold = 100; - offloadPolicies = OffloadPoliciesUtil.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); } @@ -294,7 +293,7 @@ public void mergeTest() { brokerProperties.setProperty("managedLedgerOffloadMaxThreads", "" + brokerOffloadMaxThreads); OffloadPolicies offloadPolicies = - OffloadPoliciesUtil.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); + OffloadPolicies.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), brokerDriver); Assert.assertEquals(offloadPolicies.getS3ManagedLedgerOffloadBucket(), topicBucket); diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java index 9f5d598cc4dbd..a03909f4b0fe4 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java @@ -35,7 +35,6 @@ import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.nar.NarClassLoader; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.apache.pulsar.common.protocol.Commands; /** @@ -455,7 +454,7 @@ public PulsarAdmin getPulsarAdmin() throws PulsarClientException { public OffloadPolicies getOffloadPolices() { Properties offloadProperties = new Properties(); offloadProperties.putAll(getOffloaderProperties()); - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create(offloadProperties); + OffloadPolicies offloadPolicies = OffloadPolicies.create(offloadProperties); offloadPolicies.setManagedLedgerOffloadDriver(getManagedLedgerOffloadDriver()); offloadPolicies.setManagedLedgerOffloadMaxThreads(getManagedLedgerOffloadMaxThreads()); offloadPolicies.setOffloadersDirectory(getOffloadersDirectory()); diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java index 31c54ecfa53a2..f22e5094e853e 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java @@ -125,7 +125,7 @@ public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHand Collection splits; try { - OffloadPolicies offloadPolicies = this.pulsarAdmin.namespaces() + OffloadPolicies offloadPolicies = (OffloadPolicies) this.pulsarAdmin.namespaces() .getOffloadPolicies(topicName.getNamespace()); if (offloadPolicies != null) { offloadPolicies.setOffloadersDirectory(pulsarConnectorConfig.getOffloadersDirectory()); diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java index 5d63768d62667..149f344401854 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.impl.schema.JSONSchema; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; +import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; import org.mockito.invocation.InvocationOnMock; @@ -414,7 +414,7 @@ public void testGetSplitNonSchema(String delimiter) throws Exception { @Test public void pulsarSplitJsonCodecTest() throws JsonProcessingException, UnsupportedEncodingException { - OffloadPolicies offloadPolicies = OffloadPoliciesUtil.create( + OffloadPolicies offloadPolicies = OffloadPolicies.create( "aws-s3", "test-region", "test-bucket", @@ -427,7 +427,7 @@ public void pulsarSplitJsonCodecTest() throws JsonProcessingException, Unsupport 2000, 1000L, 5000L, - OffloadPolicies.OffloadedReadPriority.BOOKKEEPER_FIRST + OffloadedReadPriority.BOOKKEEPER_FIRST ); SchemaInfo schemaInfo = JSONSchema.of(Foo.class).getSchemaInfo(); diff --git a/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java b/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java index 8657445256c0a..78a32b033cefd 100644 --- a/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java +++ b/tiered-storage/file-system/src/test/java/org/apache/bookkeeper/mledger/offload/filesystem/FileStoreTestBase.java @@ -24,7 +24,6 @@ import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -50,7 +49,7 @@ public void start() throws Exception { hdfsURI = "hdfs://localhost:"+ hdfsCluster.getNameNodePort() + "/"; Properties properties = new Properties(); fileSystemManagedLedgerOffloader = new FileSystemManagedLedgerOffloader( - OffloadPoliciesUtil.create(properties), + OffloadPolicies.create(properties), scheduler, hdfsURI, basePath); } diff --git a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java index ec014c077aa1e..c76864d9ae8ea 100644 --- a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java +++ b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java @@ -56,7 +56,6 @@ import org.apache.bookkeeper.mledger.offload.jcloud.provider.TieredStorageConfiguration; import org.apache.bookkeeper.mledger.proto.MLDataFormats; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesUtil; import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.BlobBuilder; @@ -599,7 +598,7 @@ public CompletableFuture deleteOffloaded(UUID uid, Map off public OffloadPolicies getOffloadPolicies() { Properties properties = new Properties(); properties.putAll(config.getConfigProperties()); - return OffloadPoliciesUtil.create(properties); + return OffloadPolicies.create(properties); } @Override From 80fb31cab755915ef95034d2e43070f2249c130e Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sun, 30 May 2021 16:59:35 +0800 Subject: [PATCH 35/51] extract FunctionStats interfaces --- .../broker/admin/impl/FunctionsBase.java | 5 +- .../worker/PulsarFunctionPublishTest.java | 6 +- .../pulsar/io/PulsarFunctionE2ETest.java | 59 +++++---- .../apache/pulsar/client/admin/Functions.java | 11 +- ...unctionInstanceStatsDataBaseInterface.java | 41 ++++++ .../FunctionInstanceStatsDataInterface.java | 33 +++++ .../data/FunctionInstanceStatsInterface.java | 11 +- .../policies/data/FunctionStatsInterface.java | 59 +++++++++ .../data/WorkerFunctionInstanceStats.java | 2 +- .../client/admin/internal/FunctionsImpl.java | 19 +-- .../policies/data/FunctionInstanceStats.java | 36 ++++++ .../data/FunctionInstanceStatsData.java | 50 ++++++++ .../data/FunctionInstanceStatsDataBase.java | 57 +++++++++ .../common/policies/data/FunctionStats.java | 117 ++++++------------ .../policies/data/FunctionStatsMixIn.java | 52 -------- .../common/util/ObjectMapperFactory.java | 19 +-- .../worker/FunctionRuntimeManager.java | 26 ++-- .../pulsar/functions/worker/WorkerUtils.java | 9 +- .../worker/rest/api/ComponentImpl.java | 17 +-- .../functions/worker/rest/api/WorkerImpl.java | 5 +- .../rest/api/v3/FunctionsApiV3Resource.java | 5 +- .../worker/service/api/Component.java | 2 +- .../worker/rest/api/FunctionsImplTest.java | 5 +- .../functions/PulsarFunctionsTest.java | 33 +++-- 24 files changed, 441 insertions(+), 238 deletions(-) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseInterface.java create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataInterface.java rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java => pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsInterface.java (74%) create mode 100644 pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java rename {pulsar-client-admin-api => pulsar-common}/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java (51%) delete mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java index 6eb130189b08b..affd9a07e49b6 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java @@ -44,6 +44,7 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; @@ -427,7 +428,7 @@ public FunctionStats getFunctionStats( @GET @ApiOperation( value = "Displays the stats of a Pulsar Function instance", - response = FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class + response = FunctionInstanceStatsData.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -437,7 +438,7 @@ public FunctionStats getFunctionStats( }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/{instanceId}/stats") - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionInstanceStats( + public FunctionInstanceStatsData getFunctionInstanceStats( @ApiParam(value = "The tenant of a Pulsar Function") final @PathParam("tenant") String tenant, @ApiParam(value = "The namespace of a Pulsar Function") final @PathParam("namespace") String namespace, @ApiParam(value = "The name of a Pulsar Function") final @PathParam("functionName") String functionName, diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java index f21aabebcc727..054a66da62fa1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java @@ -333,7 +333,8 @@ public void testPulsarFunctionState() throws Exception { retryStrategically((test) -> { try { - FunctionStats functionStat = admin.functions().getFunctionStats(tenant, namespacePortion, functionName); + FunctionStats functionStat = (FunctionStats) + admin.functions().getFunctionStats(tenant, namespacePortion, functionName); return functionStat.getProcessedSuccessfullyTotal() == 5; } catch (PulsarAdminException e) { return false; @@ -470,7 +471,8 @@ public void testPulsarFunctionBKCleanup() throws Exception { retryStrategically((test) -> { try { - FunctionStats functionStat = admin.functions().getFunctionStats(tenant, namespacePortion, functionName); + FunctionStats functionStat = (FunctionStats) + admin.functions().getFunctionStats(tenant, namespacePortion, functionName); return functionStat.getProcessedSuccessfullyTotal() == 5; } catch (PulsarAdminException e) { return false; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java index 25b232ea48985..508c8f519f4e0 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java @@ -53,6 +53,7 @@ import org.apache.pulsar.common.functions.ConsumerConfig; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.io.SinkConfig; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.SubscriptionStats; @@ -293,8 +294,8 @@ public void testPulsarFunctionStats() throws Exception { FunctionRuntimeManager functionRuntimeManager = functionsWorkerService.getFunctionRuntimeManager(); FunctionStats functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, functionName, null); - FunctionStats functionStatsFromAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, - functionName); + FunctionStats functionStatsFromAdmin = (FunctionStats) admin.functions().getFunctionStats(tenant, + namespacePortion, functionName); assertEquals(functionStats, functionStatsFromAdmin); @@ -317,15 +318,17 @@ public void testPulsarFunctionStats() throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertNull(functionStats.instances.get(0).getMetrics().avgProcessLatency); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertNull(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency()); - - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency()); - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.getAvgProcessLatency()); + assertNull(functionStats.instances.get(0).getMetrics().getAvgProcessLatency()); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertNull(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency()); + + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency()); + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.getAvgProcessLatency()); // validate prometheus metrics empty String prometheusMetrics = PulsarFunctionTestUtils.getPrometheusMetrics(pulsar.getListenPortHTTP().get()); @@ -412,11 +415,11 @@ public void testPulsarFunctionStats() throws Exception { // validate function instance stats empty - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, namespacePortion, - functionName, 0, null); + FunctionInstanceStatsData functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, + namespacePortion, functionName, 0, null); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, - functionName, 0); + FunctionInstanceStatsData functionInstanceStatsAdmin = (FunctionInstanceStatsData) admin.functions(). + getFunctionStats(tenant, namespacePortion, functionName, 0); assertEquals(functionInstanceStats, functionInstanceStatsAdmin); assertEquals(functionInstanceStats, functionStats.instances.get(0).getMetrics()); @@ -441,7 +444,7 @@ public void testPulsarFunctionStats() throws Exception { functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, functionName, null); - functionStatsFromAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, + functionStatsFromAdmin = (FunctionStats) admin.functions().getFunctionStats(tenant, namespacePortion, functionName); assertEquals(functionStats, functionStatsFromAdmin); @@ -465,22 +468,24 @@ public void testPulsarFunctionStats() throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), totalMsgs); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().avgProcessLatency > 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), totalMsgs); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), totalMsgs); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency() > 0); - - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency()); - assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), functionStats.getAvgProcessLatency()); + assertTrue(functionStats.instances.get(0).getMetrics().getAvgProcessLatency() > 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), totalMsgs); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), totalMsgs); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertTrue(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency() > 0); + + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency()); + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), + functionStats.getAvgProcessLatency()); // validate function instance stats functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, namespacePortion, functionName, 0, null); - functionInstanceStatsAdmin = admin.functions().getFunctionStats(tenant, namespacePortion, - functionName, 0); + functionInstanceStatsAdmin = (FunctionInstanceStatsData) admin.functions().getFunctionStats(tenant, + namespacePortion, functionName, 0); assertEquals(functionInstanceStats, functionInstanceStatsAdmin); assertEquals(functionInstanceStats, functionStats.instances.get(0).getMetrics()); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java index 18e0767007213..205da72a1acf6 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java @@ -28,7 +28,8 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataInterface; +import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.FunctionStatus; /** @@ -410,7 +411,7 @@ CompletableFuture getFunctionStatsAsync( + CompletableFuture getFunctionStatsAsync( String tenant, String namespace, String function, int id); /** @@ -443,7 +444,7 @@ CompletableFuture * @throws PulsarAdminException */ - FunctionStats getFunctionStats(String tenant, String namespace, String function) + FunctionStatsInterface getFunctionStats(String tenant, String namespace, String function) throws PulsarAdminException; /** @@ -458,7 +459,7 @@ FunctionStats getFunctionStats(String tenant, String namespace, String function) * @return */ - CompletableFuture getFunctionStatsAsync(String tenant, String namespace, String function); + CompletableFuture getFunctionStatsAsync(String tenant, String namespace, String function); /** * Restart function instance. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseInterface.java new file mode 100644 index 0000000000000..9a57f83bd7cf7 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseInterface.java @@ -0,0 +1,41 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +public interface FunctionInstanceStatsDataBaseInterface { + long getReceivedTotal(); + + long getProcessedSuccessfullyTotal(); + + long getSystemExceptionsTotal(); + + long getUserExceptionsTotal(); + + Double getAvgProcessLatency(); + + void setReceivedTotal(long receivedTotal); + + void setProcessedSuccessfullyTotal(long processedSuccessfullyTotal); + + void setSystemExceptionsTotal(long systemExceptionsTotal); + + void setUserExceptionsTotal(long userExceptionsTotal); + + void setAvgProcessLatency(Double avgProcessLatency); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataInterface.java new file mode 100644 index 0000000000000..b3b282e60dbd5 --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataInterface.java @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +public interface FunctionInstanceStatsDataInterface extends FunctionInstanceStatsDataBaseInterface { + FunctionInstanceStatsDataBaseInterface getOneMin(); + + Long getLastInvocation(); + + java.util.Map getUserMetrics(); + + void setOneMin(FunctionInstanceStatsDataBaseInterface oneMin); + + void setLastInvocation(Long lastInvocation); + + void setUserMetrics(java.util.Map userMetrics); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsInterface.java similarity index 74% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsInterface.java index a4030612072e9..ffadfa91f5cc3 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsUtil.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsInterface.java @@ -18,13 +18,12 @@ */ package org.apache.pulsar.common.policies.data; -import java.io.IOException; -import org.apache.pulsar.common.util.ObjectMapperFactory; +public interface FunctionInstanceStatsInterface { + int getInstanceId(); -public class FunctionStatsUtil { + FunctionInstanceStatsDataInterface getMetrics(); - public static FunctionStats decode (String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStats.class); - } + void setInstanceId(int instanceId); + void setMetrics(FunctionInstanceStatsDataInterface metrics); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java new file mode 100644 index 0000000000000..a2fdf6e49c84c --- /dev/null +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java @@ -0,0 +1,59 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import java.util.List; + +public interface FunctionStatsInterface { + void addInstance(FunctionInstanceStatsInterface functionInstanceStats); + + FunctionStatsInterface calculateOverall(); + + long getReceivedTotal(); + + long getProcessedSuccessfullyTotal(); + + long getSystemExceptionsTotal(); + + long getUserExceptionsTotal(); + + Double getAvgProcessLatency(); + + FunctionInstanceStatsDataBaseInterface getOneMin(); + + Long getLastInvocation(); + + List getInstances(); + + void setReceivedTotal(long receivedTotal); + + void setProcessedSuccessfullyTotal(long processedSuccessfullyTotal); + + void setSystemExceptionsTotal(long systemExceptionsTotal); + + void setUserExceptionsTotal(long userExceptionsTotal); + + void setAvgProcessLatency(Double avgProcessLatency); + + void setOneMin(FunctionInstanceStatsDataBaseInterface oneMin); + + void setLastInvocation(Long lastInvocation); + + void setInstances(List instances); +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java index 8781898189c7c..8710695937095 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java @@ -29,5 +29,5 @@ public class WorkerFunctionInstanceStats { * Fully qualified function instance name. */ public String name; - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData metrics; + public FunctionInstanceStatsDataInterface metrics; } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java index 9c46d42f7ce6e..f4c88eb34f1d8 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java @@ -50,7 +50,10 @@ import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataInterface; import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.asynchttpclient.AsyncHandler; @@ -238,7 +241,7 @@ public void failed(Throwable throwable) { } @Override - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionStats( + public FunctionInstanceStatsDataInterface getFunctionStats( String tenant, String namespace, String function, int id) throws PulsarAdminException { try { return getFunctionStatsAsync(tenant, namespace, function, id) @@ -255,10 +258,10 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } @Override - public CompletableFuture getFunctionStatsAsync( + public CompletableFuture getFunctionStatsAsync( String tenant, String namespace, String function, int id) { WebTarget path = functions.path(tenant).path(namespace).path(function).path(Integer.toString(id)).path("stats"); - final CompletableFuture future = + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @@ -267,8 +270,7 @@ public void completed(Response response) { if (!response.getStatusInfo().equals(Response.Status.OK)) { future.completeExceptionally(getApiException(response)); } else { - future.complete(response.readEntity( - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class)); + future.complete(response.readEntity(FunctionInstanceStatsData.class)); } } @@ -281,7 +283,7 @@ public void failed(Throwable throwable) { } @Override - public FunctionStats getFunctionStats(String tenant, String namespace, String function) + public FunctionStatsInterface getFunctionStats(String tenant, String namespace, String function) throws PulsarAdminException { try { return getFunctionStatsAsync(tenant, namespace, function).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -297,9 +299,10 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu } @Override - public CompletableFuture getFunctionStatsAsync(String tenant, String namespace, String function) { + public CompletableFuture getFunctionStatsAsync(String tenant, + String namespace, String function) { WebTarget path = functions.path(tenant).path(namespace).path(function).path("stats"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java new file mode 100644 index 0000000000000..63f84570c011f --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java @@ -0,0 +1,36 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +/** + * Function instance statistics. + */ +@Data +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({ "instanceId", "metrics" }) +public class FunctionInstanceStats implements FunctionInstanceStatsInterface { + /** Instance Id of function instance. **/ + public int instanceId; + + public FunctionInstanceStatsDataInterface metrics = new FunctionInstanceStatsData(); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java new file mode 100644 index 0000000000000..7066b8073496c --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java @@ -0,0 +1,50 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Function instance statistics data. + */ +@EqualsAndHashCode(callSuper = true) +@Data +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", + "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "userMetrics" }) +public class FunctionInstanceStatsData extends FunctionInstanceStatsDataBase implements FunctionInstanceStatsDataInterface { + @JsonProperty("1min") + public FunctionInstanceStatsDataBaseInterface oneMin = new FunctionInstanceStatsDataBase(); + + /** + * Timestamp of when the function was last invoked for instance. + **/ + public Long lastInvocation; + + /** + * Map of user defined metrics. + **/ + public Map userMetrics = new HashMap<>(); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java new file mode 100644 index 0000000000000..9bc2013f04231 --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java @@ -0,0 +1,57 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.policies.data; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +/** + * Function instance statistics data base. + */ +@Data +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", + "userExceptionsTotal", "avgProcessLatency" }) +public class FunctionInstanceStatsDataBase implements FunctionInstanceStatsDataBaseInterface { + /** + * Total number of records function received from source for instance. + **/ + public long receivedTotal; + + /** + * Total number of records successfully processed by user function for instance. + **/ + public long processedSuccessfullyTotal; + + /** + * Total number of system exceptions thrown for instance. + **/ + public long systemExceptionsTotal; + + /** + * Total number of user exceptions thrown for instance. + **/ + public long userExceptionsTotal; + + /** + * Average process latency for function for instance. + **/ + public Double avgProcessLatency; +} diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java similarity index 51% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java index c2ab0139b08b2..5894dba1bb743 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java @@ -18,18 +18,26 @@ */ package org.apache.pulsar.common.policies.data; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.io.IOException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import lombok.Data; import lombok.EqualsAndHashCode; +import org.apache.pulsar.common.util.ObjectMapperFactory; /** * Statistics for Pulsar Function. */ @Data -public class FunctionStats { +@JsonInclude(JsonInclude.Include.ALWAYS) +@JsonPropertyOrder({"receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", + "avgProcessLatency", "1min", "lastInvocation", "instances"}) +public class FunctionStats implements FunctionStatsInterface { /** * Overall total number of records function received from source. @@ -56,90 +64,30 @@ public class FunctionStats { **/ public Double avgProcessLatency; - public FunctionInstanceStats.FunctionInstanceStatsDataBase oneMin = - new FunctionInstanceStats.FunctionInstanceStatsDataBase(); + @JsonProperty("1min") + public FunctionInstanceStatsDataBaseInterface oneMin = + new FunctionInstanceStatsDataBase(); /** * Timestamp of when the function was last invoked by any instance. **/ public Long lastInvocation; - /** - * Function instance statistics. - */ - @Data - public static class FunctionInstanceStats { - - /** Instance Id of function instance. **/ - public int instanceId; - - /** - * Function instance statistics data base. - */ - @Data - public static class FunctionInstanceStatsDataBase { - /** - * Total number of records function received from source for instance. - **/ - public long receivedTotal; - - /** - * Total number of records successfully processed by user function for instance. - **/ - public long processedSuccessfullyTotal; - - /** - * Total number of system exceptions thrown for instance. - **/ - public long systemExceptionsTotal; - - /** - * Total number of user exceptions thrown for instance. - **/ - public long userExceptionsTotal; - - /** - * Average process latency for function for instance. - **/ - public Double avgProcessLatency; - } - - /** - * Function instance statistics data. - */ - @EqualsAndHashCode(callSuper = true) - @Data - public static class FunctionInstanceStatsData extends FunctionInstanceStatsDataBase { + public List instances = new LinkedList<>(); - public FunctionInstanceStatsDataBase oneMin = new FunctionInstanceStatsDataBase(); - - /** - * Timestamp of when the function was last invoked for instance. - **/ - public Long lastInvocation; - - /** - * Map of user defined metrics. - **/ - public Map userMetrics = new HashMap<>(); - } - - public FunctionInstanceStatsData metrics = new FunctionInstanceStatsData(); - } - - public List instances = new LinkedList<>(); - - public void addInstance(FunctionInstanceStats functionInstanceStats) { + @Override + public void addInstance(FunctionInstanceStatsInterface functionInstanceStats) { instances.add(functionInstanceStats); } + @Override public FunctionStats calculateOverall() { int nonNullInstances = 0; int nonNullInstancesOneMin = 0; - for (FunctionInstanceStats functionInstanceStats : instances) { - FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData = - functionInstanceStats.getMetrics(); + for (FunctionInstanceStatsInterface functionInstanceStats : instances) { + FunctionInstanceStatsData functionInstanceStatsData = + (FunctionInstanceStatsData) functionInstanceStats.getMetrics(); receivedTotal += functionInstanceStatsData.receivedTotal; processedSuccessfullyTotal += functionInstanceStatsData.processedSuccessfullyTotal; systemExceptionsTotal += functionInstanceStatsData.systemExceptionsTotal; @@ -152,15 +100,19 @@ public FunctionStats calculateOverall() { nonNullInstances++; } - oneMin.receivedTotal += functionInstanceStatsData.oneMin.receivedTotal; - oneMin.processedSuccessfullyTotal += functionInstanceStatsData.oneMin.processedSuccessfullyTotal; - oneMin.systemExceptionsTotal += functionInstanceStatsData.oneMin.systemExceptionsTotal; - oneMin.userExceptionsTotal += functionInstanceStatsData.oneMin.userExceptionsTotal; - if (functionInstanceStatsData.oneMin.avgProcessLatency != null) { - if (oneMin.avgProcessLatency == null) { - oneMin.avgProcessLatency = 0.0; + oneMin.setReceivedTotal(oneMin.getReceivedTotal() + functionInstanceStatsData.oneMin.getReceivedTotal()); + oneMin.setProcessedSuccessfullyTotal(oneMin.getProcessedSuccessfullyTotal() + + functionInstanceStatsData.oneMin.getProcessedSuccessfullyTotal()); + oneMin.setSystemExceptionsTotal(oneMin.getSystemExceptionsTotal() + + functionInstanceStatsData.oneMin.getSystemExceptionsTotal()); + oneMin.setUserExceptionsTotal(oneMin.getUserExceptionsTotal() + + functionInstanceStatsData.oneMin.getUserExceptionsTotal()); + if (functionInstanceStatsData.oneMin.getAvgProcessLatency() != null) { + if (oneMin.getAvgProcessLatency() == null) { + oneMin.setAvgProcessLatency(0.0); } - oneMin.avgProcessLatency += functionInstanceStatsData.oneMin.avgProcessLatency; + oneMin.setAvgProcessLatency(oneMin.getAvgProcessLatency() + + functionInstanceStatsData.oneMin.getAvgProcessLatency()); nonNullInstancesOneMin++; } @@ -180,12 +132,15 @@ public FunctionStats calculateOverall() { // calculate 1min average from sum if (nonNullInstancesOneMin > 0) { - oneMin.avgProcessLatency = oneMin.avgProcessLatency / nonNullInstancesOneMin; + oneMin.setAvgProcessLatency(oneMin.getAvgProcessLatency() / nonNullInstancesOneMin); } else { - oneMin.avgProcessLatency = null; + oneMin.setAvgProcessLatency(null); } return this; } + public static FunctionStats decode (String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStats.class); + } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java deleted file mode 100644 index 62ef328075323..0000000000000 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsMixIn.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.pulsar.common.policies.data; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; - -@JsonInclude(JsonInclude.Include.ALWAYS) -@JsonPropertyOrder({"receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", - "avgProcessLatency", "1min", "lastInvocation", "instances"}) -public abstract class FunctionStatsMixIn { - @JsonProperty("1min") - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase oneMin; - - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "instanceId", "metrics" }) - public abstract static class FunctionInstanceStatsMixIn { - - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", - "userExceptionsTotal", "avgProcessLatency" }) - public abstract static class FunctionInstanceStatsDataBaseMixIn { - - } - - @JsonInclude(JsonInclude.Include.ALWAYS) - @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", - "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "userMetrics" }) - public abstract static class FunctionInstanceStatsDataMixIn extends FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase { - @JsonProperty("1min") - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase oneMin; - } - - } -} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 3c574ebc0a9e5..feed8e32333bd 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -38,8 +38,14 @@ import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.FailureDomainInterface; +import org.apache.pulsar.common.policies.data.FunctionInstanceStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBase; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBaseInterface; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataInterface; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsInterface; import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStatsMixIn; +import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.OffloadPolicies; @@ -110,19 +116,16 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(NamespaceIsolationDataInterface.class, NamespaceIsolationData.class); resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); resolver.addMapping(OffloadPoliciesInterface.class, OffloadPolicies.class); + resolver.addMapping(FunctionStatsInterface.class, FunctionStats.class); + resolver.addMapping(FunctionInstanceStatsInterface.class, FunctionInstanceStats.class); + resolver.addMapping(FunctionInstanceStatsDataInterface.class, FunctionInstanceStatsData.class); + resolver.addMapping(FunctionInstanceStatsDataBaseInterface.class, FunctionInstanceStatsDataBase.class); // we use MixIn class to add jackson annotations mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); mapper.addMixIn(ResourceQuota.class, ResourceQuotaMixIn.class); mapper.addMixIn(FunctionConfig.class, JsonIgnorePropertiesMixIn.class); mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); - mapper.addMixIn(FunctionStats.class, FunctionStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataMixIn.class); - mapper.addMixIn(FunctionStats.FunctionInstanceStats.FunctionInstanceStatsDataBase.class, - FunctionStatsMixIn.FunctionInstanceStatsMixIn.FunctionInstanceStatsDataBaseMixIn.class); mapper.addMixIn(Metrics.class, MetricsMixIn.class); module.setAbstractTypes(resolver); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java index 222ebb7996273..55e66b49b7c57 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java @@ -51,6 +51,8 @@ import org.apache.pulsar.common.functions.AuthenticationConfig; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.policies.data.ErrorData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.Reflections; @@ -532,7 +534,7 @@ private void stopFunction(String fullyQualifiedInstanceId, boolean restart) thro * @param instanceId the function instance id * @return jsonObject containing stats for instance */ - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionInstanceStats(String tenant, String namespace, + public FunctionInstanceStatsData getFunctionInstanceStats(String tenant, String namespace, String functionName, int instanceId, URI uri) { Assignment assignment; if (runtimeFactory.externallyManaged()) { @@ -542,7 +544,7 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } if (assignment == null) { - return new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + return new FunctionInstanceStatsData(); } final String assignedWorkerId = assignment.getWorkerId(); @@ -554,9 +556,12 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction FunctionCommon.getFullyQualifiedInstanceId(assignment.getInstance())); RuntimeSpawner runtimeSpawner = functionRuntimeInfo.getRuntimeSpawner(); if (runtimeSpawner != null) { - return WorkerUtils.getFunctionInstanceStats(FunctionCommon.getFullyQualifiedInstanceId(assignment.getInstance()), functionRuntimeInfo, instanceId).getMetrics(); + return (FunctionInstanceStatsData) + WorkerUtils.getFunctionInstanceStats( + FunctionCommon.getFullyQualifiedInstanceId( + assignment.getInstance()), functionRuntimeInfo, instanceId).getMetrics(); } - return new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + return new FunctionInstanceStatsData(); } else { // query other worker @@ -568,7 +573,7 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } } if (workerInfo == null) { - return new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + return new FunctionInstanceStatsData(); } if (uri == null) { @@ -603,10 +608,10 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu int parallelism = assignment.getInstance().getFunctionMetaData().getFunctionDetails().getParallelism(); for (int i = 0; i < parallelism; ++i) { - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, + FunctionInstanceStatsData functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, functionName, i, null); - FunctionStats.FunctionInstanceStats functionInstanceStats = new FunctionStats.FunctionInstanceStats(); + FunctionInstanceStats functionInstanceStats = new FunctionInstanceStats(); functionInstanceStats.setInstanceId(i); functionInstanceStats.setMetrics(functionInstanceStatsData); functionStats.addInstance(functionInstanceStats); @@ -636,19 +641,20 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu for (Assignment assignment : assignments) { boolean isOwner = this.workerConfig.getWorkerId().equals(assignment.getWorkerId()); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData; + FunctionInstanceStatsData functionInstanceStatsData; if (isOwner) { functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, functionName, assignment.getInstance().getInstanceId(), null); } else { - functionInstanceStatsData = this.functionAdmin.functions().getFunctionStats( + functionInstanceStatsData = + (FunctionInstanceStatsData) this.functionAdmin.functions().getFunctionStats( assignment.getInstance().getFunctionMetaData().getFunctionDetails().getTenant(), assignment.getInstance().getFunctionMetaData().getFunctionDetails().getNamespace(), assignment.getInstance().getFunctionMetaData().getFunctionDetails().getName(), assignment.getInstance().getInstanceId()); } - FunctionStats.FunctionInstanceStats functionInstanceStats = new FunctionStats.FunctionInstanceStats(); + FunctionInstanceStats functionInstanceStats = new FunctionInstanceStats(); functionInstanceStats.setInstanceId(assignment.getInstance().getInstanceId()); functionInstanceStats.setMetrics(functionInstanceStatsData); functionStats.addInstance(functionInstanceStats); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java index 3a2a34418e106..68692dbc095c7 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java @@ -41,6 +41,8 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.ReaderBuilder; import org.apache.pulsar.common.conf.InternalConfigurationData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.functions.proto.InstanceCommunication; import org.apache.pulsar.functions.runtime.Runtime; @@ -261,12 +263,12 @@ && isNotBlank(authParams)) { } } - public static FunctionStats.FunctionInstanceStats getFunctionInstanceStats(String fullyQualifiedInstanceName, + public static FunctionInstanceStats getFunctionInstanceStats(String fullyQualifiedInstanceName, FunctionRuntimeInfo functionRuntimeInfo, int instanceId) { RuntimeSpawner functionRuntimeSpawner = functionRuntimeInfo.getRuntimeSpawner(); - FunctionStats.FunctionInstanceStats functionInstanceStats = new FunctionStats.FunctionInstanceStats(); + FunctionInstanceStats functionInstanceStats = new FunctionInstanceStats(); if (functionRuntimeSpawner != null) { Runtime functionRuntime = functionRuntimeSpawner.getRuntime(); if (functionRuntime != null) { @@ -275,8 +277,7 @@ public static FunctionStats.FunctionInstanceStats getFunctionInstanceStats(Strin InstanceCommunication.MetricsData metricsData = functionRuntime.getMetrics(instanceId).get(); functionInstanceStats.setInstanceId(instanceId); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData - = new FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData(); + FunctionInstanceStatsData functionInstanceStatsData = new FunctionInstanceStatsData(); functionInstanceStatsData.setReceivedTotal(metricsData.getReceivedTotal()); functionInstanceStatsData.setProcessedSuccessfullyTotal(metricsData.getProcessedSuccessfullyTotal()); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java index 5a7cdac11b6f5..32880e6bac518 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java @@ -60,6 +60,7 @@ import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.Codec; @@ -780,13 +781,13 @@ public FunctionStats getFunctionStats(final String tenant, } @Override - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionsInstanceStats(final String tenant, - final String namespace, - final String componentName, - final String instanceId, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps) { + public FunctionInstanceStatsData getFunctionsInstanceStats(final String tenant, + final String namespace, + final String componentName, + final String instanceId, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); } @@ -829,7 +830,7 @@ public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunction } FunctionRuntimeManager functionRuntimeManager = worker().getFunctionRuntimeManager(); - FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData functionInstanceStatsData; + FunctionInstanceStatsData functionInstanceStatsData; try { functionInstanceStatsData = functionRuntimeManager.getFunctionInstanceStats(tenant, namespace, componentName, Integer.parseInt(instanceId), uri); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java index 7d24d8cc79028..38bc5982a9f1e 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStats; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.WorkerFunctionInstanceStats; import org.apache.pulsar.common.util.RestException; @@ -176,7 +177,7 @@ public List getFunctionsMetrics(String clientRole) Function.FunctionDetails functionDetails = functionRuntimeInfo.getFunctionInstance().getFunctionMetaData().getFunctionDetails(); int parallelism = functionDetails.getParallelism(); for (int i = 0; i < parallelism; ++i) { - FunctionStats.FunctionInstanceStats functionInstanceStats = + FunctionInstanceStats functionInstanceStats = WorkerUtils.getFunctionInstanceStats(fullyQualifiedInstanceName, functionRuntimeInfo, i); WorkerFunctionInstanceStats workerFunctionInstanceStats = new WorkerFunctionInstanceStats(); workerFunctionInstanceStats.setName(FunctionCommon.getFullyQualifiedInstanceId( @@ -186,7 +187,7 @@ public List getFunctionsMetrics(String clientRole) metricsList.add(workerFunctionInstanceStats); } } else { - FunctionStats.FunctionInstanceStats functionInstanceStats = + FunctionInstanceStats functionInstanceStats = WorkerUtils.getFunctionInstanceStats(fullyQualifiedInstanceName, functionRuntimeInfo, functionRuntimeInfo.getFunctionInstance().getInstanceId()); WorkerFunctionInstanceStats workerFunctionInstanceStats = new WorkerFunctionInstanceStats(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java index 6d037c9855d00..c0ba549764587 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java @@ -27,6 +27,7 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; @@ -182,7 +183,7 @@ public FunctionStats getFunctionStats(final @PathParam("tenant") String tenant, @GET @ApiOperation( value = "Displays the stats of a Pulsar Function instance", - response = FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData.class + response = FunctionInstanceStatsData.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -192,7 +193,7 @@ public FunctionStats getFunctionStats(final @PathParam("tenant") String tenant, }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/{instanceId}/stats") - public FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData getFunctionInstanceStats( + public FunctionInstanceStatsData getFunctionInstanceStats( final @PathParam("tenant") String tenant, final @PathParam("namespace") String namespace, final @PathParam("functionName") String functionName, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java index 94d2a49734339..5a00dd3f6bcc6 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java @@ -27,8 +27,8 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStats.FunctionInstanceStats.FunctionInstanceStatsData; import org.apache.pulsar.functions.worker.WorkerService; /** diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java index 76586b7a7ab5d..f4cf36bef1824 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java @@ -27,6 +27,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; +import org.apache.pulsar.common.policies.data.FunctionInstanceStats; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.functions.api.Context; @@ -233,9 +234,9 @@ public void testMetricsEmpty() { FunctionRuntimeInfo functionRuntimeInfo = mock(FunctionRuntimeInfo.class); doReturn(runtimeSpawner).when(functionRuntimeInfo).getRuntimeSpawner(); - FunctionStats.FunctionInstanceStats instanceStats1 = WorkerUtils + FunctionInstanceStats instanceStats1 = WorkerUtils .getFunctionInstanceStats("public/default/test", functionRuntimeInfo, 0); - FunctionStats.FunctionInstanceStats instanceStats2 = WorkerUtils + FunctionInstanceStats instanceStats2 = WorkerUtils .getFunctionInstanceStats("public/default/test", functionRuntimeInfo, 1); FunctionStats functionStats = new FunctionStats(); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java index 7f4dbaaa61ce9..d77009ef7bc6b 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java @@ -59,7 +59,6 @@ import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.client.impl.schema.generic.GenericJsonRecord; import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStatsUtil; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.FunctionStatusUtil; import org.apache.pulsar.common.policies.data.RetentionPolicies; @@ -492,7 +491,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStatsUtil.decode(result.getStdout()); + FunctionStats functionStats = FunctionStats.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages + 2); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); @@ -506,7 +505,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 2); - assertTrue(functionStats.instances.get(0).getMetrics().avgProcessLatency > 0); + assertTrue(functionStats.instances.get(0).getMetrics().getAvgProcessLatency() > 0); // delete function deleteFunction(functionName); @@ -959,7 +958,7 @@ protected void getFunctionStatsEmpty(String functionName) throws Exception { ); log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStatsUtil.decode(result.getStdout()); + FunctionStats functionStats = FunctionStats.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), 0); assertEquals(functionStats.getProcessedSuccessfullyTotal(), 0); @@ -980,12 +979,12 @@ protected void getFunctionStatsEmpty(String functionName) throws Exception { assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().avgProcessLatency, null); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency(), null); + assertEquals(functionStats.instances.get(0).getMetrics().getAvgProcessLatency(), null); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency(), null); } private void getFunctionStats(String functionName, int numMessages) throws Exception { @@ -1000,7 +999,7 @@ private void getFunctionStats(String functionName, int numMessages) throws Excep log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStatsUtil.decode(result.getStdout()); + FunctionStats functionStats = FunctionStats.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); @@ -1020,12 +1019,12 @@ private void getFunctionStats(String functionName, int numMessages) throws Excep assertEquals(functionStats.instances.get(0).getMetrics().getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.instances.get(0).getMetrics().getSystemExceptionsTotal(), 0); assertEquals(functionStats.instances.get(0).getMetrics().getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().avgProcessLatency > 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getReceivedTotal(), numMessages); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getProcessedSuccessfullyTotal(), numMessages); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getSystemExceptionsTotal(), 0); - assertEquals(functionStats.instances.get(0).getMetrics().oneMin.getUserExceptionsTotal(), 0); - assertTrue(functionStats.instances.get(0).getMetrics().oneMin.getAvgProcessLatency() > 0); + assertTrue(functionStats.instances.get(0).getMetrics().getAvgProcessLatency() > 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getReceivedTotal(), numMessages); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getProcessedSuccessfullyTotal(), numMessages); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getSystemExceptionsTotal(), 0); + assertEquals(functionStats.instances.get(0).getMetrics().getOneMin().getUserExceptionsTotal(), 0); + assertTrue(functionStats.instances.get(0).getMetrics().getOneMin().getAvgProcessLatency() > 0); } private void getFunctionInfoNotFound(String functionName) throws Exception { From 7d1a7462c092e67adb55947934813625752a0ee7 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sun, 30 May 2021 18:35:22 +0800 Subject: [PATCH 36/51] fix unit test --- .../java/org/apache/pulsar/sql/presto/TestPulsarConnector.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java index d1701d929d571..958256588299f 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java @@ -508,7 +508,8 @@ public SchemaInfo answer(InvocationOnMock invocationOnMock) throws Throwable { if (topicsToSchemas.get(topic) != null) { return topicsToSchemas.get(topic); } else { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } } }); From 9513b47e0a3c1b6bba888a1ff635a8495681aa02 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sun, 30 May 2021 22:28:30 +0800 Subject: [PATCH 37/51] fix shaded class --- .../pulsar/common/util/ObjectMapperFactory.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index feed8e32333bd..420f4d6b1b814 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -25,6 +25,8 @@ import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import io.netty.util.concurrent.FastThreadLocal; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ClassUtils; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; @@ -60,6 +62,7 @@ import org.apache.pulsar.policies.data.loadbalancer.LoadReportDeserializer; @SuppressWarnings("checkstyle:JavadocType") +@Slf4j public class ObjectMapperFactory { public static ObjectMapper create() { ObjectMapper mapper = new ObjectMapper(); @@ -107,7 +110,6 @@ private static void setAnnotationsModule(ObjectMapper mapper) { SimpleModule module = new SimpleModule("AnnotationsModule"); // we use customized deserializer to replace jackson annotations in some POJOs - module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(AutoFailoverPolicyDataInterface.class, AutoFailoverPolicyData.class); resolver.addMapping(BrokerNamespaceIsolationDataInterface.class, BrokerNamespaceIsolationData.class); @@ -128,6 +130,16 @@ private static void setAnnotationsModule(ObjectMapper mapper) { mapper.addMixIn(FunctionState.class, JsonIgnorePropertiesMixIn.class); mapper.addMixIn(Metrics.class, MetricsMixIn.class); + try { + // We look for LoadManagerReport first, then add deserializer to the module + // With shaded client, org.apache.pulsar.policies is relocated to + // org.apache.pulsar.shade.org.apache.pulsar.policies + ClassUtils.getClass("org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport"); + module.addDeserializer(LoadManagerReport.class, new LoadReportDeserializer()); + } catch (ClassNotFoundException e) { + log.debug("Add LoadManagerReport deserializer failed because LoadManagerReport.class has been shaded", e); + } + module.setAbstractTypes(resolver); mapper.registerModule(module); From 00fd77786c47c3145e5e569eb885ec405c517339 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Sun, 30 May 2021 23:09:59 +0800 Subject: [PATCH 38/51] add object mapper mixin tests --- .../common/util/ObjectMapperFactoryTest.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 pulsar-common/src/test/java/org/apache/pulsar/common/util/ObjectMapperFactoryTest.java diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/util/ObjectMapperFactoryTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/util/ObjectMapperFactoryTest.java new file mode 100644 index 0000000000000..e42e6987c942c --- /dev/null +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/util/ObjectMapperFactoryTest.java @@ -0,0 +1,77 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.common.util; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.pulsar.common.policies.data.BacklogQuota; +import org.apache.pulsar.common.policies.data.ResourceQuota; +import org.apache.pulsar.common.stats.Metrics; +import org.testng.Assert; +import org.testng.annotations.Test; + +public class ObjectMapperFactoryTest { + @Test + public void testBacklogQuotaMixIn() { + ObjectMapper objectMapper = ObjectMapperFactory.getThreadLocal(); + String json = "{\"limit\":10,\"limitTime\":0,\"policy\":\"producer_request_hold\"}"; + try { + BacklogQuota backlogQuota = objectMapper.readValue(json, BacklogQuota.class); + Assert.assertEquals(backlogQuota.getLimitSize(), 10); + Assert.assertEquals(backlogQuota.getLimitTime(), 0); + Assert.assertEquals(backlogQuota.getPolicy(), BacklogQuota.RetentionPolicy.producer_request_hold); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + + try { + String expectJson = "{\"limitSize\":10,\"limitTime\":0,\"policy\":\"producer_request_hold\"}"; + BacklogQuota backlogQuota = new BacklogQuota(10, 0, + BacklogQuota.RetentionPolicy.producer_request_hold); + String writeJson = objectMapper.writeValueAsString(backlogQuota); + Assert.assertEquals(expectJson, writeJson); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + } + + @Test + public void testResourceQuotaMixIn() { + ObjectMapper objectMapper = ObjectMapperFactory.getThreadLocal(); + try { + ResourceQuota resourceQuota = new ResourceQuota(); + String json = objectMapper.writeValueAsString(resourceQuota); + Assert.assertFalse(json.contains("valid")); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + } + + @Test + public void testMetricsMixIn() { + ObjectMapper objectMapper = ObjectMapperFactory.getThreadLocal(); + try { + Metrics metrics = new Metrics(); + String json = objectMapper.writeValueAsString(metrics); + Assert.assertTrue(json.contains("dimensions")); + } catch (Exception ex) { + Assert.fail("shouldn't have thrown exception", ex); + } + } + +} From 6666950429b435a61f30a8cb356c11b9cdbe2c15 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 08:25:41 +0800 Subject: [PATCH 39/51] fix ci --- .../java/org/apache/pulsar/sql/presto/TestPulsarConnector.java | 3 ++- .../java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java index 958256588299f..cc96fa6977755 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java @@ -455,7 +455,8 @@ public List answer(InvocationOnMock invocation) throws Throwable { String tenant = (String) args[0]; List ns = getNamespace(tenant); if (ns.isEmpty()) { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } return ns; } diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java index 6e4b0defb581b..cd31b4be4441e 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarMetadata.java @@ -168,8 +168,9 @@ public void testGetTableMetadataWrongTable(String delimiter) { @Test(dataProvider = "rewriteNamespaceDelimiter", singleThreaded = true) public void testGetTableMetadataTableNoSchema(String delimiter) throws PulsarAdminException { updateRewriteNamespaceDelimiterIfNeeded(delimiter); + ClientErrorException cee = new ClientErrorException(Response.Status.NOT_FOUND); when(this.schemas.getSchemaInfo(eq(TOPIC_1.getSchemaName()))).thenThrow( - new PulsarAdminException(new ClientErrorException(Response.Status.NOT_FOUND))); + new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus())); PulsarTableHandle pulsarTableHandle = new PulsarTableHandle( pulsarConnectorId.toString(), From 7b4a9e08246093473a88291286375db4ba8736d5 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 09:55:02 +0800 Subject: [PATCH 40/51] fix admin exception ci error --- .../org/apache/pulsar/sql/presto/TestPulsarConnector.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java index cc96fa6977755..ac05a91d54ebb 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnector.java @@ -470,7 +470,8 @@ public List answer(InvocationOnMock invocationOnMock) throws Throwable { String ns = (String) args[0]; List topics = getTopics(ns); if (topics.isEmpty()) { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } return topics; } @@ -483,7 +484,8 @@ public List answer(InvocationOnMock invocationOnMock) throws Throwable { String ns = (String) args[0]; List topics = getPartitionedTopics(ns); if (topics.isEmpty()) { - throw new PulsarAdminException(new ClientErrorException(Response.status(404).build())); + ClientErrorException cee = new ClientErrorException(Response.status(404).build()); + throw new PulsarAdminException(cee, cee.getMessage(), cee.getResponse().getStatus()); } return topics; } From 70ffb0b832c370c663763b83b84d3dd105452a43 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:31:55 +0800 Subject: [PATCH 41/51] UpdateOptions --- .../pulsar/broker/admin/impl/FunctionsBase.java | 4 ++-- .../apache/pulsar/broker/admin/impl/SinksBase.java | 4 ++-- .../pulsar/broker/admin/impl/SourcesBase.java | 4 ++-- .../org/apache/pulsar/client/admin/Functions.java | 10 +++++----- .../java/org/apache/pulsar/client/admin/Sinks.java | 10 +++++----- .../org/apache/pulsar/client/admin/Sources.java | 10 +++++----- ...ateOptionsInterface.java => UpdateOptions.java} | 2 +- .../client/admin/internal/FunctionsImpl.java | 14 +++++++------- .../pulsar/client/admin/internal/SinksImpl.java | 14 +++++++------- .../pulsar/client/admin/internal/SourcesImpl.java | 14 +++++++------- .../client/admin/internal/SinksImplTest.java | 8 ++++---- .../apache/pulsar/admin/cli/CmdFunctionsTest.java | 13 ++++++------- .../org/apache/pulsar/admin/cli/CmdFunctions.java | 4 ++-- .../java/org/apache/pulsar/admin/cli/CmdSinks.java | 4 ++-- .../org/apache/pulsar/admin/cli/CmdSources.java | 4 ++-- .../org/apache/pulsar/admin/cli/TestCmdSinks.java | 6 +++--- .../apache/pulsar/admin/cli/TestCmdSources.java | 8 +++----- .../{UpdateOptions.java => UpdateOptionsImpl.java} | 2 +- .../functions/worker/rest/api/FunctionsImpl.java | 4 ++-- .../functions/worker/rest/api/SinksImpl.java | 4 ++-- .../functions/worker/rest/api/SourcesImpl.java | 4 ++-- .../worker/rest/api/v3/FunctionsApiV3Resource.java | 4 ++-- .../worker/rest/api/v3/SinksApiV3Resource.java | 4 ++-- .../worker/rest/api/v3/SourcesApiV3Resource.java | 4 ++-- .../functions/worker/service/api/Functions.java | 4 ++-- .../pulsar/functions/worker/service/api/Sinks.java | 4 ++-- .../functions/worker/service/api/Sources.java | 4 ++-- 27 files changed, 84 insertions(+), 87 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/{UpdateOptionsInterface.java => UpdateOptions.java} (95%) rename pulsar-common/src/main/java/org/apache/pulsar/common/functions/{UpdateOptions.java => UpdateOptionsImpl.java} (95%) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java index affd9a07e49b6..27904170f73ed 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.Message; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; @@ -304,7 +304,7 @@ public void updateFunction( ) final @FormDataParam("functionConfig") FunctionConfig functionConfig, @ApiParam(value = "The update options is for the Pulsar Function that needs to be updated.") - final @FormDataParam("updateOptions") UpdateOptions updateOptions) throws IOException { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) throws IOException { functions().updateFunction(tenant, namespace, functionName, uploadedInputStream, fileDetail, functionPkgUrl, functionConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java index 5d57723eb03a8..e2d3a2d124595 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SinksBase.java @@ -37,7 +37,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.apache.pulsar.broker.admin.AdminResource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; @@ -252,7 +252,7 @@ public void updateSink(@ApiParam(value = "The tenant of a Pulsar Sink") final @P ) final @FormDataParam("sinkConfig") SinkConfig sinkConfig, @ApiParam(value = "Update options for the Pulsar Sink") - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sinks().updateSink(tenant, namespace, sinkName, uploadedInputStream, fileDetail, sinkPkgUrl, sinkConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java index 2d951b0e77d72..a798f0d22e93a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SourcesBase.java @@ -37,7 +37,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.apache.pulsar.broker.admin.AdminResource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; @@ -211,7 +211,7 @@ public void updateSource( ) final @FormDataParam("sourceConfig") SourceConfig sourceConfig, @ApiParam(value = "Update options for Pulsar Source") - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sources().updateSource(tenant, namespace, sourceName, uploadedInputStream, fileDetail, sourcePkgUrl, sourceConfig, clientAppId(), clientAuthData(), updateOptions); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java index 205da72a1acf6..5119e673fa042 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java @@ -26,7 +26,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.UpdateOptionsInterface; +import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataInterface; import org.apache.pulsar.common.policies.data.FunctionStatsInterface; @@ -206,7 +206,7 @@ public interface Functions { * @throws PulsarAdminException * Unexpected error */ - void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions) + void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException; /** @@ -219,7 +219,7 @@ void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOption * options for the update operations */ CompletableFuture updateFunctionAsync( - FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions); + FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions); /** * Update the configuration for a function. @@ -278,7 +278,7 @@ CompletableFuture updateFunctionAsync( * @throws PulsarAdminException * Unexpected error */ - void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateOptionsInterface updateOptions) + void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions) throws PulsarAdminException; /** @@ -297,7 +297,7 @@ void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, UpdateO * options for the update operations */ CompletableFuture updateFunctionWithUrlAsync( - FunctionConfig functionConfig, String pkgUrl, UpdateOptionsInterface updateOptions); + FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions); /** * Delete an existing function. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java index b78251d1f75d3..dae91c7260056 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sinks.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.functions.UpdateOptionsInterface; +import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.policies.data.SinkStatus; @@ -200,7 +200,7 @@ public interface Sinks { * @throws PulsarAdminException * Unexpected error */ - void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptionsInterface updateOptions) + void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException; /** @@ -213,7 +213,7 @@ void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptionsInterface u * options for the update operations */ CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fileName, - UpdateOptionsInterface updateOptions); + UpdateOptions updateOptions); /** * Update the configuration for a sink. @@ -272,7 +272,7 @@ CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fileName, * @throws PulsarAdminException * Unexpected error */ - void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptionsInterface updateOptions) + void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions) throws PulsarAdminException; /** @@ -291,7 +291,7 @@ void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptionsInterf * options for the update operations */ CompletableFuture updateSinkWithUrlAsync(SinkConfig sinkConfig, String pkgUrl, - UpdateOptionsInterface updateOptions); + UpdateOptions updateOptions); /** * Delete an existing sink. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java index d7e52c3ed160e..822020b7fd403 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Sources.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.functions.UpdateOptionsInterface; +import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.policies.data.SourceStatus; @@ -200,7 +200,7 @@ public interface Sources { * @throws PulsarAdminException * Unexpected error */ - void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptionsInterface updateOptions) + void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException; /** @@ -213,7 +213,7 @@ void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptionsInter * options for the update operations */ CompletableFuture updateSourceAsync(SourceConfig sourceConfig, String fileName, - UpdateOptionsInterface updateOptions); + UpdateOptions updateOptions); /** * Update the configuration for a source. @@ -272,7 +272,7 @@ CompletableFuture updateSourceAsync(SourceConfig sourceConfig, String file * @throws PulsarAdminException * Unexpected error */ - void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions) + void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions) throws PulsarAdminException; /** @@ -291,7 +291,7 @@ void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptions * options for the update operations */ CompletableFuture updateSourceWithUrlAsync( - SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions); + SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions); /** * Delete an existing source. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java similarity index 95% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java index d397bb3047dc5..f1d946dc9c40a 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.functions; -public interface UpdateOptionsInterface { +public interface UpdateOptions { boolean isUpdateAuthData(); void setUpdateAuthData(boolean updateAuthData); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java index f4c88eb34f1d8..936611f481f04 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java @@ -46,8 +46,8 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.UpdateOptions; -import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; @@ -435,7 +435,7 @@ public CompletableFuture updateFunctionAsync(FunctionConfig functionConfig } @Override - public void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions) + public void updateFunction(FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException { try { updateFunctionAsync(functionConfig, fileName, updateOptions) @@ -453,7 +453,7 @@ public void updateFunction(FunctionConfig functionConfig, String fileName, Updat @Override public CompletableFuture updateFunctionAsync( - FunctionConfig functionConfig, String fileName, UpdateOptionsInterface updateOptions) { + FunctionConfig functionConfig, String fileName, UpdateOptions updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { RequestBuilder builder = @@ -463,7 +463,7 @@ public CompletableFuture updateFunctionAsync( .addBodyPart(new StringPart("functionConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(functionConfig), MediaType.APPLICATION_JSON)); - UpdateOptions options = (UpdateOptions) updateOptions; + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; if (options != null) { builder.addBodyPart(new StringPart("updateOptions", ObjectMapperFactory.getThreadLocal() .writeValueAsString(options), MediaType.APPLICATION_JSON)); @@ -499,7 +499,7 @@ public CompletableFuture updateFunctionAsync( @Override public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, - UpdateOptionsInterface updateOptions) + UpdateOptions updateOptions) throws PulsarAdminException { try { updateFunctionWithUrlAsync(functionConfig, pkgUrl, updateOptions) @@ -517,7 +517,7 @@ public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl, @Override public CompletableFuture updateFunctionWithUrlAsync( - FunctionConfig functionConfig, String pkgUrl, UpdateOptionsInterface updateOptions) { + FunctionConfig functionConfig, String pkgUrl, UpdateOptions updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { final FormDataMultiPart mp = new FormDataMultiPart(); @@ -526,7 +526,7 @@ public CompletableFuture updateFunctionWithUrlAsync( "functionConfig", ObjectMapperFactory.getThreadLocal().writeValueAsString(functionConfig), MediaType.APPLICATION_JSON_TYPE)); - UpdateOptions options = (UpdateOptions) updateOptions; + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java index 80b619646f1d0..9ab8bc1ab02f9 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java @@ -39,8 +39,8 @@ import org.apache.pulsar.client.admin.Sink; import org.apache.pulsar.client.admin.Sinks; import org.apache.pulsar.client.api.Authentication; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.UpdateOptions; -import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.policies.data.SinkStatus; @@ -337,7 +337,7 @@ public CompletableFuture deleteSinkAsync(String tenant, String namespace, } @Override - public void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptionsInterface updateOptions) + public void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException { try { updateSinkAsync(sinkConfig, fileName, updateOptions).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -353,7 +353,7 @@ public void updateSink(SinkConfig sinkConfig, String fileName, UpdateOptionsInte @Override public CompletableFuture updateSinkAsync( - SinkConfig sinkConfig, String fileName, UpdateOptionsInterface updateOptions) { + SinkConfig sinkConfig, String fileName, UpdateOptions updateOptions) { final CompletableFuture future = new CompletableFuture<>(); if (!validateSinkName(sinkConfig.getTenant(), sinkConfig.getNamespace(), sinkConfig.getName(), future)) { return future; @@ -365,7 +365,7 @@ public CompletableFuture updateSinkAsync( .addBodyPart(new StringPart("sinkConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(sinkConfig), MediaType.APPLICATION_JSON)); - UpdateOptions options = (UpdateOptions) updateOptions; + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; if (options != null) { builder.addBodyPart(new StringPart("updateOptions", ObjectMapperFactory.getThreadLocal() @@ -409,7 +409,7 @@ public CompletableFuture updateSinkAsync(SinkConfig sinkConfig, String fil } @Override - public void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptionsInterface updateOptions) + public void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions) throws PulsarAdminException { try { updateSinkWithUrlAsync(sinkConfig, pkgUrl, updateOptions).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -425,7 +425,7 @@ public void updateSinkWithUrl(SinkConfig sinkConfig, String pkgUrl, UpdateOption @Override public CompletableFuture updateSinkWithUrlAsync( - SinkConfig sinkConfig, String pkgUrl, UpdateOptionsInterface updateOptions) { + SinkConfig sinkConfig, String pkgUrl, UpdateOptions updateOptions) { final CompletableFuture future = new CompletableFuture<>(); if (!validateSinkName(sinkConfig.getTenant(), sinkConfig.getNamespace(), sinkConfig.getName(), future)) { return future; @@ -437,7 +437,7 @@ public CompletableFuture updateSinkWithUrlAsync( "sinkConfig", new Gson().toJson(sinkConfig), MediaType.APPLICATION_JSON_TYPE)); - UpdateOptions options = (UpdateOptions) updateOptions; + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java index b733f99cb3284..7088ba5821784 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java @@ -38,8 +38,8 @@ import org.apache.pulsar.client.admin.Source; import org.apache.pulsar.client.admin.Sources; import org.apache.pulsar.client.api.Authentication; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.UpdateOptions; -import org.apache.pulsar.common.functions.UpdateOptionsInterface; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.policies.data.SourceStatus; @@ -314,7 +314,7 @@ public CompletableFuture deleteSourceAsync(String tenant, String namespace } @Override - public void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptionsInterface updateOptions) + public void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions) throws PulsarAdminException { try { updateSourceAsync(sourceConfig, fileName, updateOptions).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -330,7 +330,7 @@ public void updateSource(SourceConfig sourceConfig, String fileName, UpdateOptio @Override public CompletableFuture updateSourceAsync( - SourceConfig sourceConfig, String fileName, UpdateOptionsInterface updateOptions) { + SourceConfig sourceConfig, String fileName, UpdateOptions updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { RequestBuilder builder = @@ -339,7 +339,7 @@ public CompletableFuture updateSourceAsync( .addBodyPart(new StringPart("sourceConfig", ObjectMapperFactory.getThreadLocal() .writeValueAsString(sourceConfig), MediaType.APPLICATION_JSON)); - UpdateOptions options = (UpdateOptions) updateOptions; + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; if (options != null) { builder.addBodyPart(new StringPart("updateOptions", ObjectMapperFactory.getThreadLocal().writeValueAsString(options), @@ -383,7 +383,7 @@ public CompletableFuture updateSourceAsync(SourceConfig sourceConfig, Stri } @Override - public void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions) + public void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions) throws PulsarAdminException { try { updateSourceWithUrlAsync(sourceConfig, pkgUrl, updateOptions) @@ -400,7 +400,7 @@ public void updateSourceWithUrl(SourceConfig sourceConfig, String pkgUrl, Update @Override public CompletableFuture updateSourceWithUrlAsync( - SourceConfig sourceConfig, String pkgUrl, UpdateOptionsInterface updateOptions) { + SourceConfig sourceConfig, String pkgUrl, UpdateOptions updateOptions) { final CompletableFuture future = new CompletableFuture<>(); try { final FormDataMultiPart mp = new FormDataMultiPart(); @@ -409,7 +409,7 @@ public CompletableFuture updateSourceWithUrlAsync( "sourceConfig", new Gson().toJson(sourceConfig), MediaType.APPLICATION_JSON_TYPE)); - UpdateOptions options = (UpdateOptions) updateOptions; + UpdateOptionsImpl options = (UpdateOptionsImpl) updateOptions; if (options != null) { mp.bodyPart(new FormDataBodyPart( "updateOptions", diff --git a/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java b/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java index 68b185447b182..61afa5e403f87 100644 --- a/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java +++ b/pulsar-client-admin/src/test/java/org/apache/pulsar/client/admin/internal/SinksImplTest.java @@ -23,13 +23,13 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; import static org.testng.Assert.fail; -import java.util.concurrent.CompletableFuture; + import java.util.concurrent.ExecutionException; import java.util.function.Consumer; import javax.ws.rs.client.WebTarget; import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.SinkConfig; import org.testng.annotations.Test; @@ -145,14 +145,14 @@ private void testBadConfig(String tenant, String namespace, String sinkname, } try { - instance.updateSinkAsync(sinkConfig, "file.nar", new UpdateOptions()).get(); + instance.updateSinkAsync(sinkConfig, "file.nar", new UpdateOptionsImpl()).get(); fail(); } catch (ExecutionException err) { handler.accept(err); } try { - instance.updateSinkWithUrlAsync(sinkConfig, "http://localhost", new UpdateOptions()).get(); + instance.updateSinkWithUrlAsync(sinkConfig, "http://localhost", new UpdateOptionsImpl()).get(); fail(); } catch (ExecutionException err) { handler.accept(err); diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java index e2cab00966b45..d7f68a4b790f0 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/CmdFunctionsTest.java @@ -51,9 +51,8 @@ import org.apache.pulsar.admin.cli.CmdFunctions.UpdateFunction; import org.apache.pulsar.client.admin.Functions; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.impl.conf.ClientConfigurationData; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.api.Function; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -520,7 +519,7 @@ public void testUpdateFunction() throws Exception { assertEquals(INPUT_TOPIC_NAME, updater.getInputs()); assertEquals(OUTPUT_TOPIC_NAME, updater.getOutput()); - verify(functions, times(1)).updateFunction(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunction(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -681,7 +680,7 @@ public void testUpdateFunctionWithCpu() throws Exception { // Disk/Ram should be default assertEquals(updater.getFunctionConfig().getResources().getRam(), Long.valueOf(1073741824L)); assertEquals(updater.getFunctionConfig().getResources().getDisk(), Long.valueOf(10737418240L)); - verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -707,7 +706,7 @@ public void testUpdateFunctionWithRam() throws Exception { // cpu/disk should be default assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0, 0); assertEquals(updater.getFunctionConfig().getResources().getDisk(), Long.valueOf(10737418240L)); - verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -733,7 +732,7 @@ public void testUpdateFunctionWithDisk() throws Exception { // cpu/Ram should be default assertEquals(updater.getFunctionConfig().getResources().getRam(), Long.valueOf(1073741824L)); assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0, 0); - verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptions())); + verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(new UpdateOptionsImpl())); } @Test @@ -760,7 +759,7 @@ public void testUpdateAuthData() throws Exception { // cpu/Ram should be default assertEquals(updater.getFunctionConfig().getResources().getRam(), Long.valueOf(1073741824L)); assertEquals(updater.getFunctionConfig().getResources().getCpu(), 1.0, 0); - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(true); verify(functions, times(1)).updateFunctionWithUrl(any(FunctionConfig.class), anyString(), eq(updateOptions)); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java index 7548ad1eaeb6a..95e30022b267b 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java @@ -56,7 +56,7 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.ProducerConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.functions.WindowConfig; import org.apache.pulsar.common.functions.FunctionState; @@ -858,7 +858,7 @@ protected void validateFunctionConfigs(FunctionConfig functionConfig) { @Override void runCmd() throws Exception { - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(updateAuthData); if (Utils.isFunctionPackageUrlSupported(functionConfig.getJar())) { getAdmin().functions().updateFunctionWithUrl(functionConfig, functionConfig.getJar(), updateOptions); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java index 4853b8508e98b..16e1664497f36 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java @@ -51,7 +51,7 @@ import org.apache.pulsar.common.functions.ConsumerConfig; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.functions.Utils; @@ -231,7 +231,7 @@ protected class UpdateSink extends SinkDetailsCommand { @Override void runCmd() throws Exception { - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(updateAuthData); if (Utils.isFunctionPackageUrlSupported(archive)) { getAdmin().sinks().updateSinkWithUrl(sinkConfig, sinkConfig.getArchive(), updateOptions); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java index 9f318c220de56..3ab6cccb60b0c 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java @@ -52,7 +52,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.functions.ProducerConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.BatchSourceConfig; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.functions.FunctionConfig; @@ -235,7 +235,7 @@ protected class UpdateSource extends SourceDetailsCommand { @Override void runCmd() throws Exception { - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(updateAuthData); if (Utils.isFunctionPackageUrlSupported(sourceConfig.getArchive())) { getAdmin().sources().updateSourceWithUrl(sourceConfig, sourceConfig.getArchive(), updateOptions); diff --git a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java index 16e6550ab555a..1f4819d5ac832 100644 --- a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java +++ b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSinks.java @@ -44,7 +44,7 @@ import org.apache.pulsar.client.admin.Sinks; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.powermock.api.mockito.PowerMockito; @@ -712,7 +712,7 @@ public void testUpdateSink() throws Exception { .namespace(DEFAULT_NAMESPACE) .name(updateSink.name) .archive(updateSink.archive) - .build()), eq(updateSink.archive), eq(new UpdateOptions())); + .build()), eq(updateSink.archive), eq(new UpdateOptionsImpl())); updateSink.archive = null; @@ -725,7 +725,7 @@ public void testUpdateSink() throws Exception { updateSink.runCmd(); - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(true); verify(sink).updateSink(eq(SinkConfig.builder() diff --git a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java index b2137bd895d81..23791ae2918a1 100644 --- a/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java +++ b/pulsar-client-tools/src/test/java/org/apache/pulsar/admin/cli/TestCmdSources.java @@ -33,15 +33,13 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.HashMap; -import java.util.Map; import org.apache.pulsar.admin.cli.utils.CmdUtils; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.Sources; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.Resources; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.BatchSourceConfig; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.util.ClassLoaderUtils; @@ -666,7 +664,7 @@ public void testUpdateSource() throws Exception { .namespace(DEFAULT_NAMESPACE) .name(updateSource.name) .archive(updateSource.archive) - .build()), eq(updateSource.archive), eq(new UpdateOptions())); + .build()), eq(updateSource.archive), eq(new UpdateOptionsImpl())); updateSource.archive = null; @@ -677,7 +675,7 @@ public void testUpdateSource() throws Exception { updateSource.updateAuthData = true; - UpdateOptions updateOptions = new UpdateOptions(); + UpdateOptionsImpl updateOptions = new UpdateOptionsImpl(); updateOptions.setUpdateAuthData(true); updateSource.runCmd(); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsImpl.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsImpl.java index e0dec9cb1ffe5..bc58321ee3165 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptions.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/functions/UpdateOptionsImpl.java @@ -29,7 +29,7 @@ @Data @NoArgsConstructor @ApiModel(value = "UpdateOptions", description = "Options while updating the sink") -public class UpdateOptions implements UpdateOptionsInterface { +public class UpdateOptionsImpl implements UpdateOptions { @ApiModelProperty( value = "Whether or not to update the auth data", name = "update-auth-data") diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java index 823605213ac46..c65695422079d 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java @@ -47,7 +47,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.policies.data.ExceptionInformation; @@ -255,7 +255,7 @@ public void updateFunction(final String tenant, final FunctionConfig functionConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions) { + UpdateOptionsImpl updateOptions) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java index 92d52f0f8cfc2..d0d2ed3ad6c15 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SinksImpl.java @@ -43,7 +43,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; @@ -252,7 +252,7 @@ public void updateSink(final String tenant, final SinkConfig sinkConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions) { + UpdateOptionsImpl updateOptions) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java index 147f2f793f590..47c379e8c9088 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/SourcesImpl.java @@ -43,7 +43,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; @@ -252,7 +252,7 @@ public void updateSource(final String tenant, final SourceConfig sourceConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions) { + UpdateOptionsImpl updateOptions) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java index c0ba549764587..72e711d316e26 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java @@ -25,7 +25,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStats; @@ -87,7 +87,7 @@ public void updateFunction(final @PathParam("tenant") String tenant, final @FormDataParam("data") FormDataContentDisposition fileDetail, final @FormDataParam("url") String functionPkgUrl, final @FormDataParam("functionConfig") FunctionConfig functionConfig, - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { functions().updateFunction(tenant, namespace, functionName, uploadedInputStream, fileDetail, functionPkgUrl, functionConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java index 1b3811e1379b1..4bff94476c51d 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SinksApiV3Resource.java @@ -24,7 +24,7 @@ import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.extern.slf4j.Slf4j; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; @@ -84,7 +84,7 @@ public void updateSink(final @PathParam("tenant") String tenant, final @FormDataParam("data") FormDataContentDisposition fileDetail, final @FormDataParam("url") String functionPkgUrl, final @FormDataParam("sinkConfig") SinkConfig sinkConfig, - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sinks().updateSink(tenant, namespace, sinkName, uploadedInputStream, fileDetail, functionPkgUrl, sinkConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java index 29fed9a4af3c9..16901ee770513 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/SourcesApiV3Resource.java @@ -24,7 +24,7 @@ import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.extern.slf4j.Slf4j; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; @@ -85,7 +85,7 @@ public void updateSource(final @PathParam("tenant") String tenant, final @FormDataParam("data") FormDataContentDisposition fileDetail, final @FormDataParam("url") String functionPkgUrl, final @FormDataParam("sourceConfig") SourceConfig sourceConfig, - final @FormDataParam("updateOptions") UpdateOptions updateOptions) { + final @FormDataParam("updateOptions") UpdateOptionsImpl updateOptions) { sources().updateSource(tenant, namespace, sourceName, uploadedInputStream, fileDetail, functionPkgUrl, sourceConfig, clientAppId(), clientAuthData(), updateOptions); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java index aa874ab205f1d..7a155d51fe2f3 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Functions.java @@ -23,7 +23,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData; import org.apache.pulsar.functions.worker.WorkerService; @@ -53,7 +53,7 @@ void updateFunction(final String tenant, final FunctionConfig functionConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions); + UpdateOptionsImpl updateOptions); void updateFunctionOnWorkerLeader(final String tenant, final String namespace, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java index ae501299406ce..fc6bdf7bf6d32 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sinks.java @@ -23,7 +23,7 @@ import java.util.List; import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; @@ -56,7 +56,7 @@ void updateSink(final String tenant, final SinkConfig sinkConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions); + UpdateOptionsImpl updateOptions); SinkInstanceStatusData getSinkInstanceStatus(final String tenant, final String namespace, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java index d66f2540e99e9..cc372490f4bb2 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Sources.java @@ -23,7 +23,7 @@ import java.util.List; import org.apache.pulsar.broker.authentication.AuthenticationDataHttps; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; -import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConfigFieldDefinition; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; @@ -56,7 +56,7 @@ void updateSource(final String tenant, final SourceConfig sourceConfig, final String clientRole, AuthenticationDataHttps clientAuthenticationDataHttps, - UpdateOptions updateOptions); + UpdateOptionsImpl updateOptions); SourceStatus getSourceStatus(final String tenant, From c58d93248cfd84e949f78a2b766252152c7bf45d Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:33:10 +0800 Subject: [PATCH 42/51] AutoFailoverPolicyData --- .../org/apache/pulsar/broker/admin/AdminApiTest.java | 12 +++++------- .../apache/pulsar/broker/admin/AdminApiTest2.java | 7 +++---- .../org/apache/pulsar/broker/admin/AdminTest.java | 4 ++-- .../pulsar/broker/admin/v1/V1_AdminApiTest.java | 9 +++------ .../pulsar/broker/loadbalance/LoadBalancerTest.java | 8 ++++---- .../loadbalance/SimpleLoadManagerImplTest.java | 4 ++-- ...ataInterface.java => AutoFailoverPolicyData.java} | 2 +- .../data/NamespaceIsolationDataInterface.java | 4 ++-- .../policies/impl/AutoFailoverPolicyFactory.java | 4 ++-- .../common/policies/impl/MinAvailablePolicy.java | 4 ++-- .../admin/cli/CmdNamespaceIsolationPolicy.java | 4 ++-- ...licyData.java => AutoFailoverPolicyDataImpl.java} | 6 +++--- .../common/policies/data/NamespaceIsolationData.java | 6 +++--- .../pulsar/common/util/ObjectMapperFactory.java | 4 ++-- .../policies/data/AutoFailoverPolicyDataTest.java | 4 ++-- .../policies/data/NamespaceIsolationDataTest.java | 4 ++-- .../policies/impl/AutoFailoverPolicyFactoryTest.java | 7 +++---- .../impl/NamespaceIsolationPoliciesTest.java | 4 ++-- .../impl/NamespaceIsolationPolicyImplTest.java | 4 ++-- 19 files changed, 47 insertions(+), 54 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{AutoFailoverPolicyDataInterface.java => AutoFailoverPolicyData.java} (95%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{AutoFailoverPolicyData.java => AutoFailoverPolicyDataImpl.java} (93%) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 54f1186a2bec7..3b17f265ca2f9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -36,9 +36,7 @@ import com.google.common.collect.Range; import com.google.common.collect.Sets; import com.google.common.hash.Hashing; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; + import java.lang.reflect.Field; import java.net.URL; import java.util.ArrayList; @@ -105,7 +103,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType; @@ -287,7 +285,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { nsPolicyData1.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData1.secondary = new ArrayList(); nsPolicyData1.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); @@ -302,7 +300,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { nsPolicyData2.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData2.secondary = new ArrayList(); nsPolicyData2.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData2.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData2.auto_failover_policy.parameters = new HashMap(); nsPolicyData2.auto_failover_policy.parameters.put("min_limit", "1"); @@ -426,7 +424,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { nsRegexPolicy.namespaces.add("other/use/other.*"); nsRegexPolicy.primary = new ArrayList(); nsRegexPolicy.primary.add("prod1-broker[45-46].messaging.use.example.com"); - nsRegexPolicy.auto_failover_policy = new AutoFailoverPolicyData(); + nsRegexPolicy.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsRegexPolicy.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsRegexPolicy.auto_failover_policy.parameters = new HashMap(); nsRegexPolicy.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 9a86965b88910..8884e09d36ca9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -41,7 +41,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.UUID; @@ -79,7 +78,7 @@ 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.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; @@ -977,7 +976,7 @@ public void brokerNamespaceIsolationPolicies() throws Exception { nsPolicyData1.primary.add(brokerName + ":[0-9]*"); nsPolicyData1.secondary = new ArrayList<>(); nsPolicyData1.secondary.add(brokerName + ".*"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); @@ -1025,7 +1024,7 @@ public void brokerNamespaceIsolationPoliciesUpdateOnTime() throws Exception { nsPolicyData1.namespaces.add(ns1Name); nsPolicyData1.primary = new ArrayList<>(); nsPolicyData1.primary.add(brokerName + ".*"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java index 8c3fb37b9eca9..2f55ee26eef58 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java @@ -77,7 +77,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.BrokerInfo; @@ -261,7 +261,7 @@ public void clusters() throws Exception { policyData.primary = new ArrayList(); policyData.primary.add("localhost" + ":" + pulsar.getListenPortHTTP()); policyData.secondary = new ArrayList(); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 0700710939672..341a6bf3dead3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -47,8 +47,6 @@ import javax.ws.rs.client.InvocationCallback; import javax.ws.rs.client.WebTarget; -import org.apache.pulsar.broker.ConfigHelper; -import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; @@ -82,13 +80,12 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType; import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @@ -258,7 +255,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { nsPolicyData1.secondary = new ArrayList<>(); nsPolicyData1.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData1.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData1.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData1.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData1.auto_failover_policy.parameters.put("min_limit", "1"); @@ -273,7 +270,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { nsPolicyData2.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData2.secondary = new ArrayList<>(); nsPolicyData2.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData2.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData2.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData2.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData2.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java index 073694d4be610..8acddb0cf671a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java @@ -51,7 +51,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.internal.NamespacesImpl; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @@ -716,7 +716,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { policyData.primary.add(pulsarServices[i].getAdvertisedAddress()); } policyData.secondary = new ArrayList(); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap<>(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); @@ -733,7 +733,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { for (int i = 1; i < BROKER_COUNT; i++) { policyData.secondary.add(pulsarServices[i].getAdvertisedAddress()); } - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); @@ -750,7 +750,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { for (int i = 1; i < BROKER_COUNT; i++) { policyData.secondary.add(pulsarServices[i].getAdvertisedAddress()); } - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java index 4307955fa5dda..f77c13afab014 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java @@ -67,7 +67,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.ResourceQuota; @@ -181,7 +181,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { policyData.primary.add(pulsar1.getAdvertisedAddress() + "*"); policyData.secondary = new ArrayList<>(); policyData.secondary.add("prod2-broker([78]).messaging.usw.example.co.*"); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap<>(); policyData.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java similarity index 95% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java index 101b178737430..1c19807dcc6e9 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java @@ -20,7 +20,7 @@ import java.util.Map; -public interface AutoFailoverPolicyDataInterface { +public interface AutoFailoverPolicyData { AutoFailoverPolicyType getPolicy_type(); Map getParameters(); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java index 5d5ad8b489f78..bfa558a640104 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java @@ -28,7 +28,7 @@ public interface NamespaceIsolationDataInterface { List getSecondary(); - AutoFailoverPolicyDataInterface getAuto_failover_policy(); + AutoFailoverPolicyData getAuto_failover_policy(); void setNamespaces(List namespaces); @@ -36,6 +36,6 @@ public interface NamespaceIsolationDataInterface { void setSecondary(List secondary); - void setAuto_failover_policy(AutoFailoverPolicyDataInterface autoFailoverPolicyData); + void setAuto_failover_policy(AutoFailoverPolicyData autoFailoverPolicyData); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java index 6da3f8349222d..6fa45aa20505d 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactory.java @@ -19,7 +19,7 @@ package org.apache.pulsar.common.policies.impl; import org.apache.pulsar.common.policies.AutoFailoverPolicy; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataInterface; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; /** @@ -27,7 +27,7 @@ */ public class AutoFailoverPolicyFactory { - public static AutoFailoverPolicy create(AutoFailoverPolicyDataInterface policyData) { + public static AutoFailoverPolicy create(AutoFailoverPolicyData policyData) { // TODO: Add more policy types when needed if (!AutoFailoverPolicyType.min_available.equals(policyData.getPolicy_type())) { // right now, only support one type of policy: MinAvailablePolicy diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java index d1814f647fda8..99200ffd434b5 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/impl/MinAvailablePolicy.java @@ -21,7 +21,7 @@ import java.util.Objects; import java.util.SortedSet; import org.apache.pulsar.common.policies.AutoFailoverPolicy; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataInterface; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; @@ -43,7 +43,7 @@ public class MinAvailablePolicy extends AutoFailoverPolicy { this.usage_threshold = usageThreshold; } - public MinAvailablePolicy(AutoFailoverPolicyDataInterface policyData) { + public MinAvailablePolicy(AutoFailoverPolicyData policyData) { if (!policyData.getPolicy_type().equals(AutoFailoverPolicyType.min_available)) { throw new IllegalArgumentException(); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java index 629b20ed5330f..c3676ffb7cce3 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java @@ -26,7 +26,7 @@ import org.apache.pulsar.admin.cli.utils.NameValueParameterSplitter; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; @@ -195,7 +195,7 @@ private NamespaceIsolationData createNamespaceIsolationData(List namespa nsIsolationData.secondary = secondary; } - nsIsolationData.auto_failover_policy = new AutoFailoverPolicyData(); + nsIsolationData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsIsolationData.auto_failover_policy.policy_type = AutoFailoverPolicyType .fromString(autoFailoverPolicyTypeName); nsIsolationData.auto_failover_policy.parameters = autoFailoverPolicyParams; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataImpl.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataImpl.java index fea6b04e43460..ce17dac25e7c4 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataImpl.java @@ -34,7 +34,7 @@ description = "The auto failover policy configuration data" ) @Data -public class AutoFailoverPolicyData implements AutoFailoverPolicyDataInterface { +public class AutoFailoverPolicyDataImpl implements AutoFailoverPolicyData { @ApiModelProperty( name = "policy_type", value = "The auto failover policy type", @@ -66,8 +66,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof AutoFailoverPolicyData) { - AutoFailoverPolicyData other = (AutoFailoverPolicyData) obj; + if (obj instanceof AutoFailoverPolicyDataImpl) { + AutoFailoverPolicyDataImpl other = (AutoFailoverPolicyDataImpl) obj; return Objects.equal(policy_type, other.policy_type) && Objects.equal(parameters, other.parameters); } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java index 27032b84de117..f6adc4f191f20 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java @@ -67,7 +67,7 @@ public class NamespaceIsolationData implements NamespaceIsolationDataInterface { + "}" ) @SuppressWarnings("checkstyle:MemberName") - public AutoFailoverPolicyData auto_failover_policy; + public AutoFailoverPolicyDataImpl auto_failover_policy; @Override public int hashCode() { @@ -115,7 +115,7 @@ public String toString() { } @Override - public void setAuto_failover_policy(AutoFailoverPolicyDataInterface autoFailoverPolicyData) { - this.auto_failover_policy = (AutoFailoverPolicyData) autoFailoverPolicyData; + public void setAuto_failover_policy(AutoFailoverPolicyData autoFailoverPolicyData) { + this.auto_failover_policy = (AutoFailoverPolicyDataImpl) autoFailoverPolicyData; } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 420f4d6b1b814..b782a0e6fd662 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -30,8 +30,8 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.JsonIgnorePropertiesMixIn; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataInterface; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; @@ -111,7 +111,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { // we use customized deserializer to replace jackson annotations in some POJOs SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); - resolver.addMapping(AutoFailoverPolicyDataInterface.class, AutoFailoverPolicyData.class); + resolver.addMapping(AutoFailoverPolicyData.class, AutoFailoverPolicyDataImpl.class); resolver.addMapping(BrokerNamespaceIsolationDataInterface.class, BrokerNamespaceIsolationData.class); resolver.addMapping(ClusterDataInterface.class, ClusterData.class); resolver.addMapping(FailureDomainInterface.class, FailureDomain.class); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java index 91d54e315e5da..7842a38ec17dc 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/AutoFailoverPolicyDataTest.java @@ -30,8 +30,8 @@ public class AutoFailoverPolicyDataTest { @Test public void testAutoFailoverPolicyData() { - AutoFailoverPolicyData policy0 = new AutoFailoverPolicyData(); - AutoFailoverPolicyData policy1 = new AutoFailoverPolicyData(); + AutoFailoverPolicyDataImpl policy0 = new AutoFailoverPolicyDataImpl(); + AutoFailoverPolicyDataImpl policy1 = new AutoFailoverPolicyDataImpl(); policy0.policy_type = AutoFailoverPolicyType.min_available; policy0.parameters = new HashMap<>(); policy0.parameters.put("min_limit", "3"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java index 8820d6dec878e..5c9dbb535f992 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java @@ -59,8 +59,8 @@ public void testNamespaceIsolationData() { // pass } - AutoFailoverPolicyData policy0 = new AutoFailoverPolicyData(); - AutoFailoverPolicyData policy1 = new AutoFailoverPolicyData(); + AutoFailoverPolicyDataImpl policy0 = new AutoFailoverPolicyDataImpl(); + AutoFailoverPolicyDataImpl policy1 = new AutoFailoverPolicyDataImpl(); policy0.policy_type = AutoFailoverPolicyType.min_available; policy0.parameters = new HashMap<>(); policy0.parameters.put("min_limit", "3"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java index 5f5297b7af9f6..b08dbc3d01177 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/AutoFailoverPolicyFactoryTest.java @@ -20,9 +20,8 @@ import java.util.HashMap; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; -import org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactory; import org.testng.Assert; import org.testng.annotations.Test; @@ -31,13 +30,13 @@ public class AutoFailoverPolicyFactoryTest { @Test public void testAutoFailoverPolicyFactory() { try { - AutoFailoverPolicyFactory.create(new AutoFailoverPolicyData()); + AutoFailoverPolicyFactory.create(new AutoFailoverPolicyDataImpl()); Assert.fail(""); } catch (IllegalArgumentException e) { // Pass } try { - AutoFailoverPolicyData afopd = new AutoFailoverPolicyData(); + AutoFailoverPolicyDataImpl afopd = new AutoFailoverPolicyDataImpl(); afopd.policy_type = AutoFailoverPolicyType.min_available; afopd.parameters = new HashMap<>(); afopd.parameters.put("min_limit", "3"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java index 6d2864d1a7151..f9c767373e2fd 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java @@ -37,7 +37,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @@ -74,7 +74,7 @@ public void testJsonSerialization() throws Exception { nsPolicyData.primary.add("prod1-broker[4-6].messaging.use.example.com"); nsPolicyData.secondary = new ArrayList<>(); nsPolicyData.secondary.add("prod1-broker.*.messaging.use.example.com"); - nsPolicyData.auto_failover_policy = new AutoFailoverPolicyData(); + nsPolicyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); nsPolicyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; nsPolicyData.auto_failover_policy.parameters = new HashMap<>(); nsPolicyData.auto_failover_policy.parameters.put("min_limit", "1"); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java index b27eaa5ff75d4..0700d0717a1e8 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java @@ -34,7 +34,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; +import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @@ -61,7 +61,7 @@ public void testConstructor() throws Exception { policyData.primary.add("prod1-broker[1-3].messaging.use.example.com"); policyData.secondary = new ArrayList<>(); policyData.secondary.add("prod1-broker.*.use.example.com"); - policyData.auto_failover_policy = new AutoFailoverPolicyData(); + policyData.auto_failover_policy = new AutoFailoverPolicyDataImpl(); policyData.auto_failover_policy.policy_type = AutoFailoverPolicyType.min_available; policyData.auto_failover_policy.parameters = new HashMap<>(); policyData.auto_failover_policy.parameters.put("min_limit", "3"); From f18620f783f45273048a008b8659213922902ec8 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:34:07 +0800 Subject: [PATCH 43/51] BrokerNamespaceIsolationData --- .../broker/admin/impl/ClustersBase.java | 14 +++++------ .../pulsar/broker/admin/AdminApiTest2.java | 8 +++---- .../broker/admin/v1/V1_AdminApiTest.java | 4 ++-- .../apache/pulsar/client/admin/Clusters.java | 10 ++++---- ...java => BrokerNamespaceIsolationData.java} | 2 +- .../client/admin/internal/ClustersImpl.java | 24 +++++++++---------- .../cli/CmdNamespaceIsolationPolicy.java | 10 ++++---- ... => BrokerNamespaceIsolationDataImpl.java} | 6 ++--- .../common/util/ObjectMapperFactory.java | 4 ++-- 9 files changed, 41 insertions(+), 41 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{BrokerNamespaceIsolationDataInterface.java => BrokerNamespaceIsolationData.java} (95%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{BrokerNamespaceIsolationData.java => BrokerNamespaceIsolationDataImpl.java} (90%) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java index ce0f2211918a8..01c641851ad37 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java @@ -56,7 +56,7 @@ import org.apache.pulsar.client.admin.Namespaces; import org.apache.pulsar.common.naming.Constants; import org.apache.pulsar.common.naming.NamedEntity; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @@ -520,7 +520,7 @@ public NamespaceIsolationData getNamespaceIsolationPolicy( @Path("/{cluster}/namespaceIsolationPolicies/brokers") @ApiOperation( value = "Get list of brokers with namespace-isolation policies attached to them.", - response = BrokerNamespaceIsolationData.class, + response = BrokerNamespaceIsolationDataImpl.class, responseContainer = "set", notes = "This operation requires Pulsar superuser privileges." ) @@ -530,7 +530,7 @@ public NamespaceIsolationData getNamespaceIsolationPolicy( @ApiResponse(code = 412, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public List getBrokersWithNamespaceIsolationPolicy( + public List getBrokersWithNamespaceIsolationPolicy( @ApiParam( value = "The cluster name", required = true @@ -560,7 +560,7 @@ public List getBrokersWithNamespaceIsolationPolicy throw new RestException(e); } return availableBrokers.stream().map(broker -> { - BrokerNamespaceIsolationData brokerIsolationData = new BrokerNamespaceIsolationData(); + BrokerNamespaceIsolationDataImpl brokerIsolationData = new BrokerNamespaceIsolationDataImpl(); brokerIsolationData.brokerName = broker; if (nsPolicies != null) { nsPolicies.forEach((name, policyData) -> { @@ -584,7 +584,7 @@ public List getBrokersWithNamespaceIsolationPolicy @Path("/{cluster}/namespaceIsolationPolicies/brokers/{broker}") @ApiOperation( value = "Get a broker with namespace-isolation policies attached to it.", - response = BrokerNamespaceIsolationData.class, + response = BrokerNamespaceIsolationDataImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { @@ -593,7 +593,7 @@ public List getBrokersWithNamespaceIsolationPolicy @ApiResponse(code = 412, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy( + public BrokerNamespaceIsolationDataImpl getBrokerWithNamespaceIsolationPolicy( @ApiParam( value = "The cluster name", required = true @@ -621,7 +621,7 @@ public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy( log.error("[{}] Failed to get namespace isolation-policies {}", clientAppId(), cluster, e); throw new RestException(e); } - BrokerNamespaceIsolationData brokerIsolationData = new BrokerNamespaceIsolationData(); + BrokerNamespaceIsolationDataImpl brokerIsolationData = new BrokerNamespaceIsolationDataImpl(); brokerIsolationData.brokerName = broker; if (nsPolicies != null) { nsPolicies.forEach((name, policyData) -> { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 8884e09d36ca9..57ad221f54cfc 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -80,8 +80,8 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.FailureDomain; @@ -983,20 +983,20 @@ public void brokerNamespaceIsolationPolicies() throws Exception { nsPolicyData1.auto_failover_policy.parameters.put("usage_threshold", "100"); admin.clusters().createNamespaceIsolationPolicy(cluster, policyName1, nsPolicyData1); - List brokerIsolationDataList = admin.clusters() + List brokerIsolationDataList = admin.clusters() .getBrokersWithNamespaceIsolationPolicy(cluster); assertEquals(brokerIsolationDataList.size(), 1); assertEquals(brokerIsolationDataList.get(0).getBrokerName(), brokerAddress); assertEquals(brokerIsolationDataList.get(0).getNamespaceRegex().size(), 1); assertEquals(brokerIsolationDataList.get(0).getNamespaceRegex().get(0), namespaceRegex); - BrokerNamespaceIsolationData brokerIsolationData = (BrokerNamespaceIsolationData) admin.clusters() + BrokerNamespaceIsolationDataImpl brokerIsolationData = (BrokerNamespaceIsolationDataImpl) admin.clusters() .getBrokerWithNamespaceIsolationPolicy(cluster, brokerAddress); assertEquals(brokerIsolationData.brokerName, brokerAddress); assertEquals(brokerIsolationData.namespaceRegex.size(), 1); assertEquals(brokerIsolationData.namespaceRegex.get(0), namespaceRegex); - BrokerNamespaceIsolationData isolationData = (BrokerNamespaceIsolationData) admin.clusters() + BrokerNamespaceIsolationDataImpl isolationData = (BrokerNamespaceIsolationDataImpl) admin.clusters() .getBrokerWithNamespaceIsolationPolicy(cluster, "invalid-broker"); assertFalse(isolationData.isPrimary); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 341a6bf3dead3..49bbe6387997a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -86,7 +86,7 @@ import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType; import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @@ -283,7 +283,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName2), nsPolicyData2); // verify local broker get matched. - List isoList = admin.clusters().getBrokersWithNamespaceIsolationPolicy("use"); + List isoList = admin.clusters().getBrokersWithNamespaceIsolationPolicy("use"); assertEquals(isoList.size(), 1); assertTrue(isoList.get(0).isPrimary()); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java index 5c2e940f7b979..f50fe30323379 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java @@ -27,7 +27,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @@ -368,7 +368,7 @@ CompletableFuture createNamespaceIsolationPolicyAsync( * @return * @throws PulsarAdminException */ - List getBrokersWithNamespaceIsolationPolicy(String cluster) + List getBrokersWithNamespaceIsolationPolicy(String cluster) throws PulsarAdminException; /** @@ -377,7 +377,7 @@ List getBrokersWithNamespaceIsolationPoli * @param cluster * @return */ - CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( + CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( String cluster); /** @@ -388,7 +388,7 @@ CompletableFuture> getBrokersWithNam * @return * @throws PulsarAdminException */ - BrokerNamespaceIsolationDataInterface getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) + BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) throws PulsarAdminException; /** @@ -398,7 +398,7 @@ BrokerNamespaceIsolationDataInterface getBrokerWithNamespaceIsolationPolicy(Stri * @param broker * @return */ - CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( + CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( String cluster, String broker); /** diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java similarity index 95% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java index 4ca15c9b4fa0e..3ea8e42a53b1b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java @@ -20,7 +20,7 @@ import java.util.List; -public interface BrokerNamespaceIsolationDataInterface { +public interface BrokerNamespaceIsolationData { String getBrokerName(); String getPolicyName(); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index 86ca2136cf507..1aa2ffbd04442 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -35,8 +35,8 @@ import org.apache.pulsar.client.admin.Clusters; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.Authentication; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; @@ -271,7 +271,7 @@ public void failed(Throwable throwable) { } @Override - public List getBrokersWithNamespaceIsolationPolicy(String cluster) + public List getBrokersWithNamespaceIsolationPolicy(String cluster) throws PulsarAdminException { try { return getBrokersWithNamespaceIsolationPolicyAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -286,15 +286,15 @@ public List getBrokersWithNamespaceIsolat } @Override - public CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( + public CompletableFuture> getBrokersWithNamespaceIsolationPolicyAsync( String cluster) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path("brokers"); - final CompletableFuture> future = new CompletableFuture<>(); + final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback>() { + new InvocationCallback>() { @Override - public void completed(List brokerNamespaceIsolationData) { - List data = + public void completed(List brokerNamespaceIsolationData) { + List data = new ArrayList<>(brokerNamespaceIsolationData); future.complete(data); } @@ -308,7 +308,7 @@ public void failed(Throwable throwable) { } @Override - public BrokerNamespaceIsolationDataInterface getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) + public BrokerNamespaceIsolationData getBrokerWithNamespaceIsolationPolicy(String cluster, String broker) throws PulsarAdminException { try { return getBrokerWithNamespaceIsolationPolicyAsync(cluster, broker) @@ -324,14 +324,14 @@ public BrokerNamespaceIsolationDataInterface getBrokerWithNamespaceIsolationPoli } @Override - public CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( + public CompletableFuture getBrokerWithNamespaceIsolationPolicyAsync( String cluster, String broker) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path("brokers").path(broker); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(BrokerNamespaceIsolationData brokerNamespaceIsolationData) { + public void completed(BrokerNamespaceIsolationDataImpl brokerNamespaceIsolationData) { future.complete(brokerNamespaceIsolationData); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java index c3676ffb7cce3..6e4b71b5fea37 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java @@ -28,8 +28,8 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import com.beust.jcommander.Parameter; @@ -95,10 +95,10 @@ private class GetAllBrokersWithPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - List brokers = getAdmin().clusters() + List brokers = getAdmin().clusters() .getBrokersWithNamespaceIsolationPolicy(clusterName); - List data = new ArrayList<>(); - brokers.forEach(v -> data.add((BrokerNamespaceIsolationData) v)); + List data = new ArrayList<>(); + brokers.forEach(v -> data.add((BrokerNamespaceIsolationDataImpl) v)); print(data); } } @@ -114,7 +114,7 @@ private class GetBrokerWithPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - BrokerNamespaceIsolationData brokerData = (BrokerNamespaceIsolationData) getAdmin().clusters() + BrokerNamespaceIsolationDataImpl brokerData = (BrokerNamespaceIsolationDataImpl) getAdmin().clusters() .getBrokerWithNamespaceIsolationPolicy(clusterName, broker); print(brokerData); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataImpl.java similarity index 90% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataImpl.java index 7b0616c054cd3..4cf23b4c4da9c 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationDataImpl.java @@ -32,7 +32,7 @@ description = "The namespace isolation data for a given broker" ) @Data -public class BrokerNamespaceIsolationData implements BrokerNamespaceIsolationDataInterface { +public class BrokerNamespaceIsolationDataImpl implements BrokerNamespaceIsolationData { @ApiModelProperty( name = "brokerName", @@ -65,8 +65,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof BrokerNamespaceIsolationData) { - BrokerNamespaceIsolationData other = (BrokerNamespaceIsolationData) obj; + if (obj instanceof BrokerNamespaceIsolationDataImpl) { + BrokerNamespaceIsolationDataImpl other = (BrokerNamespaceIsolationDataImpl) obj; return Objects.equal(brokerName, other.brokerName) && Objects.equal(namespaceRegex, other.namespaceRegex); } return false; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index b782a0e6fd662..0242804038011 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -34,8 +34,8 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; @@ -112,7 +112,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { // we use customized deserializer to replace jackson annotations in some POJOs SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(AutoFailoverPolicyData.class, AutoFailoverPolicyDataImpl.class); - resolver.addMapping(BrokerNamespaceIsolationDataInterface.class, BrokerNamespaceIsolationData.class); + resolver.addMapping(BrokerNamespaceIsolationData.class, BrokerNamespaceIsolationDataImpl.class); resolver.addMapping(ClusterDataInterface.class, ClusterData.class); resolver.addMapping(FailureDomainInterface.class, FailureDomain.class); resolver.addMapping(NamespaceIsolationDataInterface.class, NamespaceIsolationData.class); From 2da5cf34680fb294ade315897674a00ef21367cc Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:35:09 +0800 Subject: [PATCH 44/51] ClusterData --- .../client/TlsProducerConsumerBase.java | 4 +- .../cache/ConfigurationCacheService.java | 13 ++--- .../ConfigurationMetadataCacheService.java | 4 +- .../broker/resources/ClusterResources.java | 6 +- .../pulsar/PulsarClusterMetadataSetup.java | 6 +- .../org/apache/pulsar/PulsarStandalone.java | 12 ++-- .../apache/pulsar/broker/PulsarService.java | 6 +- .../broker/admin/impl/ClustersBase.java | 14 ++--- .../broker/admin/impl/NamespacesBase.java | 12 ++-- .../broker/namespace/NamespaceService.java | 10 ++-- .../pulsar/broker/service/BrokerService.java | 6 +- .../pulsar/broker/web/PulsarWebResource.java | 26 ++++----- .../pulsar/broker/SLAMonitoringTest.java | 4 +- .../broker/admin/AdminApiDelayedDelivery.java | 4 +- .../admin/AdminApiGetLastMessageIdTest.java | 4 +- .../admin/AdminApiMaxUnackedMessages.java | 4 +- .../broker/admin/AdminApiOffloadTest.java | 4 +- .../admin/AdminApiSchemaAutoUpdateTest.java | 4 +- .../broker/admin/AdminApiSchemaTest.java | 4 +- .../AdminApiSchemaValidationEnforced.java | 4 +- .../pulsar/broker/admin/AdminApiTest.java | 24 ++++---- .../pulsar/broker/admin/AdminApiTest2.java | 56 +++++++++---------- .../broker/admin/AdminApiTlsAuthTest.java | 4 +- .../apache/pulsar/broker/admin/AdminTest.java | 32 +++++------ .../admin/BrokerAdminClientTlsAuthTest.java | 4 +- .../broker/admin/IncrementPartitionsTest.java | 5 +- .../pulsar/broker/admin/NamespacesTest.java | 14 ++--- .../broker/admin/PersistentTopicsTest.java | 6 +- .../broker/admin/ResourceGroupsTest.java | 4 +- .../broker/admin/TopicMessageTTLTest.java | 7 +-- .../admin/TopicPoliciesDisableTest.java | 4 +- .../broker/admin/TopicPoliciesTest.java | 4 +- .../broker/admin/v1/V1_AdminApiTest.java | 22 ++++---- .../broker/admin/v1/V1_AdminApiTest2.java | 28 +++++----- .../admin/v3/AdminApiTransactionTest.java | 4 +- .../pulsar/broker/auth/AuthLogsTest.java | 4 +- .../pulsar/broker/auth/AuthorizationTest.java | 4 +- .../auth/MockedPulsarServiceBaseTest.java | 8 +-- .../AntiAffinityNamespaceGroupTest.java | 4 +- .../LeaderElectionServiceTest.java | 4 +- .../ModularLoadManagerImplTest.java | 4 +- .../lookup/http/HttpTopicLookupv2Test.java | 10 ++-- .../OwnerShipCacheForCurrentServerTest.java | 4 +- .../ResourceGroupServiceTest.java | 4 +- .../ResourceGroupUsageAggregationTest.java | 6 +- .../ResourceUsageTransportManagerTest.java | 4 +- .../service/BacklogQuotaManagerTest.java | 4 +- .../broker/service/BkEnsemblesTestBase.java | 4 +- .../service/BrokerBookieIsolationTest.java | 8 +-- .../pulsar/broker/service/BrokerTestBase.java | 5 +- .../broker/service/MaxMessageSizeTest.java | 4 +- .../pulsar/broker/service/ReplicatorTest.java | 4 +- .../broker/service/ReplicatorTestBase.java | 10 ++-- ...temTopicBasedTopicPoliciesServiceTest.java | 4 +- .../pulsar/broker/service/TopicOwnerTest.java | 4 +- ...NamespaceEventsSystemTopicServiceTest.java | 4 +- .../TopicTransactionBufferRecoverTest.java | 4 +- .../TransactionClientReconnectTest.java | 4 +- .../transaction/TransactionConsumeTest.java | 4 +- .../transaction/TransactionProduceTest.java | 4 +- .../buffer/TransactionBufferClientTest.java | 4 +- .../buffer/TransactionLowWaterMarkTest.java | 4 +- .../buffer/TransactionStablePositionTest.java | 4 +- .../PendingAckInMemoryDeleteTest.java | 4 +- .../pendingack/PendingAckPersistentTest.java | 4 +- .../pulsar/broker/web/WebServiceTest.java | 6 +- .../ZooKeeperSessionExpireRecoveryTest.java | 8 +-- .../AuthenticatedProducerConsumerTest.java | 14 ++--- ...enticationTlsHostnameVerificationTest.java | 4 +- .../AuthorizationProducerConsumerTest.java | 9 ++- .../client/api/BrokerServiceLookupTest.java | 6 +- .../api/ClientDeduplicationFailureTest.java | 4 +- .../api/MessageDispatchThrottlingTest.java | 4 +- .../client/api/NonPersistentTopicTest.java | 10 ++-- .../client/api/ProducerConsumerBase.java | 4 +- ...ListenersWithInternalListenerNameTest.java | 6 +- .../apache/pulsar/client/api/TenantTest.java | 6 +- .../client/api/TlsProducerConsumerBase.java | 4 +- ...okenAuthenticatedProducerConsumerTest.java | 4 +- ...uth2AuthenticatedProducerConsumerTest.java | 7 +-- .../api/v1/V1_ProducerConsumerBase.java | 4 +- .../impl/AdminApiKeyStoreTlsAuthTest.java | 10 ++-- .../impl/BrokerClientIntegrationTest.java | 4 +- .../impl/ConsumerConfigurationTest.java | 4 +- ...reTlsProducerConsumerTestWithAuthTest.java | 4 +- ...lsProducerConsumerTestWithoutAuthTest.java | 4 +- .../pulsar/client/impl/MessageParserTest.java | 4 +- .../client/impl/MultiTopicsReaderTest.java | 4 +- .../pulsar/client/impl/RawReaderTest.java | 4 +- .../apache/pulsar/client/impl/ReaderTest.java | 4 +- .../pulsar/client/impl/SchemaDeleteTest.java | 4 +- .../client/impl/TopicsConsumerImplTest.java | 6 +- .../client/impl/TransactionEndToEndTest.java | 6 +- .../pulsar/compaction/CompactedTopicTest.java | 4 +- .../pulsar/compaction/CompactionTest.java | 4 +- .../pulsar/compaction/CompactorTest.java | 4 +- .../worker/PulsarFunctionE2ESecurityTest.java | 4 +- .../worker/PulsarFunctionLocalRunTest.java | 4 +- .../worker/PulsarFunctionPublishTest.java | 4 +- .../worker/PulsarWorkerAssignmentTest.java | 4 +- .../pulsar/io/AbstractPulsarE2ETest.java | 13 +---- .../pulsar/io/PulsarFunctionAdminTest.java | 4 +- .../schema/PartitionedTopicSchemaTest.java | 4 +- .../org/apache/pulsar/schema/SchemaTest.java | 4 +- .../SchemaCompatibilityCheckTest.java | 4 +- .../SchemaTypeCompatibilityCheckTest.java | 4 +- .../proxy/ProxyAuthorizationTest.java | 4 +- .../apache/pulsar/client/admin/Clusters.java | 14 ++--- ...terDataInterface.java => ClusterData.java} | 2 +- .../client/admin/internal/ClustersImpl.java | 24 ++++---- .../pulsar/admin/cli/PulsarAdminToolTest.java | 14 ++--- .../apache/pulsar/admin/cli/CmdClusters.java | 6 +- ...{ClusterData.java => ClusterDataImpl.java} | 26 ++++----- .../common/util/ObjectMapperFactory.java | 4 +- .../common/policies/data/ClusterDataTest.java | 34 +++++------ .../functions/worker/PulsarWorkerService.java | 4 +- .../server/AuthedAdminProxyHandlerTest.java | 4 +- ...roxyAuthenticatedProducerConsumerTest.java | 4 +- .../server/ProxyWithAuthorizationNegTest.java | 4 +- .../server/ProxyWithAuthorizationTest.java | 10 ++-- .../server/ProxyWithJwtAuthorizationTest.java | 8 +-- .../ProxyWithoutServiceDiscoveryTest.java | 4 +- .../SuperUserAuthedAdminProxyHandlerTest.java | 6 +- .../sql/presto/TestCacheSizeAllocator.java | 4 +- .../testclient/PerformanceProducerTest.java | 4 +- .../pulsar/websocket/WebSocketService.java | 18 +++--- 126 files changed, 454 insertions(+), 475 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{ClusterDataInterface.java => ClusterData.java} (97%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{ClusterData.java => ClusterDataImpl.java} (89%) diff --git a/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java b/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java index 756079f2a62c4..e4e42cd7e8482 100644 --- a/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java +++ b/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java @@ -31,7 +31,7 @@ import org.apache.pulsar.client.api.ProducerConsumerBase; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -104,7 +104,7 @@ protected void internalSetUpForNamespace() throws Exception { admin = spy(PulsarAdmin.builder().serviceHttpUrl(brokerUrlTls.toString()) .tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(false) .authentication(AuthenticationTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java index fa29bdfdde73a..7ff45d0069899 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java @@ -24,11 +24,10 @@ import static org.apache.commons.lang3.StringUtils.isNotBlank; import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.resources.PulsarResources; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.ResourceGroup; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -57,7 +56,7 @@ public class ConfigurationCacheService { private final ZooKeeperCache cache; private ZooKeeperDataCache propertiesCache; private ZooKeeperDataCache policiesCache; - private ZooKeeperDataCache clustersCache; + private ZooKeeperDataCache clustersCache; private ZooKeeperChildrenCache clustersListCache; private ZooKeeperChildrenCache failureDomainListCache; private ZooKeeperDataCache namespaceIsolationPoliciesCache; @@ -103,10 +102,10 @@ public Policies deserialize(String path, byte[] content) throws Exception { } }; - this.clustersCache = new ZooKeeperDataCache(cache) { + this.clustersCache = new ZooKeeperDataCache(cache) { @Override - public ClusterData deserialize(String path, byte[] content) throws Exception { - return ObjectMapperFactory.getThreadLocal().readValue(content, ClusterData.class); + public ClusterDataImpl deserialize(String path, byte[] content) throws Exception { + return ObjectMapperFactory.getThreadLocal().readValue(content, ClusterDataImpl.class); } }; @@ -191,7 +190,7 @@ public ZooKeeperDataCache policiesCache() { return this.policiesCache; } - public ZooKeeperDataCache clustersCache() { + public ZooKeeperDataCache clustersCache() { return this.clustersCache; } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java index 083a7d75eda84..4cdf29e1cc9d6 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java @@ -20,7 +20,7 @@ import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.resources.PulsarResources; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -52,7 +52,7 @@ public ZooKeeperDataCache policiesCache() { throw new UnsupportedOperationException(); } - public ZooKeeperDataCache clustersCache() { + public ZooKeeperDataCache clustersCache() { throw new UnsupportedOperationException(); } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java index 938d667a62043..ddbaf8096a1c0 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java @@ -22,19 +22,19 @@ import java.util.Set; import lombok.Getter; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.metadata.api.MetadataStoreException; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; -public class ClusterResources extends BaseResources { +public class ClusterResources extends BaseResources { public static final String CLUSTERS_ROOT = "/admin/clusters"; @Getter private FailureDomainResources failureDomainResources; public ClusterResources(MetadataStoreExtended store, int operationTimeoutSec) { - super(store, ClusterData.class, operationTimeoutSec); + super(store, ClusterDataImpl.class, operationTimeoutSec); this.failureDomainResources = new FailureDomainResources(store, FailureDomain.class, operationTimeoutSec); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java index 5f1d328ffa8c8..15c84c728e870 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java @@ -36,7 +36,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -236,14 +236,14 @@ public static void main(String[] args) throws Exception { createMetadataNode(configStore, "/admin/clusters", new byte[0]); - ClusterData clusterData = new ClusterData(arguments.clusterWebServiceUrl, arguments.clusterWebServiceUrlTls, + ClusterDataImpl clusterData = new ClusterDataImpl(arguments.clusterWebServiceUrl, arguments.clusterWebServiceUrlTls, arguments.clusterBrokerServiceUrl, arguments.clusterBrokerServiceUrlTls); byte[] clusterDataJson = ObjectMapperFactory.getThreadLocal().writeValueAsBytes(clusterData); createMetadataNode(configStore, "/admin/clusters/" + arguments.cluster, clusterDataJson); // Create marker for "global" cluster - ClusterData globalClusterData = new ClusterData(null, null); + ClusterDataImpl globalClusterData = new ClusterDataImpl(null, null); byte[] globalClusterDataJson = ObjectMapperFactory.getThreadLocal().writeValueAsBytes(globalClusterData); createMetadataNode(configStore, "/admin/clusters/global", globalClusterDataJson); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java index 749920e559e1c..06b2d8cdd57a1 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.functions.worker.WorkerConfig; import org.apache.pulsar.functions.worker.WorkerService; @@ -305,8 +305,8 @@ public void start() throws Exception { webServiceUrl.toString()).authentication( config.getBrokerClientAuthenticationPlugin(), config.getBrokerClientAuthenticationParameters()).build(); - ClusterData clusterData = - new ClusterData(webServiceUrl.toString(), null, brokerServiceUrl, null); + ClusterDataImpl clusterData = + new ClusterDataImpl(webServiceUrl.toString(), null, brokerServiceUrl, null); createSampleNameSpace(clusterData, cluster); } else { URL webServiceUrlTls = new URL( @@ -333,7 +333,7 @@ public void start() throws Exception { } admin = builder.build(); - ClusterData clusterData = new ClusterData(null, webServiceUrlTls.toString(), null, brokerServiceUrlTls); + ClusterDataImpl clusterData = new ClusterDataImpl(null, webServiceUrlTls.toString(), null, brokerServiceUrlTls); createSampleNameSpace(clusterData, cluster); } @@ -366,7 +366,7 @@ private void createNameSpace(String cluster, String publicTenant, String default } } - private void createSampleNameSpace(ClusterData clusterData, String cluster) { + private void createSampleNameSpace(ClusterDataImpl clusterData, String cluster) { // Create a sample namespace final String tenant = "sample"; final String globalCluster = "global"; @@ -382,7 +382,7 @@ private void createSampleNameSpace(ClusterData clusterData, String cluster) { try { admin.clusters().getCluster(globalCluster); } catch (PulsarAdminException.NotFoundException ex) { - admin.clusters().createCluster(globalCluster, new ClusterData(null, null)); + admin.clusters().createCluster(globalCluster, new ClusterDataImpl(null, null)); } if (!admin.tenants().getTenants().contains(tenant)) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java index 6bb1a1611a94f..bc0665f755adb 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java @@ -123,7 +123,7 @@ import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.protocol.schema.SchemaStorage; import org.apache.pulsar.common.util.FutureUtil; @@ -729,8 +729,8 @@ public Boolean get() { this.brokerServiceUrlTls = brokerUrlTls(config); if (null != this.webSocketService) { - ClusterData clusterData = - new ClusterData(webServiceAddress, webServiceAddressTls, brokerServiceUrl, brokerServiceUrlTls); + ClusterDataImpl clusterData = + new ClusterDataImpl(webServiceAddress, webServiceAddressTls, brokerServiceUrl, brokerServiceUrlTls); this.webSocketService.setLocalCluster(clusterData); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java index 01c641851ad37..9a4c9bccd50ec 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java @@ -57,7 +57,7 @@ import org.apache.pulsar.common.naming.Constants; import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; @@ -95,16 +95,16 @@ public Set getClusters() throws Exception { @Path("/{cluster}") @ApiOperation( value = "Get the configuration for the specified cluster.", - response = ClusterData.class, + response = ClusterDataImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { - @ApiResponse(code = 200, message = "Return the cluster data.", response = ClusterData.class), + @ApiResponse(code = 200, message = "Return the cluster data.", response = ClusterDataImpl.class), @ApiResponse(code = 403, message = "Don't have admin permission."), @ApiResponse(code = 404, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public ClusterData getCluster( + public ClusterDataImpl getCluster( @ApiParam( value = "The cluster name", required = true @@ -159,7 +159,7 @@ public void createCluster( ) ) ) - ClusterData clusterData + ClusterDataImpl clusterData ) { validateSuperUserAccess(); validatePoliciesReadOnlyAccess(); @@ -212,7 +212,7 @@ public void updateCluster( ) ) ) - ClusterData clusterData + ClusterDataImpl clusterData ) { validateSuperUserAccess(); validatePoliciesReadOnlyAccess(); @@ -329,7 +329,7 @@ public Set getPeerCluster( ) { validateSuperUserAccess(); try { - ClusterData clusterData = clusterResources().get(path("clusters", cluster)) + ClusterDataImpl clusterData = clusterResources().get(path("clusters", cluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster does not exist")); return clusterData.getPeerClusterNames(); } catch (Exception e) { 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 3ee8e3a5cf352..20446f41980e6 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 @@ -81,7 +81,7 @@ 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.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; @@ -192,7 +192,7 @@ protected void internalDeleteNamespace(AsyncResponse asyncResponse, boolean auth && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -355,7 +355,7 @@ protected void internalDeleteNamespaceForcefully(AsyncResponse asyncResponse, bo && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -507,7 +507,7 @@ protected void internalDeleteNamespaceBundle(String bundleRange, boolean authori && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -580,7 +580,7 @@ protected void internalDeleteNamespaceBundleForcefully(String bundleRange, boole && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterData replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -1937,7 +1937,7 @@ private void unsubscribe(NamespaceName nsName, String bundleRange, String subscr */ private void validatePeerClusterConflict(String clusterName, Set replicationClusters) { try { - ClusterData clusterData = clusterResources().get(path("clusters", clusterName)).orElseThrow( + ClusterDataImpl clusterData = clusterResources().get(path("clusters", clusterName)).orElseThrow( () -> new RestException(Status.PRECONDITION_FAILED, "Invalid replication cluster " + clusterName)); Set peerClusters = clusterData.getPeerClusterNames(); if (peerClusters != null && !peerClusters.isEmpty()) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java index 01000d9ff77f4..a4164746eef09 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java @@ -85,7 +85,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; @@ -146,7 +146,7 @@ public enum AddressType { public static final String NAMESPACE_ISOLATION_POLICIES = "namespaceIsolationPolicies"; - private final ConcurrentOpenHashMap namespaceClients; + private final ConcurrentOpenHashMap namespaceClients; private final List bundleOwnershipListeners; @@ -1213,14 +1213,14 @@ public CompletableFuture> getListOfNonPersistentTopics(NamespaceNam }); } - private CompletableFuture> getNonPersistentTopicsFromPeerCluster(ClusterData peerClusterData, - NamespaceName namespace) { + private CompletableFuture> getNonPersistentTopicsFromPeerCluster(ClusterDataImpl peerClusterData, + NamespaceName namespace) { PulsarClientImpl client = getNamespaceClient(peerClusterData); return client.getLookup().getTopicsUnderNamespace(namespace, Mode.NON_PERSISTENT); } - public PulsarClientImpl getNamespaceClient(ClusterData cluster) { + public PulsarClientImpl getNamespaceClient(ClusterDataImpl cluster) { PulsarClientImpl client = namespaceClients.get(cluster); if (client != null) { return client; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java index d8558bb651ad8..58d34979574f9 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java @@ -142,7 +142,7 @@ import org.apache.pulsar.common.policies.data.AutoSubscriptionCreationOverride; import org.apache.pulsar.common.policies.data.AutoTopicCreationOverride; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -1017,7 +1017,7 @@ public PulsarClient getReplicationClient(String cluster) { return replicationClients.computeIfAbsent(cluster, key -> { try { String path = PulsarWebResource.path("clusters", cluster); - ClusterData data = this.pulsar.getConfigurationCache().clustersCache().get(path) + ClusterDataImpl data = this.pulsar.getConfigurationCache().clustersCache().get(path) .orElseThrow(() -> new KeeperException.NoNodeException(path)); ClientBuilder clientBuilder = PulsarClient.builder() .enableTcpNoDelay(false) @@ -1071,7 +1071,7 @@ public PulsarAdmin getClusterPulsarAdmin(String cluster) { return clusterAdmins.computeIfAbsent(cluster, key -> { try { String path = PulsarWebResource.path("clusters", cluster); - ClusterData data = this.pulsar.getConfigurationCache().clustersCache().get(path) + ClusterDataImpl data = this.pulsar.getConfigurationCache().clustersCache().get(path) .orElseThrow(() -> new KeeperException.NoNodeException(path)); ServiceConfiguration conf = pulsar.getConfig(); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java index 2f39897c98e28..eec22e3f39af7 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java @@ -76,7 +76,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -352,7 +352,7 @@ protected void validateClusterForTenant(String tenant, String cluster) { */ protected void validateClusterOwnership(String cluster) throws WebApplicationException { try { - ClusterData differentClusterData = getClusterDataIfDifferentCluster(pulsar(), cluster, clientAppId()).get(); + ClusterDataImpl differentClusterData = getClusterDataIfDifferentCluster(pulsar(), cluster, clientAppId()).get(); if (differentClusterData != null) { URI redirect = getRedirectionUrl(differentClusterData); // redirect to the cluster requested @@ -373,7 +373,7 @@ protected void validateClusterOwnership(String cluster) throws WebApplicationExc } - private URI getRedirectionUrl(ClusterData differentClusterData) throws MalformedURLException { + private URI getRedirectionUrl(ClusterDataImpl differentClusterData) throws MalformedURLException { try { PulsarServiceNameResolver serviceNameResolver = new PulsarServiceNameResolver(); if (isRequestHttps() && pulsar.getConfiguration().getWebServicePortTls().isPresent() @@ -389,10 +389,10 @@ private URI getRedirectionUrl(ClusterData differentClusterData) throws Malformed } } - protected static CompletableFuture getClusterDataIfDifferentCluster(PulsarService pulsar, - String cluster, String clientAppId) { + protected static CompletableFuture getClusterDataIfDifferentCluster(PulsarService pulsar, + String cluster, String clientAppId) { - CompletableFuture clusterDataFuture = new CompletableFuture<>(); + CompletableFuture clusterDataFuture = new CompletableFuture<>(); if (!isValidCluster(pulsar, cluster)) { try { @@ -664,7 +664,7 @@ protected CompletableFuture validateTopicOwnershipAsync(TopicName topicNam protected void validateGlobalNamespaceOwnership(NamespaceName namespace) { int timeout = pulsar().getConfiguration().getZooKeeperOperationTimeoutSeconds(); try { - ClusterData peerClusterData = checkLocalOrGetPeerReplicationCluster(pulsar(), namespace) + ClusterDataImpl peerClusterData = checkLocalOrGetPeerReplicationCluster(pulsar(), namespace) .get(timeout, SECONDS); // if peer-cluster-data is present it means namespace is owned by that peer-cluster and request should be // redirect to the peer-cluster @@ -717,12 +717,12 @@ protected CompletableFuture validateGlobalNamespaceOwnershipAsync(Namespac }); } - public static CompletableFuture checkLocalOrGetPeerReplicationCluster(PulsarService pulsarService, - NamespaceName namespace) { + public static CompletableFuture checkLocalOrGetPeerReplicationCluster(PulsarService pulsarService, + NamespaceName namespace) { if (!namespace.isGlobal()) { return CompletableFuture.completedFuture(null); } - final CompletableFuture validationFuture = new CompletableFuture<>(); + final CompletableFuture validationFuture = new CompletableFuture<>(); final String localCluster = pulsarService.getConfiguration().getClusterName(); final String path = AdminResource.path(POLICIES, namespace.toString()); @@ -736,7 +736,7 @@ public static CompletableFuture checkLocalOrGetPeerReplicationClust log.warn(msg); validationFuture.completeExceptionally(new RestException(Status.PRECONDITION_FAILED, msg)); } else if (!policies.replication_clusters.contains(localCluster)) { - ClusterData ownerPeerCluster = getOwnerFromPeerClusterList(pulsarService, + ClusterDataImpl ownerPeerCluster = getOwnerFromPeerClusterList(pulsarService, policies.replication_clusters); if (ownerPeerCluster != null) { // found a peer that own this namespace @@ -767,14 +767,14 @@ public static CompletableFuture checkLocalOrGetPeerReplicationClust return validationFuture; } - private static ClusterData getOwnerFromPeerClusterList(PulsarService pulsar, Set replicationClusters) { + private static ClusterDataImpl getOwnerFromPeerClusterList(PulsarService pulsar, Set replicationClusters) { String currentCluster = pulsar.getConfiguration().getClusterName(); if (replicationClusters == null || replicationClusters.isEmpty() || isBlank(currentCluster)) { return null; } try { - Optional cluster = pulsar.getConfigurationCache().clustersCache() + Optional cluster = pulsar.getConfigurationCache().clustersCache() .get(path("clusters", currentCluster)); if (!cluster.isPresent() || cluster.get().getPeerClusterNames() == null) { return null; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java index 4437b43f29527..5d0daac44f838 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java @@ -36,7 +36,7 @@ import org.apache.pulsar.broker.namespace.NamespaceService; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; @@ -108,7 +108,7 @@ void setup() throws Exception { private void createTenant(PulsarAdmin pulsarAdmin) throws PulsarAdminException { - ClusterData clusterData = new ClusterData(); + ClusterDataImpl clusterData = new ClusterDataImpl(); clusterData.setServiceUrl(pulsarAdmin.getServiceUrl()); pulsarAdmins[0].clusters().createCluster("my-cluster", clusterData); Set allowedClusters = new HashSet<>(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java index 304b79e74f55e..b1202212b9418 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java @@ -24,7 +24,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.api.*; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; @@ -51,7 +51,7 @@ public class AdminApiDelayedDelivery extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("delayed-delivery-messages", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java index fb20be6b7781c..0e1f31d2cbcd4 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java @@ -27,7 +27,7 @@ import org.apache.pulsar.client.api.MessageRoutingMode; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.impl.MessageIdImpl; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -70,7 +70,7 @@ public void initPersistentTopics() throws Exception { @BeforeMethod protected void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop/ns-abc"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java index 9f57532f5017a..52e2314aed28b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -51,7 +51,7 @@ public class AdminApiMaxUnackedMessages extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("max-unacked-messages", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java index db2c5c92518c5..c80f4c5eedbe4 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java @@ -46,7 +46,7 @@ import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -75,7 +75,7 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(testTenant, tenantInfo); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java index 4d5bd1368bfc7..a65f9a30e14cb 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java @@ -32,7 +32,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; @@ -55,7 +55,7 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java index 177d2049e4893..6b495531e2986 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java @@ -41,7 +41,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.schema.SchemaDefinition; import org.apache.pulsar.client.impl.schema.StringSchema; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -66,7 +66,7 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(cluster, new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster(cluster, new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("schematest", tenantInfo); admin.namespaces().createNamespace("schematest/test", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java index 2056ed47b5d54..e878496a26e1e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java @@ -30,7 +30,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.protocol.schema.PostSchemaPayload; import org.apache.pulsar.common.schema.SchemaInfo; @@ -55,7 +55,7 @@ public class AdminApiSchemaValidationEnforced extends MockedPulsarServiceBaseTes public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("schema-validation-enforced", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 3b17f265ca2f9..15955542e9a23 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -110,7 +110,7 @@ import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerInfo; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @@ -185,7 +185,7 @@ public void setup() throws Exception { otheradmin = mockPulsarSetup.getAdmin(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); @@ -233,26 +233,26 @@ public Object[][] topicNamesForAllTypesProvider() { @Test public void clusters() throws Exception { admin.clusters().createCluster("usw", - new ClusterData("http://broker.messaging.use.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.use.example.com:8080")); // "test" cluster is part of config-default cluster and it's znode gets created when PulsarService creates // failure-domain znode of this default cluster assertEquals(admin.clusters().getClusters(), Lists.newArrayList("test", "usw")); assertEquals(admin.clusters().getCluster("test"), - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("test", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("test", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); admin.clusters().deleteCluster("usw"); @@ -266,7 +266,7 @@ public void clusters() throws Exception { // Check name validation try { - admin.clusters().createCluster("bf!", new ClusterData("http://dummy.messaging.example.com")); + admin.clusters().createCluster("bf!", new ClusterDataImpl("http://dummy.messaging.example.com")); fail("should have failed"); } catch (PulsarAdminException e) { assertTrue(e instanceof PreconditionFailedException); @@ -683,7 +683,7 @@ public void properties() throws PulsarAdminException { @Test public void namespaces() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); + admin.clusters().createCluster("usw", new ClusterDataImpl()); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); @@ -2595,7 +2595,7 @@ public PulsarAdmin getAdmin() { @Test public void testTopicBundleRangeLookup() throws PulsarAdminException, PulsarServerException, Exception { - admin.clusters().createCluster("usw", new ClusterData()); + admin.clusters().createCluster("usw", new ClusterDataImpl()); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); @@ -2779,7 +2779,7 @@ public void testSubscriptionExpiry() throws Exception { @Test public void testCreateAndDeleteNamespaceWithBundles() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); + admin.clusters().createCluster("usw", new ClusterDataImpl()); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 57ad221f54cfc..82cd97266d226 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -82,7 +82,7 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.FailureDomainInterface; @@ -120,7 +120,7 @@ public void setup() throws Exception { mockPulsarSetup.setup(); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); @@ -259,7 +259,7 @@ public void testTopicPoliciesWithMultiBroker() throws Exception { conf.setTopicLevelPoliciesEnabled(true); super.internalSetup(); admin.clusters().createCluster("test" - , new ClusterData(pulsar.getWebServiceAddress() + ",localhost:1026," + "localhost:2050")); + , new ClusterDataImpl(pulsar.getWebServiceAddress() + ",localhost:1026," + "localhost:2050")); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); @@ -655,13 +655,13 @@ public void testLoadReportApi() throws Exception { @Test public void testPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); admin.clusters().updatePeerClusterNames("us-west1", Sets.newLinkedHashSet(Lists.newArrayList("us-west2"))); assertEquals(admin.clusters().getCluster("us-west1").getPeerClusterNames(), Lists.newArrayList("us-west2")); @@ -700,18 +700,18 @@ public void testPeerCluster() throws Exception { @Test public void testReplicationPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west3", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west4", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); - admin.clusters().createCluster("global", new ClusterData()); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); + admin.clusters().createCluster("global", new ClusterDataImpl()); List allClusters = admin.clusters().getClusters(); Collections.sort(allClusters); @@ -1059,7 +1059,7 @@ public void brokerNamespaceIsolationPoliciesUpdateOnTime() throws Exception { @Test public void clustersList() throws PulsarAdminException { final String cluster = pulsar.getConfiguration().getClusterName(); - admin.clusters().createCluster("global", new ClusterData("http://localhost:6650")); + admin.clusters().createCluster("global", new ClusterDataImpl("http://localhost:6650")); // Global cluster, if there, should be omitted from the results assertEquals(admin.clusters().getClusters(), Lists.newArrayList(cluster)); @@ -1467,7 +1467,7 @@ public void testForceDeleteNamespace() throws Exception { @Test public void testUpdateClusterWithProxyUrl() throws Exception { - ClusterData cluster = new ClusterData(pulsar.getWebServiceAddress()); + ClusterDataImpl cluster = new ClusterDataImpl(pulsar.getWebServiceAddress()); String clusterName = "test2"; admin.clusters().createCluster(clusterName, cluster); Assert.assertEquals(admin.clusters().getCluster(clusterName), cluster); @@ -1484,7 +1484,7 @@ public void testMaxNamespacesPerTenant() throws Exception { super.internalCleanup(); conf.setMaxNamespacesPerTenant(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1500,7 +1500,7 @@ public void testMaxNamespacesPerTenant() throws Exception { super.internalCleanup(); conf.setMaxNamespacesPerTenant(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); for (int i = 0; i < 10; i++) { admin.namespaces().createNamespace("testTenant/ns-" + i, Sets.newHashSet("test")); @@ -1512,7 +1512,7 @@ public void testMaxTopicsPerNamespace() throws Exception { super.internalCleanup(); conf.setMaxTopicsPerNamespace(10); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1535,7 +1535,7 @@ public void testMaxTopicsPerNamespace() throws Exception { super.internalCleanup(); conf.setMaxTopicsPerNamespace(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); for (int i = 0; i < 10; ++i) { @@ -1549,7 +1549,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setDefaultNumPartitions(3); conf.setAllowAutoTopicCreationType("partitioned"); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1568,7 +1568,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setMaxTopicsPerNamespace(3); conf.setAllowAutoTopicCreationType("non-partitioned"); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1603,7 +1603,7 @@ public void testMaxSubscriptionsPerTopic() throws Exception { conf.setMaxSubscriptionsPerTopic(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1628,7 +1628,7 @@ public void testMaxSubscriptionsPerTopic() throws Exception { conf.setMaxSubscriptionsPerTopic(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1644,7 +1644,7 @@ public void testMaxSubscriptionsPerTopic() throws Exception { conf.setMaxSubscriptionsPerTopic(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1753,7 +1753,7 @@ public void testMaxSubPerTopicPriority() throws Exception { conf.setMaxSubscriptionsPerTopic(brokerLevelMaxSub); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); @@ -1810,7 +1810,7 @@ public void testMaxProducersPerTopicUnlimited() throws Exception { conf.setMaxProducersPerTopic(maxProducersPerTopic); super.internalSetup(); //init namespace - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); @@ -1863,7 +1863,7 @@ public void testMaxConsumersPerTopicUnlimited() throws Exception { conf.setMaxConsumersPerTopic(maxConsumersPerTopic); super.internalSetup(); //init namespace - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java index b3497331a39a4..66d452242010a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java @@ -50,7 +50,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.tls.NoopHostnameVerifier; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.SecurityUtility; import org.glassfish.jersey.client.ClientConfig; @@ -96,7 +96,7 @@ public void setup() throws Exception { super.internalSetup(); PulsarAdmin admin = buildAdminClient("admin"); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.close(); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java index 2f55ee26eef58..feebaf86aa878 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java @@ -81,7 +81,7 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.BrokerInfo; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -218,7 +218,7 @@ public void clusters() throws Exception { assertEquals(clusters.getClusters(), Lists.newArrayList()); verify(clusters, never()).validateSuperUserAccess(); - clusters.createCluster("use", new ClusterData("http://broker.messaging.use.example.com")); + clusters.createCluster("use", new ClusterDataImpl("http://broker.messaging.use.example.com")); verify(clusters, times(1)).validateSuperUserAccess(); // ensure to read from ZooKeeper directly //clusters.clustersListCache().clear(); @@ -226,7 +226,7 @@ public void clusters() throws Exception { // Check creating existing cluster try { - clusters.createCluster("use", new ClusterData("http://broker.messaging.use.example.com")); + clusters.createCluster("use", new ClusterDataImpl("http://broker.messaging.use.example.com")); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.CONFLICT.getStatusCode()); @@ -240,13 +240,13 @@ public void clusters() throws Exception { assertEquals(e.getResponse().getStatus(), Status.NOT_FOUND.getStatusCode()); } - assertEquals(clusters.getCluster("use"), new ClusterData("http://broker.messaging.use.example.com")); + assertEquals(clusters.getCluster("use"), new ClusterDataImpl("http://broker.messaging.use.example.com")); verify(clusters, times(4)).validateSuperUserAccess(); - clusters.updateCluster("use", new ClusterData("http://new-broker.messaging.use.example.com")); + clusters.updateCluster("use", new ClusterDataImpl("http://new-broker.messaging.use.example.com")); verify(clusters, times(5)).validateSuperUserAccess(); - assertEquals(clusters.getCluster("use"), new ClusterData("http://new-broker.messaging.use.example.com")); + assertEquals(clusters.getCluster("use"), new ClusterDataImpl("http://new-broker.messaging.use.example.com")); verify(clusters, times(6)).validateSuperUserAccess(); try { @@ -292,7 +292,7 @@ public void clusters() throws Exception { } try { - clusters.updateCluster("use", new ClusterData()); + clusters.updateCluster("use", new ClusterDataImpl()); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), 404); @@ -312,7 +312,7 @@ public void clusters() throws Exception { }); configurationCache.clustersListCache().clear(); // clear caches to load data from metadata-store again - MetadataCacheImpl clusterCache = (MetadataCacheImpl) pulsar.getPulsarResources() + MetadataCacheImpl clusterCache = (MetadataCacheImpl) pulsar.getPulsarResources() .getClusterResources().getCache(); MetadataCacheImpl isolationPolicyCache = (MetadataCacheImpl) pulsar.getPulsarResources() .getNamespaceResources().getIsolationPolicies().getCache(); @@ -331,7 +331,7 @@ public void clusters() throws Exception { && path.equals("/admin/clusters/test"); }); try { - clusters.createCluster("test", new ClusterData("http://broker.messaging.test.example.com")); + clusters.createCluster("test", new ClusterDataImpl("http://broker.messaging.test.example.com")); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.INTERNAL_SERVER_ERROR.getStatusCode()); @@ -344,7 +344,7 @@ public void clusters() throws Exception { clusterCache.invalidateAll(); store.invalidateAll(); try { - clusters.updateCluster("test", new ClusterData("http://broker.messaging.test.example.com")); + clusters.updateCluster("test", new ClusterDataImpl("http://broker.messaging.test.example.com")); fail("should have failed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.INTERNAL_SERVER_ERROR.getStatusCode()); @@ -390,7 +390,7 @@ public void clusters() throws Exception { // Check name validations try { - clusters.createCluster("bf@", new ClusterData("http://dummy.messaging.example.com")); + clusters.createCluster("bf@", new ClusterDataImpl("http://dummy.messaging.example.com")); fail("should have filed"); } catch (RestException e) { assertEquals(e.getResponse().getStatus(), Status.PRECONDITION_FAILED.getStatusCode()); @@ -398,10 +398,10 @@ public void clusters() throws Exception { // Check authentication try { - clusters.createCluster("auth", new ClusterData("http://dummy.web.example.com", "", + clusters.createCluster("auth", new ClusterDataImpl("http://dummy.web.example.com", "", "http://dummy.messaging.example.com", "", "authenticationPlugin", "authenticationParameters")); - ClusterData cluster = clusters.getCluster("auth"); + ClusterDataImpl cluster = clusters.getCluster("auth"); assertEquals("authenticationPlugin", cluster.getAuthenticationPlugin()); assertEquals("authenticationParameters", cluster.getAuthenticationParameters()); } catch (RestException e) { @@ -425,7 +425,7 @@ public void properties() throws Throwable { verify(properties, times(1)).validateSuperUserAccess(); // create local cluster - clusters.createCluster(configClusterName, new ClusterData()); + clusters.createCluster(configClusterName, new ClusterDataImpl()); Set allowedClusters = Sets.newHashSet(); allowedClusters.add(configClusterName); @@ -623,7 +623,7 @@ public void properties() throws Throwable { @Test public void brokers() throws Exception { - clusters.createCluster("use", new ClusterData("http://broker.messaging.use.example.com", + clusters.createCluster("use", new ClusterDataImpl("http://broker.messaging.use.example.com", "https://broker.messaging.use.example.com:4443")); URI requestUri = new URI( @@ -682,7 +682,7 @@ public void resourceQuotas() throws Exception { // create policies TenantInfo admin = new TenantInfo(); admin.getAllowedClusters().add(cluster); - ClusterData clusterData = new ClusterData(cluster); + ClusterDataImpl clusterData = new ClusterDataImpl(cluster); clusters.createCluster(cluster, clusterData ); asynRequests(ctx -> properties.createTenant(ctx, property, admin)); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java index bbc70d0216a30..e1cef1b6d3536 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.annotations.AfterMethod; @@ -129,7 +129,7 @@ public void testPersistentList() throws Exception { /***** Broker 2 Started *****/ try (PulsarAdmin admin = buildAdminClient("superproxy")) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant", new TenantInfo(ImmutableSet.of("admin"), ImmutableSet.of("test"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java index c8fe65eb4ab6c..92086c7da7479 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java @@ -22,7 +22,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import java.util.Collections; -import java.util.concurrent.TimeUnit; import lombok.Cleanup; import org.apache.pulsar.broker.BrokerTestUtil; @@ -34,7 +33,7 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -58,7 +57,7 @@ public void setup() throws Exception { mockPulsarSetup.setup(); // Setup namespaces - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); 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 071b8b3f4c24e..94af3a6245f38 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 @@ -84,7 +84,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; @@ -166,9 +166,9 @@ public void setup() throws Exception { doReturn(null).when(namespaces).clientAuthData(); doReturn(Sets.newTreeSet(Lists.newArrayList("use", "usw", "usc", "global"))).when(namespaces).clusters(); - admin.clusters().createCluster("use", new ClusterData("http://broker-use.com:8080")); - admin.clusters().createCluster("usw", new ClusterData("http://broker-usw.com:8080")); - admin.clusters().createCluster("usc", new ClusterData("http://broker-usc.com:8080")); + admin.clusters().createCluster("use", new ClusterDataImpl("http://broker-use.com:8080")); + admin.clusters().createCluster("usw", new ClusterDataImpl("http://broker-usw.com:8080")); + admin.clusters().createCluster("usc", new ClusterDataImpl("http://broker-usc.com:8080")); admin.tenants().createTenant(this.testTenant, new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc", "usw"))); admin.tenants().createTenant(this.testOtherTenant, @@ -1477,7 +1477,7 @@ public void testMaxTopicsPerNamespace() throws Exception { super.internalSetup(); String namespace = "testTenant/ns1"; - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("testTenant", tenantInfo); @@ -1527,7 +1527,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setAllowAutoTopicCreationType("partitioned"); super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace(namespace, Sets.newHashSet("use")); admin.namespaces().setMaxTopicsPerNamespace(namespace, 10); @@ -1557,7 +1557,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setAllowAutoTopicCreationType("non-partitioned"); super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace(namespace, Sets.newHashSet("use")); admin.namespaces().setMaxTopicsPerNamespace(namespace, 3); 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 3f3883be4c9f4..267fbe6449c13 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 @@ -65,7 +65,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TopicStats; @@ -128,8 +128,8 @@ protected void setup() throws Exception { doReturn(mock(AuthenticationDataHttps.class)).when(nonPersistentTopic).clientAuthData(); - admin.clusters().createCluster("use", new ClusterData("http://broker-use.com:8080")); - admin.clusters().createCluster("test", new ClusterData("http://broker-use.com:8080")); + admin.clusters().createCluster("use", new ClusterDataImpl("http://broker-use.com:8080")); + admin.clusters().createCluster("test", new ClusterDataImpl("http://broker-use.com:8080")); admin.tenants().createTenant(this.testTenant, new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testLocalCluster, "test"))); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet(testLocalCluster, "test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java index 7c240d5f4880a..747c3e7563f8b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java @@ -24,7 +24,7 @@ import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.broker.admin.v2.ResourceGroups; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ResourceGroup; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.annotations.AfterClass; @@ -173,7 +173,7 @@ public void testNamespaceResourceGroup() throws Exception { } private void prepareData() throws PulsarAdminException { - admin.clusters().createCluster(testCluster, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(testCluster, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant(testTenant, new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testCluster))); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java index a31cad6ad0a26..1e880cc68e551 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java @@ -24,7 +24,7 @@ import org.apache.pulsar.broker.service.persistent.PersistentTopic; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.Producer; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.eclipse.jetty.http.HttpStatus; @@ -35,7 +35,6 @@ import java.lang.reflect.Method; import java.util.UUID; -import java.util.concurrent.TimeUnit; @Slf4j @Test(groups = "flaky") @@ -58,7 +57,7 @@ protected void setup() throws Exception { this.conf.setTtlDurationDefaultInSeconds(3600); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); @@ -131,7 +130,7 @@ public void testTopicPolicyDisabled() throws Exception { this.conf.setTopicLevelPoliciesEnabled(false); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java index bc194b4adaa10..32ca46b725783 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java @@ -23,7 +23,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -55,7 +55,7 @@ protected void setup() throws Exception { this.conf.setTopicLevelPoliciesEnabled(false); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java index 7a9fb069417bf..a4734507eaca3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java @@ -44,7 +44,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; @@ -98,7 +98,7 @@ protected void setup() throws Exception { this.conf.setDefaultNumberOfNamespaceBundles(1); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 49bbe6387997a..cfe50794ee535 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -87,7 +87,7 @@ import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; @@ -164,7 +164,7 @@ public void setup() throws Exception { otheradmin = mockPulsarSetup.getAdmin(); // Setup namespaces - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); @@ -201,26 +201,26 @@ public Object[][] topicTypeProvider() { @Test public void clusters() throws Exception { admin.clusters().createCluster("usw", - new ClusterData("http://broker.messaging.use.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.use.example.com:8080")); // "test" cluster is part of config-default cluster and it's znode gets created when PulsarService creates // failure-domain znode of this default cluster assertEquals(admin.clusters().getClusters(), Lists.newArrayList("use", "usw")); assertEquals(admin.clusters().getCluster("use"), - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("use", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080")); + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080")); admin.clusters().updateCluster("usw", - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); assertEquals(admin.clusters().getClusters(), Lists.newArrayList("use", "usw")); assertEquals(admin.clusters().getCluster("usw"), - new ClusterData("http://new-broker.messaging.usw.example.com:8080", + new ClusterDataImpl("http://new-broker.messaging.usw.example.com:8080", "https://new-broker.messaging.usw.example.com:4443")); admin.clusters().deleteCluster("usw"); @@ -234,7 +234,7 @@ public void clusters() throws Exception { // Check name validation try { - admin.clusters().createCluster("bf!", new ClusterData("http://dummy.messaging.example.com")); + admin.clusters().createCluster("bf!", new ClusterDataImpl("http://dummy.messaging.example.com")); fail("should have failed"); } catch (PulsarAdminException e) { assertTrue(e instanceof PreconditionFailedException); @@ -603,7 +603,7 @@ public void properties() throws PulsarAdminException { @Test public void namespaces() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); + admin.clusters().createCluster("usw", new ClusterDataImpl()); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); @@ -1965,7 +1965,7 @@ public PulsarAdmin getAdmin() { @Test public void testTopicBundleRangeLookup() throws Exception { - admin.clusters().createCluster("usw", new ClusterData()); + admin.clusters().createCluster("usw", new ClusterDataImpl()); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java index c131433a2f720..a819d8c105c66 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java @@ -59,7 +59,7 @@ import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.FailureDomainInterface; @@ -94,7 +94,7 @@ public void setup() throws Exception { mockPulsarSetup.setup(); // Setup namespaces - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); @@ -550,13 +550,13 @@ public void testLoadReportApi() throws Exception { @Test public void testPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); admin.clusters().updatePeerClusterNames("us-west1", Sets.newLinkedHashSet(Lists.newArrayList("us-west2"))); assertEquals(admin.clusters().getCluster("us-west1").getPeerClusterNames(), Lists.newArrayList("us-west2")); @@ -595,18 +595,18 @@ public void testPeerCluster() throws Exception { @Test public void testReplicationPeerCluster() throws Exception { admin.clusters().createCluster("us-west1", - new ClusterData("http://broker.messaging.west1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west1.example.com:8080")); admin.clusters().createCluster("us-west2", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west3", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-west4", - new ClusterData("http://broker.messaging.west2.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.west2.example.com:8080")); admin.clusters().createCluster("us-east1", - new ClusterData("http://broker.messaging.east1.example.com:8080")); + new ClusterDataImpl("http://broker.messaging.east1.example.com:8080")); admin.clusters().createCluster("us-east2", - new ClusterData("http://broker.messaging.east2.example.com:8080")); - admin.clusters().createCluster("global", new ClusterData()); + new ClusterDataImpl("http://broker.messaging.east2.example.com:8080")); + admin.clusters().createCluster("global", new ClusterDataImpl()); final String property = "peer-prop"; Set allowedClusters = Sets.newHashSet("us-west1", "us-west2", "us-west3", "us-west4", "us-east1", @@ -649,7 +649,7 @@ public void clusterFailureDomain() throws PulsarAdminException { final String cluster = pulsar.getConfiguration().getClusterName(); admin.clusters().createCluster(cluster, - new ClusterData(pulsar.getSafeWebServiceAddress(), pulsar.getWebServiceAddressTls())); + new ClusterDataImpl(pulsar.getSafeWebServiceAddress(), pulsar.getWebServiceAddressTls())); // create FailureDomain domain = new FailureDomain(); domain.setBrokers(Sets.newHashSet("b1", "b2", "b3")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java index 34ec6c0005cf0..d608b9f3d9a38 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java @@ -36,7 +36,7 @@ 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.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TransactionBufferStats; @@ -72,7 +72,7 @@ protected void setup() throws Exception { conf.setSystemTopicEnabled(true); conf.setTransactionBufferSnapshotMaxTransactionCount(1); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("pulsar", tenantInfo); admin.namespaces().createNamespace("pulsar/system", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java index bb9f54166aa83..8825385944ae9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java @@ -20,7 +20,7 @@ import static org.testng.Assert.fail; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.annotations.AfterClass; @@ -69,7 +69,7 @@ public void setup() throws Exception { try (PulsarAdmin admin = PulsarAdmin.builder() .authentication(new MockAuthentication("pass.pass")) .serviceHttpUrl(brokerUrl.toString()).build()) { - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("public", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java index 5c68a7bde34b1..75343435d9d3d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java @@ -28,7 +28,7 @@ import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.SubscriptionAuthMode; import org.testng.annotations.AfterClass; @@ -74,7 +74,7 @@ public void simple() throws Exception { assertFalse(auth.canLookup(TopicName.get("persistent://p1/c1/ns1/ds1"), "my-role", null)); - admin.clusters().createCluster("c1", new ClusterData()); + admin.clusters().createCluster("c1", new ClusterDataImpl()); admin.tenants().createTenant("p1", new TenantInfo(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); waitForChange(); admin.namespaces().createNamespace("p1/c1/ns1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java index 2175a3a231ad8..ed1001c6c2ae9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java @@ -23,7 +23,7 @@ import static org.mockito.Mockito.spy; import com.google.common.collect.Sets; import com.google.common.util.concurrent.MoreExecutors; -import com.google.common.util.concurrent.ThreadFactoryBuilder; + import java.lang.reflect.Field; import io.netty.channel.EventLoopGroup; import java.net.URI; @@ -34,8 +34,6 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; import java.util.function.Supplier; @@ -56,7 +54,7 @@ import org.apache.pulsar.client.api.ClientBuilder; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.tests.TestRetrySupport; @@ -315,7 +313,7 @@ protected void waitForZooKeeperWatchers() { protected TenantInfo createDefaultTenantInfo() throws PulsarAdminException { // create local cluster if not exist if (!admin.clusters().getClusters().contains(configClusterName)) { - admin.clusters().createCluster(configClusterName, new ClusterData()); + admin.clusters().createCluster(configClusterName, new ClusterDataImpl()); } Set allowedClusters = Sets.newHashSet(); allowedClusters.add(configClusterName); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java index a827912df1e5f..2853475882581 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java @@ -55,7 +55,7 @@ import org.apache.pulsar.common.naming.NamespaceBundles; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -168,7 +168,7 @@ void shutdown() throws Exception { private void createCluster(ZooKeeper zk, ServiceConfiguration config) throws Exception { ZkUtils.createFullPathOptimistic(zk, "/admin/clusters/" + config.getClusterName(), ObjectMapperFactory.getThreadLocal().writeValueAsBytes( - new ClusterData("http://" + config.getAdvertisedAddress() + ":" + config.getWebServicePort().get())), + new ClusterDataImpl("http://" + config.getAdvertisedAddress() + ":" + config.getWebServicePort().get())), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java index 5f0a1fb61defe..81ec0201002e0 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java @@ -33,7 +33,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; @@ -87,7 +87,7 @@ public void anErrorShouldBeThrowBeforeLeaderElected() throws PulsarServerExcepti final String namespace = "ns"; @Cleanup PulsarAdmin adminClient = PulsarAdmin.builder().serviceHttpUrl(pulsar.getWebServiceAddress()).build(); - adminClient.clusters().createCluster(clusterName, new ClusterData(pulsar.getWebServiceAddress())); + adminClient.clusters().createCluster(clusterName, new ClusterDataImpl(pulsar.getWebServiceAddress())); adminClient.tenants().createTenant(tenant, new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(clusterName))); adminClient.namespaces().createNamespace(tenant + "/" + namespace, 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java index 3414afbfbdb56..c64c8f906458d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java @@ -68,7 +68,7 @@ import org.apache.pulsar.common.naming.NamespaceBundles; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -493,7 +493,7 @@ public void testNamespaceIsolationPoliciesForPrimaryAndSecondaryBrokers() throws final String broker1Address = pulsar1.getAdvertisedAddress() + "0"; final String broker2Address = pulsar2.getAdvertisedAddress() + "1"; final String sharedBroker = "broker3"; - admin1.clusters().createCluster(cluster, new ClusterData("http://" + pulsar1.getAdvertisedAddress())); + admin1.clusters().createCluster(cluster, new ClusterDataImpl("http://" + pulsar1.getAdvertisedAddress())); admin1.tenants().createTenant(tenant, new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); admin1.namespaces().createNamespace(tenant + "/" + cluster + "/" + namespace); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java index 8fb06af370c83..a5642528700c1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/lookup/http/HttpTopicLookupv2Test.java @@ -51,7 +51,7 @@ import org.apache.pulsar.broker.web.PulsarWebResource; import org.apache.pulsar.broker.web.RestException; import org.apache.pulsar.common.naming.TopicDomain; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.zookeeper.ZooKeeperChildrenCache; import org.apache.pulsar.zookeeper.ZooKeeperDataCache; @@ -73,7 +73,7 @@ public class HttpTopicLookupv2Test { private ServiceConfiguration config; private ConfigurationCacheService mockConfigCache; private ZooKeeperChildrenCache clustersListCache; - private ZooKeeperDataCache clustersCache; + private ZooKeeperDataCache clustersCache; private ZooKeeperDataCache policiesCache; private Set clusters; @@ -93,9 +93,9 @@ public void setUp() throws Exception { clusters.add("use"); clusters.add("usc"); clusters.add("usw"); - ClusterData useData = new ClusterData("http://broker.messaging.use.example.com:8080"); - ClusterData uscData = new ClusterData("http://broker.messaging.usc.example.com:8080"); - ClusterData uswData = new ClusterData("http://broker.messaging.usw.example.com:8080"); + ClusterDataImpl useData = new ClusterDataImpl("http://broker.messaging.use.example.com:8080"); + ClusterDataImpl uscData = new ClusterDataImpl("http://broker.messaging.usc.example.com:8080"); + ClusterDataImpl uswData = new ClusterDataImpl("http://broker.messaging.usw.example.com:8080"); doReturn(config).when(pulsar).getConfiguration(); doReturn(mockConfigCache).when(pulsar).getConfigurationCache(); doReturn(clustersListCache).when(mockConfigCache).clustersListCache(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java index 8d5fe5ac31a6b..db9a4ade91c52 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java @@ -21,7 +21,7 @@ import com.google.common.collect.Sets; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -40,7 +40,7 @@ protected void setup() throws Exception { internalSetup(); String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java index df2e6a4128fdb..2f9a00c1e39ae 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupServiceTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterClass; @@ -245,6 +245,6 @@ public void testResourceGroupOps() throws PulsarAdminException, InterruptedExcep private static final int PUBLISH_INTERVAL_SECS = 500; private void prepareData() throws PulsarAdminException { this.conf.setResourceUsageTransportPublishIntervalInSecs(PUBLISH_INTERVAL_SECS); - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); } } \ No newline at end of file diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java index a8892b2ea8300..6d9d70f416282 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java @@ -32,11 +32,9 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TopicStats; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -251,7 +249,7 @@ private void prepareData() throws PulsarAdminException { this.conf.setAllowAutoTopicCreation(true); final String clusterName = "test"; - admin.clusters().createCluster(clusterName, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(clusterName, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant(TenantName, new TenantInfo(Sets.newHashSet("fakeAdminRole"), Sets.newHashSet(clusterName))); admin.namespaces().createNamespace(TenantAndNsName); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java index 89246d8d609de..1f9f735c9c078 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManagerTest.java @@ -23,7 +23,7 @@ import org.apache.pulsar.broker.service.resource.usage.ResourceUsage; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -115,6 +115,6 @@ public void acceptResourceUsage(String broker, ResourceUsage resourceUsage) { private void prepareData() throws PulsarAdminException { this.conf.setResourceUsageTransportClassName("org.apache.pulsar.broker.resourcegroup.ResourceUsageTransportManager"); this.conf.setResourceUsageTransportPublishIntervalInSecs(PUBLISH_INTERVAL_SECS); - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); } } \ No newline at end of file diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java index e73c437e81b49..29cc1097bedc2 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java @@ -46,7 +46,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.common.policies.data.BacklogQuota; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TopicStats; @@ -99,7 +99,7 @@ void setup() throws Exception { adminUrl = new URL("http://127.0.0.1" + ":" + pulsar.getListenPortHTTP().get()); admin = PulsarAdmin.builder().serviceHttpUrl(adminUrl.toString()).build(); - admin.clusters().createCluster("usc", new ClusterData(adminUrl.toString())); + admin.clusters().createCluster("usc", new ClusterDataImpl(adminUrl.toString())); admin.tenants().createTenant("prop", new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); admin.namespaces().createNamespace("prop/ns-quota"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java index 68fc1ed50884f..b8374b676c409 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java @@ -24,7 +24,7 @@ import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.tests.TestRetrySupport; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; @@ -98,7 +98,7 @@ protected void setup() throws Exception { admin = PulsarAdmin.builder().serviceHttpUrl(pulsar.getWebServiceAddress()).build(); - admin.clusters().createCluster("usc", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("usc", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("prop", new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); } catch (Throwable t) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java index b30150c691a98..1ee6a12114058 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java @@ -62,7 +62,7 @@ import org.apache.pulsar.common.policies.data.BookieAffinityGroupData; import org.apache.pulsar.common.policies.data.BookieInfo; import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfig; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -167,7 +167,7 @@ public void testBookieIsolation() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarService.getWebServiceAddress()).build(); - ClusterData clusterData = new ClusterData(pulsarService.getWebServiceAddress()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); @@ -310,7 +310,7 @@ public void testBookieIsolationWithSecondaryGroup() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarService.getWebServiceAddress()).build(); - ClusterData clusterData = new ClusterData(pulsarService.getWebServiceAddress()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); @@ -432,7 +432,7 @@ public void testDeleteIsolationGroup() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarService.getWebServiceAddress()).build(); - ClusterData clusterData = new ClusterData(pulsarService.getWebServiceAddress()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java index 4830efbb6861f..acf78c78aa734 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java @@ -18,10 +18,9 @@ */ package org.apache.pulsar.broker.service; -import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +43,7 @@ public void baseSetup(ServiceConfiguration serviceConfiguration) throws Exceptio } private void baseSetupCommon() throws Exception { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop/ns-abc"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java index b0dcb83d3c9ce..aa3e191a9e1e5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java @@ -32,7 +32,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.Assert; @@ -76,7 +76,7 @@ void setup() { String url = "http://127.0.0.1:" + pulsar.getListenPortHTTP().get(); admin = PulsarAdmin.builder().serviceHttpUrl(url).build(); - admin.clusters().createCluster("max_message_test", new ClusterData(url)); + admin.clusters().createCluster("max_message_test", new ClusterDataImpl(url)); admin.tenants() .createTenant("test", new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("max_message_test"))); admin.namespaces().createNamespace("test/message", Sets.newHashSet("max_message_test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java index dc23429dfc7b8..fd544f266fc50 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java @@ -71,7 +71,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.BacklogQuota.RetentionPolicy; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ReplicatorStats; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; @@ -206,7 +206,7 @@ public Void call() throws Exception { public void activeBrokerParse() throws Exception { pulsar1.getConfiguration().setAuthorizationEnabled(true); //init clusterData - ClusterData cluster2Data = new ClusterData(); + ClusterDataImpl cluster2Data = new ClusterDataImpl(); String cluster2ServiceUrls = String.format("%s,localhost:1234,localhost:5678", pulsar2.getWebServiceAddress()); cluster2Data.setServiceUrl(cluster2ServiceUrls); String cluster2 = "activeCLuster2"; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java index aeaacf90bfdff..c97b24fb41934 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java @@ -47,7 +47,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.TypedMessageBuilder; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.apache.pulsar.zookeeper.ZookeeperServerTest; @@ -156,11 +156,11 @@ protected void setup() throws Exception { admin3 = PulsarAdmin.builder().serviceHttpUrl(url3.toString()).build(); // Provision the global namespace - admin1.clusters().createCluster("r1", new ClusterData(url1.toString(), urlTls1.toString(), + admin1.clusters().createCluster("r1", new ClusterDataImpl(url1.toString(), urlTls1.toString(), pulsar1.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r2", new ClusterData(url2.toString(), urlTls2.toString(), + admin1.clusters().createCluster("r2", new ClusterDataImpl(url2.toString(), urlTls2.toString(), pulsar2.getSafeBrokerServiceUrl(), pulsar2.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r3", new ClusterData(url3.toString(), urlTls3.toString(), + admin1.clusters().createCluster("r3", new ClusterDataImpl(url3.toString(), urlTls3.toString(), pulsar3.getSafeBrokerServiceUrl(), pulsar3.getBrokerServiceUrlTls())); admin1.tenants().createTenant("pulsar", @@ -176,7 +176,7 @@ protected void setup() throws Exception { assertEquals(admin2.clusters().getCluster("r3").getBrokerServiceUrl(), pulsar3.getSafeBrokerServiceUrl()); // Also create V1 namespace for compatibility check - admin1.clusters().createCluster("global", new ClusterData("http://global:8080", "https://global:8443")); + admin1.clusters().createCluster("global", new ClusterDataImpl("http://global:8080", "https://global:8443")); admin1.namespaces().createNamespace("pulsar/global/ns"); admin1.namespaces().setNamespaceReplicationClusters("pulsar/global/ns", Sets.newHashSet("r1", "r2", "r3")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java index 4d2b8cf3f003f..95cf9f95cb0ed 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java @@ -25,7 +25,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TopicPolicies; import org.awaitility.Awaitility; @@ -205,7 +205,7 @@ public void testCacheCleanup() throws Exception { } private void prepareData() throws PulsarAdminException { - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant("system-topic", new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NAMESPACE1); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java index 6b287bf29dcd8..27e3666414325 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java @@ -46,7 +46,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; import org.apache.pulsar.metadata.api.extended.SessionEvent; @@ -117,7 +117,7 @@ void setup() throws Exception { leaderAdmin = pulsarAdmins[0]; Thread.sleep(1000); - pulsarAdmins[0].clusters().createCluster(testCluster, new ClusterData(pulsarServices[0].getWebServiceAddress())); + pulsarAdmins[0].clusters().createCluster(testCluster, new ClusterDataImpl(pulsarServices[0].getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(); tenantInfo.setAllowedClusters(Sets.newHashSet(testCluster)); pulsarAdmins[0].tenants().createTenant(testTenant, tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java index eb08913fca727..8c5ec2478c111 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.common.events.TopicPoliciesEvent; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TopicPolicies; import org.slf4j.Logger; @@ -123,7 +123,7 @@ public void checkSystemTopic() throws PulsarAdminException { } private void prepareData() throws PulsarAdminException { - admin.clusters().createCluster("test", new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant("system-topic", new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NAMESPACE1); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java index c1913ec4e4517..59a95fb355abe 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java @@ -53,7 +53,7 @@ import org.apache.pulsar.common.events.EventsTopicNames; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.awaitility.Awaitility; @@ -85,7 +85,7 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java index a672149494343..c7395f480ff22 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java @@ -28,7 +28,7 @@ import org.apache.pulsar.client.impl.transaction.TransactionImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.awaitility.Awaitility; @@ -53,7 +53,7 @@ public void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant("public", new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java index 644ea9e3326dc..2c137ba81be4c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java @@ -42,7 +42,7 @@ import org.apache.pulsar.common.api.proto.MessageIdData; import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.api.proto.TxnAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.protocol.Commands; import org.awaitility.Awaitility; @@ -69,7 +69,7 @@ public void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant("public", new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java index a5bae35d6ec48..55e03ecfcb569 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java @@ -56,7 +56,7 @@ import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.protocol.Commands; import org.awaitility.Awaitility; @@ -87,7 +87,7 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java index e66333bc8d8a9..a0b7fb17dd46e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java @@ -54,7 +54,7 @@ import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.common.api.proto.TxnAction; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.awaitility.Awaitility; @@ -85,7 +85,7 @@ public class TransactionBufferClientTest extends TransactionMetaStoreTestBase { @Override protected void afterSetup() throws Exception { - pulsarAdmins[0].clusters().createCluster("my-cluster", new ClusterData(pulsarServices[0].getWebServiceAddress())); + pulsarAdmins[0].clusters().createCluster("my-cluster", new ClusterDataImpl(pulsarServices[0].getWebServiceAddress())); pulsarAdmins[0].tenants().createTenant("public", new TenantInfo(Sets.newHashSet(), Sets.newHashSet("my-cluster"))); pulsarAdmins[0].namespaces().createNamespace(namespace, 10); pulsarAdmins[0].topics().createPartitionedTopic(partitionedTopicName.getPartitionedTopicName(), partitions); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java index e7f1b8c7814c4..8d05b80e4bad1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java @@ -56,7 +56,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; @@ -86,7 +86,7 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java index 893715395fef5..4d7159311dbc6 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java @@ -39,7 +39,7 @@ import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -63,7 +63,7 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java index db7d1a81da81e..021c3b0f6a4f1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java @@ -41,7 +41,7 @@ import org.apache.pulsar.client.api.transaction.TxnID; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.collections.BitSetRecyclable; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; @@ -80,7 +80,7 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java index da2442675b5d5..d50ab5312f013 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java @@ -46,7 +46,7 @@ import org.apache.pulsar.client.api.transaction.Transaction; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -68,7 +68,7 @@ public void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java index 5036f078264b4..e24861a14b0bc 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java @@ -63,7 +63,7 @@ import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.client.admin.PulsarAdminException.ConflictException; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.SecurityUtility; @@ -283,7 +283,7 @@ public void testMaxRequestSize() throws Exception { // Create local cluster String localCluster = "test"; String clusterPath = PulsarWebResource.path("clusters", localCluster); - pulsar.getPulsarResources().getClusterResources().create(clusterPath, new ClusterData()); + pulsar.getPulsarResources().getClusterResources().create(clusterPath, new ClusterDataImpl()); TenantInfo info2 = new TenantInfo(); info2.setAdminRoles(Collections.singleton(StringUtils.repeat("*", 1 * 1024))); info2.setAllowedClusters(Sets.newHashSet(localCluster)); @@ -434,7 +434,7 @@ public CompletableFuture create(String serverList, SessionType sessio try { pulsarAdmin.clusters().createCluster(config.getClusterName(), - new ClusterData(pulsar.getSafeWebServiceAddress())); + new ClusterDataImpl(pulsar.getSafeWebServiceAddress())); } catch (ConflictException ce) { // This is OK. } finally { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java index 6bf84b3a4dcb6..acd631ed71c6e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperSessionExpireRecoveryTest.java @@ -25,7 +25,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.zookeeper.KeeperException.Code; import org.apache.zookeeper.MockZooKeeper; import org.testng.annotations.AfterMethod; @@ -52,7 +52,7 @@ protected void cleanup() throws Exception { */ @Test public void testSessionExpired() throws Exception { - admin.clusters().createCluster("my-cluster", new ClusterData("test-url")); + admin.clusters().createCluster("my-cluster", new ClusterDataImpl("test-url")); assertTrue(Sets.newHashSet(admin.clusters().getClusters()).contains("my-cluster")); @@ -64,12 +64,12 @@ public void testSessionExpired() throws Exception { assertTrue(Sets.newHashSet(admin.clusters().getClusters()).contains("my-cluster")); try { - admin.clusters().createCluster("my-cluster-2", new ClusterData("test-url")); + admin.clusters().createCluster("my-cluster-2", new ClusterDataImpl("test-url")); fail("Should have failed, because global zk is down"); } catch (PulsarAdminException e) { // Ok } - admin.clusters().createCluster("cluster-2", new ClusterData("test-url")); + admin.clusters().createCluster("cluster-2", new ClusterDataImpl("test-url")); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java index f6fa07c3123e7..c8a8d84cc365a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java @@ -37,7 +37,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationBasic; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.zookeeper.KeeperException.Code; import org.slf4j.Logger; @@ -171,7 +171,7 @@ public void testTlsSyncProducerAndConsumer(int batchMessageDelayMs) throws Excep authTls.configure(authParams); internalSetup(authTls); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); @@ -189,7 +189,7 @@ public void testBasicCryptSyncProducerAndConsumer(int batchMessageDelayMs) throw authPassword.configure("{\"userId\":\"superUser\",\"password\":\"supepass\"}"); internalSetup(authPassword); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); @@ -207,7 +207,7 @@ public void testBasicArp1SyncProducerAndConsumer(int batchMessageDelayMs) throws authPassword.configure("{\"userId\":\"superUser2\",\"password\":\"superpassword\"}"); internalSetup(authPassword); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); @@ -229,7 +229,7 @@ public void testAnonymousSyncProducerAndConsumer(int batchMessageDelayMs) throws authTls.configure(authParams); internalSetup(authTls); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("anonymousUser"), Sets.newHashSet("test"))); @@ -270,7 +270,7 @@ public void testAuthenticationFilterNegative() throws Exception { internalSetup(authTls); final String cluster = "test"; - final ClusterData clusterData = new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + final ClusterDataImpl clusterData = new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls()); try { admin.clusters().createCluster(cluster, clusterData); @@ -298,7 +298,7 @@ public void testInternalServerExceptionOnLookup() throws Exception { authTls.configure(authParams); internalSetup(authTls); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java index 6904943af4996..23e73b7c7c620 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.tls.PublicSuffixMatcher; import org.apache.pulsar.common.tls.TlsHostnameVerifier; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -117,7 +117,7 @@ protected void setupClient() throws Exception { .tlsTrustCertsFilePath(TLS_MIM_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(true) .authentication(authTls).enableTls(true).enableTlsHostnameVerification(hostnameVerificationEnabled)); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java index c6751d6504a84..deb04e4c2100f 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java @@ -48,12 +48,11 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; -import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.RestException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -130,7 +129,7 @@ public void testProducerAndConsumerAuthorization() throws Exception { .operationTimeout(1000, TimeUnit.MILLISECONDS) .authentication(authenticationInvalidRole).build(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); @@ -195,7 +194,7 @@ public void testSubscriberPermission() throws Exception { Authentication authentication = new ClientAuthentication(subscriptionRole); - superAdmin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + superAdmin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); superAdmin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet(tenantRole), Sets.newHashSet("test"))); @@ -292,7 +291,7 @@ public void testSubscriptionPrefixAuthorization() throws Exception { .authentication(authentication)); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop-prefix", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java index 6ce907ceaf661..2f37a2c57926e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java @@ -83,7 +83,7 @@ import org.apache.pulsar.common.naming.ServiceUnitId; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.SecurityUtility; @@ -271,7 +271,7 @@ public void testMultipleBrokerDifferentClusterLookup() throws Exception { String broker2ServiceUrl = "pulsar://localhost:" + conf2.getBrokerServicePort().get(); admin.clusters().createCluster(newCluster, - new ClusterData(pulsar.getWebServiceAddress(), null, broker2ServiceUrl, null)); + new ClusterDataImpl(pulsar.getWebServiceAddress(), null, broker2ServiceUrl, null)); admin.tenants().createTenant(property, new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(newCluster))); admin.namespaces().createNamespace(property + "/" + newCluster + "/my-ns"); @@ -1085,7 +1085,7 @@ public void testPartitionedMetadataWithDeprecatedVersion() throws Exception { final int totalPartitions = 10; final TopicName dest = TopicName.get("persistent", property, cluster, namespace, topicName); admin.clusters().createCluster(cluster, - new ClusterData(pulsar.getWebServiceAddress(), null, null, null)); + new ClusterDataImpl(pulsar.getWebServiceAddress(), null, null, null)); admin.tenants().createTenant(property, new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); admin.namespaces().createNamespace(property + "/" + cluster + "/" + namespace); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java index 18de76eed9a10..0e04bb7aa686d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java @@ -46,7 +46,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.impl.BatchMessageIdImpl; import org.apache.pulsar.client.impl.MessageIdImpl; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TopicStats; @@ -106,7 +106,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(url.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(url.toString()); admin.clusters().createCluster(config.getClusterName(), clusterData); if (pulsarClient != null) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java index 7bb2699108688..e58f21a5c4799 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java @@ -38,7 +38,7 @@ import org.apache.pulsar.broker.service.BrokerService; import org.apache.pulsar.broker.service.persistent.DispatchRateLimiter; import org.apache.pulsar.broker.service.persistent.PersistentTopic; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.Policies; import org.slf4j.Logger; @@ -668,7 +668,7 @@ public void testGlobalNamespaceThrottling() throws Exception { final int messageRate = 5; DispatchRate dispatchRate = new DispatchRate(messageRate, -1, 360); - admin.clusters().createCluster("global", new ClusterData("http://global:8080")); + admin.clusters().createCluster("global", new ClusterDataImpl("http://global:8080")); admin.namespaces().createNamespace(namespace); admin.namespaces().setNamespaceReplicationClusters(namespace, Sets.newHashSet("test")); admin.namespaces().setDispatchRate(namespace, dispatchRate); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java index deaee353c7e26..3018ed0c4a1ae 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java @@ -59,7 +59,7 @@ import org.apache.pulsar.client.impl.ProducerImpl; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NonPersistentPublisherStats; import org.apache.pulsar.common.policies.data.NonPersistentSubscriptionStats; import org.apache.pulsar.common.policies.data.NonPersistentTopicStats; @@ -1004,14 +1004,14 @@ void setupReplicationCluster() throws Exception { admin3 = PulsarAdmin.builder().serviceHttpUrl(url3.toString()).build(); // Provision the global namespace - admin1.clusters().createCluster("r1", new ClusterData(url1.toString(), null, pulsar1.getSafeBrokerServiceUrl(), + admin1.clusters().createCluster("r1", new ClusterDataImpl(url1.toString(), null, pulsar1.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r2", new ClusterData(url2.toString(), null, pulsar2.getSafeBrokerServiceUrl(), + admin1.clusters().createCluster("r2", new ClusterDataImpl(url2.toString(), null, pulsar2.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("r3", new ClusterData(url3.toString(), null, pulsar3.getSafeBrokerServiceUrl(), + admin1.clusters().createCluster("r3", new ClusterDataImpl(url3.toString(), null, pulsar3.getSafeBrokerServiceUrl(), pulsar1.getBrokerServiceUrlTls())); - admin1.clusters().createCluster("global", new ClusterData("http://global:8080")); + admin1.clusters().createCluster("global", new ClusterDataImpl("http://global:8080")); admin1.tenants().createTenant("pulsar", new TenantInfo( Sets.newHashSet("appid1", "appid2", "appid3"), Sets.newHashSet("r1", "r2", "r3"))); admin1.namespaces().createNamespace("pulsar/global/ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java index 27e3131335c5b..288e4a961c7bb 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java @@ -25,7 +25,7 @@ import java.util.Set; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.BeforeMethod; @@ -39,7 +39,7 @@ public void beforeMethod(Method m) throws Exception { } protected void producerBaseSetup() throws Exception { - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java index 0b45289eaf581..4b0882f1eaa6e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java @@ -44,7 +44,7 @@ import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.client.impl.conf.ClientConfigurationData; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -109,7 +109,7 @@ protected void customizeNewPulsarClientBuilder(ClientBuilder clientBuilder) { } @Test public void testFindBrokerWithListenerName() throws Exception { - admin.clusters().createCluster("localhost", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("localhost", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(); tenantInfo.setAllowedClusters(Sets.newHashSet("localhost")); this.admin.tenants().createTenant("public", tenantInfo); @@ -149,7 +149,7 @@ private void doFindBrokerWithListenerName(boolean useHttp) throws Exception { @Test public void testHttpLookupRedirect() throws Exception { - admin.clusters().createCluster("localhost", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("localhost", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(); tenantInfo.setAllowedClusters(Sets.newHashSet("localhost")); this.admin.tenants().createTenant("public", tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java index 11e4daa4f79bd..58245fe954a1e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java @@ -21,7 +21,7 @@ import com.google.common.collect.Sets; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -47,7 +47,7 @@ protected void cleanup() throws Exception { public void testMaxTenant() throws Exception { conf.setMaxTenants(2); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant1", tenantInfo); admin.tenants().createTenant("testTenant2", tenantInfo); @@ -61,7 +61,7 @@ public void testMaxTenant() throws Exception { super.internalCleanup(); conf.setMaxTenants(0); super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); for (int i = 0; i < 10; i++) { admin.tenants().createTenant("testTenant-unlimited" + i, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java index bd758c205568c..7230477ab0f86 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java @@ -28,7 +28,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.annotations.*; @@ -102,7 +102,7 @@ protected void internalSetUpForNamespace() throws Exception { admin = spy(PulsarAdmin.builder().serviceHttpUrl(brokerUrlTls.toString()) .tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(false) .authentication(AuthenticationTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java index 51d755a0b4d76..86bd1cdff5592 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java @@ -28,7 +28,7 @@ import java.util.concurrent.TimeUnit; import org.apache.pulsar.broker.authentication.AuthenticationProviderToken; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -129,7 +129,7 @@ public void testTokenProducerAndConsumer() throws Exception { clientSetup(); // test rest by admin - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java index d2a5eef230ad9..55b3d2edbeefa 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java @@ -35,12 +35,11 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.impl.ProducerImpl; import org.apache.pulsar.client.impl.auth.oauth2.AuthenticationFactoryOAuth2; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; @@ -152,7 +151,7 @@ public void testTokenProducerAndConsumer() throws Exception { clientSetup(); // test rest by admin - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); @@ -169,7 +168,7 @@ public void testOAuth2TokenRefreshedWithoutReconnect() throws Exception { clientSetup(); // test rest by admin - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java index 1119a3e76529b..3a57a89dcf43d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java @@ -24,7 +24,7 @@ import java.util.Set; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.BeforeMethod; @@ -38,7 +38,7 @@ public void beforeMethod(Method m) throws Exception { } public void producerBaseSetup() throws Exception { - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java index 5142bbdf4efd9..912e172c9eb67 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java @@ -47,7 +47,7 @@ import org.apache.pulsar.client.api.ProducerConsumerBase; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.tls.NoopHostnameVerifier; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.keystoretls.KeyStoreSSLContext; import org.glassfish.jersey.client.ClientConfig; @@ -177,7 +177,7 @@ PulsarAdmin buildAdminClient() throws Exception { @Test public void testSuperUserCanListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", new TenantInfo(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); @@ -188,7 +188,7 @@ public void testSuperUserCanListTenants() throws Exception { @Test public void testSuperUserCantListNamespaces() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", new TenantInfo(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); @@ -200,7 +200,7 @@ public void testSuperUserCantListNamespaces() throws Exception { @Test public void testAuthorizedUserAsOriginalPrincipal() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", new TenantInfo(ImmutableSet.of("proxy", "user1"), ImmutableSet.of("test"))); @@ -219,7 +219,7 @@ public void testPersistentList() throws Exception { log.info("-- Starting {} test --", methodName); try (PulsarAdmin admin = buildAdminClient()) { - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", new TenantInfo(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java index f7ce13b9203b8..859a8f3b0a858 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java @@ -92,7 +92,7 @@ import org.apache.pulsar.client.impl.schema.writer.JacksonJsonWriter; import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.protocol.PulsarHandler; import org.apache.pulsar.common.util.FutureUtil; @@ -745,7 +745,7 @@ public long getTimestamp() { public void testCleanProducer() throws Exception { log.info("-- Starting {} test --", methodName); - admin.clusters().createCluster("global", new ClusterData()); + admin.clusters().createCluster("global", new ClusterDataImpl()); admin.namespaces().createNamespace("my-property/global/lookup"); final int operationTimeOut = 500; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java index 5feef1b622599..8958f6ac12643 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java @@ -23,7 +23,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.api.PulsarClientException.InvalidConfigurationException; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -39,7 +39,7 @@ public class ConsumerConfigurationTest extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java index c79cb5d1eea8d..65bbfa11d43ce 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java @@ -39,7 +39,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -155,7 +155,7 @@ protected void internalSetUpForNamespace() throws Exception { .tlsTrustStorePassword(BROKER_TRUSTSTORE_PW) .allowTlsInsecureConnection(false) .authentication(AuthenticationKeyStoreTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java index 185df02b122fb..81487a78ed871 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java @@ -37,7 +37,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -141,7 +141,7 @@ protected void internalSetUpForNamespace() throws Exception { .tlsTrustStorePassword(BROKER_TRUSTSTORE_PW) .allowTlsInsecureConnection(true) .authentication(AuthenticationKeyStoreTls.class.getName(), authParams).build()); - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java index 78d9d1c360c21..33bc3789a8023 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java @@ -42,7 +42,7 @@ import org.apache.pulsar.common.api.raw.MessageParser; import org.apache.pulsar.common.api.raw.RawMessage; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.annotations.AfterClass; @@ -56,7 +56,7 @@ public class MessageParserTest extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-tenant", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-tenant/my-ns", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java index ebdfb52d0aac4..f536d7591971e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java @@ -47,7 +47,7 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.RetentionPolicies; @@ -71,7 +71,7 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); Policies policies = new Policies(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java index 63360440ee307..865a76be02541 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.RawReader; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.api.proto.MessageMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; import org.testng.Assert; @@ -61,7 +61,7 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java index 6d27b5b98c08a..87907dded2de2 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java @@ -50,7 +50,7 @@ import org.apache.pulsar.client.api.ReaderBuilder; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.Murmur3_32Hash; @@ -71,7 +71,7 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java index a12b000a5abcd..5db0bef2736b5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java @@ -26,7 +26,7 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -45,7 +45,7 @@ protected void setup() throws Exception { this.conf.setBrokerDeleteInactiveTopicsFrequencySeconds(5); admin.clusters().createCluster("test", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java index 898e534ed870a..200f4f32320b2 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java @@ -38,7 +38,7 @@ import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.api.TopicMetadata; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -959,7 +959,7 @@ public void testDefaultBacklogTTL() throws Exception { final String topicName = "persistent://" + namespace + "/expiry"; final String subName = "expiredSub"; - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", new TenantInfo(null, Sets.newHashSet("use"))); admin.namespaces().createNamespace(namespace); @@ -1093,7 +1093,7 @@ public void multiTopicsInDifferentNameSpace() throws PulsarAdminException, Pulsa topics.add("persistent://prop/use/ns-abc/topic-1"); topics.add("persistent://prop/use/ns-abc/topic-2"); topics.add("persistent://prop/use/ns-abc1/topic-3"); - admin.clusters().createCluster("use", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", new TenantInfo(null, Sets.newHashSet("use"))); admin.namespaces().createNamespace("prop/use/ns-abc"); admin.namespaces().createNamespace("prop/use/ns-abc1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java index 46d8928b922a7..789d9229c4aa7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java @@ -27,7 +27,6 @@ import com.google.common.collect.Sets; import java.lang.reflect.Field; -import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.ArrayList; @@ -66,14 +65,13 @@ import org.apache.pulsar.common.api.proto.CommandAck; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.apache.pulsar.transaction.coordinator.TransactionMetadataStore; import org.apache.pulsar.transaction.coordinator.TransactionSubscription; -import org.apache.pulsar.transaction.coordinator.TxnMeta; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -101,7 +99,7 @@ protected void setup() throws Exception { String[] brokerServiceUrlArr = getPulsarServiceList().get(0).getBrokerServiceUrl().split(":"); String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData("http://localhost:" + webServicePort)); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java index 7a909714ce2cf..8f4c6864b0167 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java @@ -52,7 +52,7 @@ import org.apache.pulsar.client.api.RawMessage; import org.apache.pulsar.client.impl.RawMessageImpl; import org.apache.pulsar.common.api.proto.MessageIdData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.FutureUtil; import org.testng.Assert; @@ -79,7 +79,7 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("use", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java index 25c153d5db212..34679666e8023 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java @@ -62,7 +62,7 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.client.impl.BatchMessageIdImpl; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -83,7 +83,7 @@ public class CompactionTest extends MockedPulsarServiceBaseTest { public void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("use", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java index 69884f1499b29..060915e0fc2db 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java @@ -45,7 +45,7 @@ import org.apache.pulsar.client.api.RawMessage; import org.apache.pulsar.client.impl.RawMessageImpl; import org.apache.pulsar.common.protocol.Commands; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -63,7 +63,7 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("use", - new ClusterData(pulsar.getWebServiceAddress())); + new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java index 87a664fec0045..6b2a24600de00 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java @@ -60,7 +60,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationToken; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.TopicStats; @@ -171,7 +171,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(brokerWebServiceUrl.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(brokerWebServiceUrl.toString()); superUserAdmin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java index 1a000433c92ca..1e75401b2ea9a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java @@ -73,7 +73,7 @@ import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.PublisherStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; @@ -250,7 +250,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // create cluster metadata - ClusterData clusterData = new ClusterData(urlTls.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(urlTls.toString()); admin.clusters().createCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder() diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java index 054a66da62fa1..a41a7dbb0f45c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java @@ -63,7 +63,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -176,7 +176,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(urlTls.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(urlTls.toString()); admin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java index b288911c464fd..a7461cee1076c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java @@ -44,7 +44,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.proto.Function.Assignment; @@ -108,7 +108,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - final ClusterData clusterData = new ClusterData(pulsar.getBrokerServiceUrl()); + final ClusterDataImpl clusterData = new ClusterDataImpl(pulsar.getBrokerServiceUrl()); admin.clusters().updateCluster(config.getClusterName(), clusterData); final ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java index d5d83bd796cc2..4f9ddafa723b9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java @@ -27,13 +27,9 @@ import static org.mockito.Mockito.spy; import static org.testng.Assert.assertTrue; -import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; import java.lang.reflect.Method; -import java.net.HttpURLConnection; -import java.net.URL; import java.nio.file.Files; import java.util.Arrays; import java.util.HashMap; @@ -41,9 +37,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.TreeMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.apache.pulsar.broker.PulsarService; import org.apache.pulsar.broker.ServiceConfiguration; @@ -57,7 +50,7 @@ import org.apache.pulsar.client.api.ClientBuilder; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -80,8 +73,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import lombok.ToString; - public abstract class AbstractPulsarE2ETest { public static final Logger log = LoggerFactory.getLogger(AbstractPulsarE2ETest.class); @@ -188,7 +179,7 @@ public void setup(Method method) throws Exception { primaryHost = String.format("http://%s:%d", "localhost", pulsar.getListenPortHTTP().get()); // update cluster metadata - ClusterData clusterData = new ClusterData(pulsar.getBrokerServiceUrlTls()); + ClusterDataImpl clusterData = new ClusterDataImpl(pulsar.getBrokerServiceUrlTls()); admin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java index 63f57f041e051..074ca66bf84f8 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java @@ -43,7 +43,7 @@ import org.apache.pulsar.client.api.ClientBuilder; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; @@ -139,7 +139,7 @@ void setup(Method method) throws Exception { primaryHost = pulsar.getWebServiceAddress(); // update cluster metadata - ClusterData clusterData = new ClusterData(urlTls.toString()); + ClusterDataImpl clusterData = new ClusterDataImpl(urlTls.toString()); admin.clusters().updateCluster(config.getClusterName(), clusterData); ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(this.workerConfig.getPulsarServiceUrl()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java index 04b5d17ad6541..cbfe42fdb936e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java @@ -28,7 +28,7 @@ import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.client.api.schema.GenericRecord; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -51,7 +51,7 @@ protected void setup() throws Exception { isTcpLookup = true; super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java index fe720a1f7a6a0..d557d616c86bb 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java @@ -64,7 +64,7 @@ import org.apache.pulsar.client.impl.schema.generic.GenericJsonRecord; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.schema.KeyValue; @@ -89,7 +89,7 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); TenantInfo tenantInfo = new TenantInfo(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java index fcf223ff5c32d..5f29eaa2ccb66 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java @@ -38,7 +38,7 @@ 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.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.schema.SchemaInfo; @@ -61,7 +61,7 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); TenantInfo tenantInfo = new TenantInfo(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java index 61cc989d49b0d..afeff0ea7734c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicDomain; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.schema.SchemaInfo; @@ -60,7 +60,7 @@ public void setup() throws Exception { super.internalSetup(); // Setup namespaces - admin.clusters().createCluster(CLUSTER_NAME, new ClusterData(pulsar.getBrokerServiceUrl())); + admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); TenantInfo tenantInfo = new TenantInfo(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java index 96ee82510b50d..93903d144fc8d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java @@ -35,7 +35,7 @@ import org.apache.pulsar.broker.authorization.AuthorizationService; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.websocket.WebSocketService; @@ -87,7 +87,7 @@ public void test() throws Exception { assertFalse(auth.canLookup(TopicName.get("persistent://p1/c1/ns1/ds1"), "my-role", null)); - admin.clusters().createCluster(configClusterName, new ClusterData()); + admin.clusters().createCluster(configClusterName, new ClusterDataImpl()); admin.tenants().createTenant("p1", new TenantInfo(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); waitForChange(); admin.namespaces().createNamespace("p1/c1/ns1"); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java index f50fe30323379..da916faa055ba 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java @@ -28,7 +28,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterDataInterface; +import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @@ -89,7 +89,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - ClusterDataInterface getCluster(String cluster) throws PulsarAdminException; + ClusterData getCluster(String cluster) throws PulsarAdminException; /** * Get the configuration data for the specified cluster asynchronously. @@ -106,7 +106,7 @@ public interface Clusters { * @return the cluster configuration * */ - CompletableFuture getClusterAsync(String cluster); + CompletableFuture getClusterAsync(String cluster); /** * Create a new cluster. @@ -127,7 +127,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - void createCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException; + void createCluster(String cluster, ClusterData clusterData) throws PulsarAdminException; /** * Create a new cluster asynchronously. @@ -142,7 +142,7 @@ public interface Clusters { * the cluster configuration object * */ - CompletableFuture createClusterAsync(String cluster, ClusterDataInterface clusterData); + CompletableFuture createClusterAsync(String cluster, ClusterData clusterData); /** * Update the configuration for a cluster. @@ -161,7 +161,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - void updateCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException; + void updateCluster(String cluster, ClusterData clusterData) throws PulsarAdminException; /** * Update the configuration for a cluster asynchronously. @@ -174,7 +174,7 @@ public interface Clusters { * the cluster configuration object * */ - CompletableFuture updateClusterAsync(String cluster, ClusterDataInterface clusterData); + CompletableFuture updateClusterAsync(String cluster, ClusterData clusterData); /** * Update peer cluster names. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java similarity index 97% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java index 8f8d05b9eb517..5575f365ceff8 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java @@ -21,7 +21,7 @@ import java.util.LinkedHashSet; import org.apache.pulsar.client.api.ProxyProtocol; -public interface ClusterDataInterface { +public interface ClusterData { String getServiceUrl(); String getServiceUrlTls(); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index 1aa2ffbd04442..23c22ef31f3e1 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -37,8 +37,8 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @@ -86,7 +86,7 @@ public void failed(Throwable throwable) { } @Override - public ClusterDataInterface getCluster(String cluster) throws PulsarAdminException { + public ClusterData getCluster(String cluster) throws PulsarAdminException { try { return getClusterAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -100,13 +100,13 @@ public ClusterDataInterface getCluster(String cluster) throws PulsarAdminExcepti } @Override - public CompletableFuture getClusterAsync(String cluster) { + public CompletableFuture getClusterAsync(String cluster) { WebTarget path = adminClusters.path(cluster); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(ClusterData clusterData) { + public void completed(ClusterDataImpl clusterData) { future.complete(clusterData); } @@ -119,7 +119,7 @@ public void failed(Throwable throwable) { } @Override - public void createCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException { + public void createCluster(String cluster, ClusterData clusterData) throws PulsarAdminException { try { createClusterAsync(cluster, clusterData).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -133,13 +133,13 @@ public void createCluster(String cluster, ClusterDataInterface clusterData) thro } @Override - public CompletableFuture createClusterAsync(String cluster, ClusterDataInterface clusterData) { + public CompletableFuture createClusterAsync(String cluster, ClusterData clusterData) { WebTarget path = adminClusters.path(cluster); - return asyncPutRequest(path, Entity.entity((ClusterData) clusterData, MediaType.APPLICATION_JSON)); + return asyncPutRequest(path, Entity.entity((ClusterDataImpl) clusterData, MediaType.APPLICATION_JSON)); } @Override - public void updateCluster(String cluster, ClusterDataInterface clusterData) throws PulsarAdminException { + public void updateCluster(String cluster, ClusterData clusterData) throws PulsarAdminException { try { updateClusterAsync(cluster, clusterData).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -153,9 +153,9 @@ public void updateCluster(String cluster, ClusterDataInterface clusterData) thro } @Override - public CompletableFuture updateClusterAsync(String cluster, ClusterDataInterface clusterData) { + public CompletableFuture updateClusterAsync(String cluster, ClusterData clusterData) { WebTarget path = adminClusters.path(cluster); - return asyncPostRequest(path, Entity.entity((ClusterData) clusterData, MediaType.APPLICATION_JSON_TYPE)); + return asyncPostRequest(path, Entity.entity((ClusterDataImpl) clusterData, MediaType.APPLICATION_JSON_TYPE)); } @Override diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java index 150d0f05b67ce..357e5b494ae08 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java @@ -73,7 +73,7 @@ import org.apache.pulsar.common.policies.data.BookiesClusterInfo; import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.FailureDomain; @@ -189,10 +189,10 @@ public void clusters() throws Exception { verify(mockClusters).getCluster("use"); clusters.run(split("create use --url http://my-service.url:8080")); - verify(mockClusters).createCluster("use", new ClusterData("http://my-service.url:8080", null)); + verify(mockClusters).createCluster("use", new ClusterDataImpl("http://my-service.url:8080", null)); clusters.run(split("update use --url http://my-service.url:8080")); - verify(mockClusters).updateCluster("use", new ClusterData("http://my-service.url:8080", null)); + verify(mockClusters).updateCluster("use", new ClusterDataImpl("http://my-service.url:8080", null)); clusters.run(split("delete use")); verify(mockClusters).deleteCluster("use"); @@ -222,12 +222,12 @@ public void clusters() throws Exception { clusters.run( split("create my-cluster --url http://my-service.url:8080 --url-secure https://my-service.url:4443")); verify(mockClusters).createCluster("my-cluster", - new ClusterData("http://my-service.url:8080", "https://my-service.url:4443")); + new ClusterDataImpl("http://my-service.url:8080", "https://my-service.url:4443")); clusters.run( split("update my-cluster --url http://my-service.url:8080 --url-secure https://my-service.url:4443")); verify(mockClusters).updateCluster("my-cluster", - new ClusterData("http://my-service.url:8080", "https://my-service.url:4443")); + new ClusterDataImpl("http://my-service.url:8080", "https://my-service.url:4443")); clusters.run(split("delete my-cluster")); verify(mockClusters).deleteCluster("my-cluster"); @@ -243,10 +243,10 @@ public void clusters() throws Exception { clusters = new CmdClusters(() -> admin); clusters.run(split("create my-secure-cluster --url-secure https://my-service.url:4443")); - verify(mockClusters).createCluster("my-secure-cluster", new ClusterData(null, "https://my-service.url:4443")); + verify(mockClusters).createCluster("my-secure-cluster", new ClusterDataImpl(null, "https://my-service.url:4443")); clusters.run(split("update my-secure-cluster --url-secure https://my-service.url:4443")); - verify(mockClusters).updateCluster("my-secure-cluster", new ClusterData(null, "https://my-service.url:4443")); + verify(mockClusters).updateCluster("my-secure-cluster", new ClusterDataImpl(null, "https://my-service.url:4443")); clusters.run(split("delete my-secure-cluster")); verify(mockClusters).deleteCluster("my-secure-cluster"); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java index da7d9cf76660d..5adbdb95da73a 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java @@ -26,7 +26,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.ProxyProtocol; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; import com.beust.jcommander.Parameter; @@ -86,7 +86,7 @@ private class Create extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); getAdmin().clusters().createCluster(cluster, - new ClusterData(serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls, proxyServiceUrl, + new ClusterDataImpl(serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls, proxyServiceUrl, authenticationPlugin, authenticationParameters, proxyProtocol)); } } @@ -122,7 +122,7 @@ private class Update extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); - getAdmin().clusters().updateCluster(cluster, new ClusterData(serviceUrl, serviceUrlTls, brokerServiceUrl, + getAdmin().clusters().updateCluster(cluster, new ClusterDataImpl(serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls, proxyServiceUrl, authenticationPlugin, authenticationParameters, proxyProtocol)); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataImpl.java similarity index 89% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataImpl.java index f13ac1e69374b..ee9186ffa3e21 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterDataImpl.java @@ -33,7 +33,7 @@ value = "ClusterData", description = "The configuration data for a cluster" ) -public class ClusterData implements ClusterDataInterface{ +public class ClusterDataImpl implements ClusterData { @ApiModelProperty( name = "serviceUrl", value = "The HTTP rest service URL (for admin operations)", @@ -91,27 +91,27 @@ public class ClusterData implements ClusterDataInterface{ ) private LinkedHashSet peerClusterNames; - public ClusterData() { + public ClusterDataImpl() { } - public ClusterData(String serviceUrl) { + public ClusterDataImpl(String serviceUrl) { this(serviceUrl, ""); } - public ClusterData(String serviceUrl, String serviceUrlTls) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; } - public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; this.brokerServiceUrl = brokerServiceUrl; this.brokerServiceUrlTls = brokerServiceUrlTls; } - public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, - String authenticationPlugin, String authenticationParameters) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, + String authenticationPlugin, String authenticationParameters) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; this.brokerServiceUrl = brokerServiceUrl; @@ -120,9 +120,9 @@ public ClusterData(String serviceUrl, String serviceUrlTls, String brokerService this.authenticationParameters = authenticationParameters; } - public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, - String proxyServiceUrl, String authenticationPlugin, String authenticationParameters, - ProxyProtocol proxyProtocol) { + public ClusterDataImpl(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls, + String proxyServiceUrl, String authenticationPlugin, String authenticationParameters, + ProxyProtocol proxyProtocol) { this.serviceUrl = serviceUrl; this.serviceUrlTls = serviceUrlTls; this.brokerServiceUrl = brokerServiceUrl; @@ -134,7 +134,7 @@ public ClusterData(String serviceUrl, String serviceUrlTls, String brokerService } - public void update(ClusterData other) { + public void update(ClusterDataImpl other) { checkNotNull(other); this.serviceUrl = other.serviceUrl; this.serviceUrlTls = other.serviceUrlTls; @@ -220,8 +220,8 @@ public void setPeerClusterNames(LinkedHashSet peerClusterNames) { @Override public boolean equals(Object obj) { - if (obj instanceof ClusterData) { - ClusterData other = (ClusterData) obj; + if (obj instanceof ClusterDataImpl) { + ClusterDataImpl other = (ClusterDataImpl) obj; return Objects.equals(serviceUrl, other.serviceUrl) && Objects.equals(serviceUrlTls, other.serviceUrlTls) && Objects.equals(brokerServiceUrl, other.brokerServiceUrl) && Objects.equals(brokerServiceUrlTls, other.brokerServiceUrlTls) diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 0242804038011..24fb337ff520e 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -36,8 +36,8 @@ import org.apache.pulsar.common.policies.data.BacklogQuotaMixIn; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.ClusterDataInterface; import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.FunctionInstanceStats; @@ -113,7 +113,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(AutoFailoverPolicyData.class, AutoFailoverPolicyDataImpl.class); resolver.addMapping(BrokerNamespaceIsolationData.class, BrokerNamespaceIsolationDataImpl.class); - resolver.addMapping(ClusterDataInterface.class, ClusterData.class); + resolver.addMapping(ClusterData.class, ClusterDataImpl.class); resolver.addMapping(FailureDomainInterface.class, FailureDomain.class); resolver.addMapping(NamespaceIsolationDataInterface.class, NamespaceIsolationData.class); resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java index d84afd589b0f1..77e867e05e1e1 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/ClusterDataTest.java @@ -31,33 +31,33 @@ public void simple() { String s2 = "http://broker.messaging.c2.example.com:8080"; String s3 = "https://broker.messaging.c1.example.com:4443"; String s4 = "https://broker.messaging.c2.example.com:4443"; - ClusterData c = new ClusterData(s1); + ClusterDataImpl c = new ClusterDataImpl(s1); c.setServiceUrl(null); c.setServiceUrlTls(null); - assertEquals(new ClusterData(s1), new ClusterData(s1)); - assertEquals(new ClusterData(s1).getServiceUrl(), s1); + assertEquals(new ClusterDataImpl(s1), new ClusterDataImpl(s1)); + assertEquals(new ClusterDataImpl(s1).getServiceUrl(), s1); - assertNotEquals(new ClusterData(), new ClusterData(s1)); - assertNotEquals(new ClusterData(s2), new ClusterData(s1)); - assertNotEquals(s1, new ClusterData(s1)); + assertNotEquals(new ClusterDataImpl(), new ClusterDataImpl(s1)); + assertNotEquals(new ClusterDataImpl(s2), new ClusterDataImpl(s1)); + assertNotEquals(s1, new ClusterDataImpl(s1)); - assertEquals(new ClusterData(s1).hashCode(), new ClusterData(s1).hashCode()); + assertEquals(new ClusterDataImpl(s1).hashCode(), new ClusterDataImpl(s1).hashCode()); - assertNotEquals(new ClusterData(s2).hashCode(), new ClusterData(s1).hashCode()); + assertNotEquals(new ClusterDataImpl(s2).hashCode(), new ClusterDataImpl(s1).hashCode()); - assertNotEquals(c.hashCode(), new ClusterData(s1).hashCode()); + assertNotEquals(c.hashCode(), new ClusterDataImpl(s1).hashCode()); - assertEquals(new ClusterData(s1, s3), new ClusterData(s1, s3)); - assertEquals(new ClusterData(s1, s3).getServiceUrl(), s1); - assertEquals(new ClusterData(s1, s3).getServiceUrlTls(), s3); + assertEquals(new ClusterDataImpl(s1, s3), new ClusterDataImpl(s1, s3)); + assertEquals(new ClusterDataImpl(s1, s3).getServiceUrl(), s1); + assertEquals(new ClusterDataImpl(s1, s3).getServiceUrlTls(), s3); - assertNotEquals(new ClusterData(), new ClusterData(s1, s3)); - assertNotEquals(new ClusterData(s2, s4), new ClusterData(s1, s3)); + assertNotEquals(new ClusterDataImpl(), new ClusterDataImpl(s1, s3)); + assertNotEquals(new ClusterDataImpl(s2, s4), new ClusterDataImpl(s1, s3)); - assertEquals(new ClusterData(s1, s3).hashCode(), new ClusterData(s1, s3).hashCode()); - assertNotEquals(new ClusterData(s2, s4).hashCode(), new ClusterData(s1, s3).hashCode()); - assertNotEquals(new ClusterData(s1, s4).hashCode(), new ClusterData(s1, s3).hashCode()); + assertEquals(new ClusterDataImpl(s1, s3).hashCode(), new ClusterDataImpl(s1, s3).hashCode()); + assertNotEquals(new ClusterDataImpl(s2, s4).hashCode(), new ClusterDataImpl(s1, s3).hashCode()); + assertNotEquals(new ClusterDataImpl(s1, s4).hashCode(), new ClusterDataImpl(s1, s3).hashCode()); } } diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java index ea3694efcb70e..5abc8d9884e45 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java @@ -55,7 +55,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.conf.InternalConfigurationData; import org.apache.pulsar.common.naming.NamedEntity; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -318,7 +318,7 @@ public void initInBroker(ServiceConfiguration brokerConfig, // create cluster for function worker service try { NamedEntity.checkName(cluster); - ClusterData clusterData = new ClusterData( + ClusterDataImpl clusterData = new ClusterDataImpl( workerConfig.getPulsarWebServiceUrl(), null /* serviceUrlTls */, workerConfig.getPulsarServiceUrl(), diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java index fb2057a997d0b..fd79ded3adecb 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -157,7 +157,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } - brokerAdmin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString())); + brokerAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); brokerAdmin.tenants().createTenant("tenant1", new TenantInfo(ImmutableSet.of("user1"), diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java index 447ab62840a92..14bdf3286c6fb 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; @@ -167,7 +167,7 @@ public void testTlsSyncProducerAndConsumer() throws Exception { @Cleanup PulsarClient proxyClient = createPulsarClient(authTls, proxyServiceUrl); - admin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString(), brokerUrlTls.toString(), + admin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java index 2b7a1de9aeaa1..e2a3aa66871e6 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java @@ -43,7 +43,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.mockito.Mockito; import org.slf4j.Logger; @@ -168,7 +168,7 @@ public void testProxyAuthorization() throws Exception { String namespaceName = "my-property/proxy-authorization-neg/my-ns"; - admin.clusters().createCluster("proxy-authorization-neg", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization-neg", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization-neg"))); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java index 2ce8930d2d757..93e3bfcca6c41 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java @@ -45,7 +45,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.mockito.Mockito; import org.slf4j.Logger; @@ -240,7 +240,7 @@ public void testProxyAuthorization() throws Exception { String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); @@ -294,7 +294,7 @@ public void testTlsHostVerificationProxyToClient(boolean hostnameVerificationEna String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); @@ -346,7 +346,7 @@ public void testTlsHostVerificationProxyToBroker(boolean hostnameVerificationEna String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); @@ -383,7 +383,7 @@ public void tlsCiphersAndProtocols(Set tlsCiphers, Set tlsProtoc String namespaceName = "my-property/proxy-authorization/my-ns"; createAdminClient(); - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java index 4a7d0b848d7f2..16d33d23ce5ba 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java @@ -35,7 +35,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationToken; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SubscriptionAuthMode; import org.apache.pulsar.common.policies.data.TenantInfo; import org.mockito.Mockito; @@ -142,7 +142,7 @@ public void testProxyAuthorization() throws Exception { String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); @@ -223,7 +223,7 @@ public void testUpdatePartitionNumAndReconnect() throws Exception { String topicName = "persistent://my-property/my-ns/my-topic1"; String subscriptionName = "my-subscriber-name"; - admin.clusters().createCluster(clusterName, new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet(), Sets.newHashSet(clusterName))); @@ -315,7 +315,7 @@ public void testProxyAuthorizationWithPrefixSubscriptionAuthMode() throws Except String namespaceName = "my-property/proxy-authorization/my-ns"; - admin.clusters().createCluster("proxy-authorization", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java index 3f2ab2c1a1017..1988016a9dc05 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java @@ -41,7 +41,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.mockito.Mockito; import org.slf4j.Logger; @@ -161,7 +161,7 @@ public void testDiscoveryService() throws Exception { @Cleanup PulsarClient proxyClient = createPulsarClient(authTls, proxyService.getServiceUrlTls()); - admin.clusters().createCluster("without-service-discovery", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("without-service-discovery", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("without-service-discovery"))); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java index f957a18e05244..6d1e0ac157614 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -134,7 +134,7 @@ PulsarAdmin getAdminClient(String user) throws Exception { @Test public void testAuthenticatedProxyAsAdmin() throws Exception { try (PulsarAdmin adminAdmin = getAdminClient("admin")) { - adminAdmin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString())); + adminAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); adminAdmin.tenants().createTenant("tenant1", new TenantInfo(ImmutableSet.of("randoUser"), ImmutableSet.of(configClusterName))); @@ -152,7 +152,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { } catch (PulsarAdminException.NotAuthorizedException e) { // expected } - adminAdmin.clusters().createCluster(configClusterName, new ClusterData(brokerUrl.toString())); + adminAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); adminAdmin.tenants().createTenant("tenant1", new TenantInfo(ImmutableSet.of("unknownUser"), ImmutableSet.of(configClusterName))); diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java index 0190d2e072bce..7547e0d10f7f2 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java @@ -39,7 +39,7 @@ import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.api.raw.RawMessageImpl; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.jctools.queues.SpscArrayQueue; import org.testng.Assert; @@ -61,7 +61,7 @@ public class TestCacheSizeAllocator extends MockedPulsarServiceBaseTest { protected void setup() throws Exception { super.internalSetup(); - admin.clusters().createCluster("test", new ClusterData(brokerUrl.toString())); + admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); // so that clients can test short names admin.tenants().createTenant("public", diff --git a/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java b/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java index 01588c62743c1..d6b0d120685fc 100644 --- a/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java +++ b/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java @@ -24,7 +24,7 @@ import org.apache.pulsar.client.api.Consumer; import org.apache.pulsar.client.api.Message; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -56,7 +56,7 @@ protected void setup() throws Exception { } }); // Setup namespaces - admin.clusters().createCluster("test", new ClusterData(pulsar.getWebServiceAddress())); + admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(testTenant, tenantInfo); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); diff --git a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java index a505dbb45433a..199a4ca0206c4 100644 --- a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java +++ b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet; import org.apache.pulsar.metadata.api.MetadataStoreException; @@ -75,7 +75,7 @@ public class WebSocketService implements Closeable { private ServiceConfiguration config; private ConfigurationMetadataCacheService configurationCacheService; - private ClusterData localCluster; + private ClusterDataImpl localCluster; private final ConcurrentOpenHashMap> topicProducerMap; private final ConcurrentOpenHashMap> topicConsumerMap; private final ConcurrentOpenHashMap> topicReaderMap; @@ -85,7 +85,7 @@ public WebSocketService(WebSocketProxyConfiguration config) { this(createClusterData(config), PulsarConfigurationLoader.convertFrom(config)); } - public WebSocketService(ClusterData localCluster, ServiceConfiguration config) { + public WebSocketService(ClusterDataImpl localCluster, ServiceConfiguration config) { this.config = config; this.localCluster = localCluster; this.topicProducerMap = new ConcurrentOpenHashMap<>(); @@ -168,11 +168,11 @@ public synchronized PulsarClient getPulsarClient() throws IOException { return pulsarClient; } - public synchronized void setLocalCluster(ClusterData clusterData) { + public synchronized void setLocalCluster(ClusterDataImpl clusterData) { this.localCluster = clusterData; } - private PulsarClient createClientInstance(ClusterData clusterData) throws IOException { + private PulsarClient createClientInstance(ClusterDataImpl clusterData) throws IOException { ClientBuilder clientBuilder = PulsarClient.builder() // .statsInterval(0, TimeUnit.SECONDS) // .enableTls(config.isTlsEnabled()) // @@ -202,18 +202,18 @@ && isNotBlank(config.getBrokerClientAuthenticationParameters())) { return clientBuilder.build(); } - private static ClusterData createClusterData(WebSocketProxyConfiguration config) { + private static ClusterDataImpl createClusterData(WebSocketProxyConfiguration config) { if (isNotBlank(config.getBrokerServiceUrl()) || isNotBlank(config.getBrokerServiceUrlTls())) { - return new ClusterData(config.getServiceUrl(), config.getServiceUrlTls(), config.getBrokerServiceUrl(), + return new ClusterDataImpl(config.getServiceUrl(), config.getServiceUrlTls(), config.getBrokerServiceUrl(), config.getBrokerServiceUrlTls()); } else if (isNotBlank(config.getServiceUrl()) || isNotBlank(config.getServiceUrlTls())) { - return new ClusterData(config.getServiceUrl(), config.getServiceUrlTls()); + return new ClusterDataImpl(config.getServiceUrl(), config.getServiceUrlTls()); } else { return null; } } - private ClusterData retrieveClusterData() throws PulsarServerException { + private ClusterDataImpl retrieveClusterData() throws PulsarServerException { if (configurationCacheService == null) { throw new PulsarServerException( "Failed to retrieve Cluster data due to empty ConfigurationStoreServers"); From c6f8f92bf184b3590b37fb187c8dc8663d995de9 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:35:59 +0800 Subject: [PATCH 45/51] FailureDomain --- .../cache/ConfigurationCacheService.java | 12 +++--- .../ConfigurationMetadataCacheService.java | 4 +- .../broker/resources/ClusterResources.java | 8 ++-- .../broker/admin/impl/ClustersBase.java | 20 +++++----- .../impl/ModularLoadManagerImpl.java | 4 +- .../pulsar/broker/admin/AdminApiTest2.java | 6 +-- .../broker/admin/v1/V1_AdminApiTest2.java | 6 +-- .../AntiAffinityNamespaceGroupTest.java | 6 +-- .../apache/pulsar/client/admin/Clusters.java | 18 ++++----- ...omainInterface.java => FailureDomain.java} | 2 +- .../client/admin/internal/ClustersImpl.java | 38 +++++++++---------- .../pulsar/admin/cli/PulsarAdminToolTest.java | 4 +- .../apache/pulsar/admin/cli/CmdClusters.java | 6 +-- ...lureDomain.java => FailureDomainImpl.java} | 6 +-- .../common/util/ObjectMapperFactory.java | 4 +- 15 files changed, 72 insertions(+), 72 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{FailureDomainInterface.java => FailureDomain.java} (95%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{FailureDomain.java => FailureDomainImpl.java} (91%) diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java index 7ff45d0069899..4141da915003e 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java @@ -25,7 +25,7 @@ import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.resources.PulsarResources; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -60,7 +60,7 @@ public class ConfigurationCacheService { private ZooKeeperChildrenCache clustersListCache; private ZooKeeperChildrenCache failureDomainListCache; private ZooKeeperDataCache namespaceIsolationPoliciesCache; - private ZooKeeperDataCache failureDomainCache; + private ZooKeeperDataCache failureDomainCache; @Getter private PulsarResources pulsarResources; @@ -126,10 +126,10 @@ public NamespaceIsolationPolicies deserialize(String path, byte[] content) throw } }; - this.failureDomainCache = new ZooKeeperDataCache(cache) { + this.failureDomainCache = new ZooKeeperDataCache(cache) { @Override - public FailureDomain deserialize(String path, byte[] content) throws Exception { - return ObjectMapperFactory.getThreadLocal().readValue(content, FailureDomain.class); + public FailureDomainImpl deserialize(String path, byte[] content) throws Exception { + return ObjectMapperFactory.getThreadLocal().readValue(content, FailureDomainImpl.class); } }; } @@ -210,7 +210,7 @@ public ZooKeeperDataCache namespaceIsolationPolicies return this.namespaceIsolationPoliciesCache; } - public ZooKeeperDataCache failureDomainCache() { + public ZooKeeperDataCache failureDomainCache() { return this.failureDomainCache; } } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java index 4cdf29e1cc9d6..a4cbb7b333ee4 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java @@ -21,7 +21,7 @@ import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.broker.resources.PulsarResources; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; @@ -72,7 +72,7 @@ public ZooKeeperDataCache namespaceIsolationPolicies throw new UnsupportedOperationException(); } - public ZooKeeperDataCache failureDomainCache() { + public ZooKeeperDataCache failureDomainCache() { throw new UnsupportedOperationException(); } } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java index ddbaf8096a1c0..dcfc52dd7c074 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/ClusterResources.java @@ -23,7 +23,7 @@ import lombok.Getter; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.metadata.api.MetadataStoreException; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; @@ -35,17 +35,17 @@ public class ClusterResources extends BaseResources { public ClusterResources(MetadataStoreExtended store, int operationTimeoutSec) { super(store, ClusterDataImpl.class, operationTimeoutSec); - this.failureDomainResources = new FailureDomainResources(store, FailureDomain.class, operationTimeoutSec); + this.failureDomainResources = new FailureDomainResources(store, FailureDomainImpl.class, operationTimeoutSec); } public Set list() throws MetadataStoreException { return new HashSet<>(super.getChildren(CLUSTERS_ROOT)); } - public static class FailureDomainResources extends BaseResources { + public static class FailureDomainResources extends BaseResources { public static final String FAILURE_DOMAIN = "failureDomain"; - public FailureDomainResources(MetadataStoreExtended store, Class clazz, + public FailureDomainResources(MetadataStoreExtended store, Class clazz, int operationTimeoutSec) { super(store, clazz, operationTimeoutSec); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java index 9a4c9bccd50ec..5cb15b0af5bb9 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java @@ -58,7 +58,7 @@ import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImpl; @@ -886,7 +886,7 @@ public void setFailureDomain( value = "The configuration data of a failure domain", required = true ) - FailureDomain domain + FailureDomainImpl domain ) throws Exception { validateSuperUserAccess(); validateClusterExists(cluster); @@ -911,7 +911,7 @@ public void setFailureDomain( @Path("/{cluster}/failureDomains") @ApiOperation( value = "Get the cluster failure domains.", - response = FailureDomain.class, + response = FailureDomainImpl.class, responseContainer = "Map", notes = "This operation requires Pulsar superuser privileges." ) @@ -919,7 +919,7 @@ public void setFailureDomain( @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 500, message = "Internal server error") }) - public Map getFailureDomains( + public Map getFailureDomains( @ApiParam( value = "The cluster name", required = true @@ -928,13 +928,13 @@ public Map getFailureDomains( ) throws Exception { validateSuperUserAccess(); - Map domains = Maps.newHashMap(); + Map domains = Maps.newHashMap(); try { final String failureDomainRootPath = pulsar().getConfigurationCache().CLUSTER_FAILURE_DOMAIN_ROOT; FailureDomainResources failureDomainListCache = clusterResources().getFailureDomainResources(); for (String domainName : failureDomainListCache.getChildren(failureDomainRootPath)) { try { - Optional domain = failureDomainListCache + Optional domain = failureDomainListCache .get(joinPath(failureDomainRootPath, domainName)); domain.ifPresent(failureDomain -> domains.put(domainName, failureDomain)); } catch (Exception e) { @@ -955,7 +955,7 @@ public Map getFailureDomains( @Path("/{cluster}/failureDomains/{domainName}") @ApiOperation( value = "Get a domain in a cluster", - response = FailureDomain.class, + response = FailureDomainImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { @@ -964,7 +964,7 @@ public Map getFailureDomains( @ApiResponse(code = 412, message = "Cluster doesn't exist"), @ApiResponse(code = 500, message = "Internal server error") }) - public FailureDomain getDomain( + public FailureDomainImpl getDomain( @ApiParam( value = "The cluster name", required = true @@ -1034,7 +1034,7 @@ public void deleteFailureDomain( } private void validateBrokerExistsInOtherDomain(final String cluster, final String inputDomainName, - final FailureDomain inputDomain) { + final FailureDomainImpl inputDomain) { if (inputDomain != null && inputDomain.brokers != null) { try { final String failureDomainRootPath = pulsar().getConfigurationCache().CLUSTER_FAILURE_DOMAIN_ROOT; @@ -1044,7 +1044,7 @@ private void validateBrokerExistsInOtherDomain(final String cluster, final Strin continue; } try { - Optional domain = + Optional domain = clusterResources().getFailureDomainResources() .get(joinPath(failureDomainRootPath, domainName)); if (domain.isPresent() && domain.get().brokers != null) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java index 60bfad3e35179..6fd2884033f66 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java @@ -69,7 +69,7 @@ import org.apache.pulsar.common.naming.NamespaceBundleFactory; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.stats.Metrics; @@ -1030,7 +1030,7 @@ private void refreshBrokerToFailureDomainMap() { Map tempBrokerToFailureDomainMap = Maps.newHashMap(); for (String domainName : pulsar.getConfigurationCache().failureDomainListCache().get()) { try { - Optional domain = pulsar.getConfigurationCache().failureDomainCache() + Optional domain = pulsar.getConfigurationCache().failureDomainCache() .get(clusterDomainRootPath + "/" + domainName); if (domain.isPresent()) { for (String broker : domain.get().brokers) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 82cd97266d226..e6f9fe61e7839 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -84,8 +84,8 @@ import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -759,14 +759,14 @@ public void clusterFailureDomain() throws PulsarAdminException { final String cluster = pulsar.getConfiguration().getClusterName(); // create - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers(Sets.newHashSet("b1", "b2", "b3")); admin.clusters().createFailureDomain(cluster, "domain-1", domain); admin.clusters().updateFailureDomain(cluster, "domain-1", domain); assertEquals(admin.clusters().getFailureDomain(cluster, "domain-1"), domain); - Map domains = admin.clusters().getFailureDomains(cluster); + Map domains = admin.clusters().getFailureDomains(cluster); assertEquals(domains.size(), 1); assertTrue(domains.containsKey("domain-1")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java index a819d8c105c66..535ad4b5a3bdd 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java @@ -61,8 +61,8 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NonPersistentTopicStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -651,14 +651,14 @@ public void clusterFailureDomain() throws PulsarAdminException { admin.clusters().createCluster(cluster, new ClusterDataImpl(pulsar.getSafeWebServiceAddress(), pulsar.getWebServiceAddressTls())); // create - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers(Sets.newHashSet("b1", "b2", "b3")); admin.clusters().createFailureDomain(cluster, "domain-1", domain); admin.clusters().updateFailureDomain(cluster, "domain-1", domain); assertEquals(admin.clusters().getFailureDomain(cluster, "domain-1"), domain); - Map domains = admin.clusters().getFailureDomains(cluster); + Map domains = admin.clusters().getFailureDomains(cluster); assertEquals(domains.size(), 1); assertTrue(domains.containsKey("domain-1")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java index 2853475882581..77fb42f796493 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java @@ -56,7 +56,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; @@ -402,11 +402,11 @@ public void testBrokerSelectionForAntiAffinityGroup() throws Exception { final String namespace2 = tenant + "/" + cluster + "/ns2"; final String namespaceAntiAffinityGroup = "group"; - FailureDomain domain1 = new FailureDomain(); + FailureDomainImpl domain1 = new FailureDomainImpl(); domain1.brokers = Sets.newHashSet(broker1); admin1.clusters().createFailureDomain(cluster, "domain1", domain1); - FailureDomain domain2 = new FailureDomain(); + FailureDomainImpl domain2 = new FailureDomainImpl(); domain2.brokers = Sets.newHashSet(broker2); admin1.clusters().createFailureDomain(cluster, "domain2", domain2); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java index da916faa055ba..8b0c7174bcbe7 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomainInterface; +import org.apache.pulsar.common.policies.data.FailureDomain; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; /** @@ -559,7 +559,7 @@ CompletableFuture getNamespaceIsolationPolicyAs * @throws PulsarAdminException * Unexpected error */ - void createFailureDomain(String cluster, String domainName, FailureDomainInterface domain) + void createFailureDomain(String cluster, String domainName, FailureDomain domain) throws PulsarAdminException; /** @@ -578,7 +578,7 @@ void createFailureDomain(String cluster, String domainName, FailureDomainInterfa * @return * */ - CompletableFuture createFailureDomainAsync(String cluster, String domainName, FailureDomainInterface domain); + CompletableFuture createFailureDomainAsync(String cluster, String domainName, FailureDomain domain); /** * Update a domain into cluster. @@ -609,7 +609,7 @@ void createFailureDomain(String cluster, String domainName, FailureDomainInterfa * @throws PulsarAdminException * Unexpected error */ - void updateFailureDomain(String cluster, String domainName, FailureDomainInterface domain) + void updateFailureDomain(String cluster, String domainName, FailureDomain domain) throws PulsarAdminException; /** @@ -628,7 +628,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomainInterfa * @return * */ - CompletableFuture updateFailureDomainAsync(String cluster, String domainName, FailureDomainInterface domain); + CompletableFuture updateFailureDomainAsync(String cluster, String domainName, FailureDomain domain); /** * Delete a domain in cluster. @@ -686,7 +686,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomainInterfa * @throws PulsarAdminException * Unexpected error */ - Map getFailureDomains(String cluster) throws PulsarAdminException; + Map getFailureDomains(String cluster) throws PulsarAdminException; /** * Get all registered domains in cluster asynchronously. @@ -697,7 +697,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomainInterfa * @return * */ - CompletableFuture> getFailureDomainsAsync(String cluster); + CompletableFuture> getFailureDomainsAsync(String cluster); /** * Get the domain registered into a cluster. @@ -718,7 +718,7 @@ void updateFailureDomain(String cluster, String domainName, FailureDomainInterfa * @throws PulsarAdminException * Unexpected error */ - FailureDomainInterface getFailureDomain(String cluster, String domainName) throws PulsarAdminException; + FailureDomain getFailureDomain(String cluster, String domainName) throws PulsarAdminException; /** * Get the domain registered into a cluster asynchronously. @@ -729,6 +729,6 @@ void updateFailureDomain(String cluster, String domainName, FailureDomainInterfa * @return * */ - CompletableFuture getFailureDomainAsync(String cluster, String domainName); + CompletableFuture getFailureDomainAsync(String cluster, String domainName); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java similarity index 95% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java index 885d9a5456064..b92717cc7d6be 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java @@ -20,7 +20,7 @@ import java.util.Set; -public interface FailureDomainInterface { +public interface FailureDomain { Set getBrokers(); void setBrokers(Set brokers); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index 23c22ef31f3e1..5020a58ee5ef9 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -39,8 +39,8 @@ import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; @@ -445,26 +445,26 @@ public void failed(Throwable throwable) { } @Override - public void createFailureDomain(String cluster, String domainName, FailureDomainInterface domain) + public void createFailureDomain(String cluster, String domainName, FailureDomain domain) throws PulsarAdminException { setDomain(cluster, domainName, domain); } @Override public CompletableFuture createFailureDomainAsync(String cluster, String domainName, - FailureDomainInterface domain) { + FailureDomain domain) { return setDomainAsync(cluster, domainName, domain); } @Override - public void updateFailureDomain(String cluster, String domainName, FailureDomainInterface domain) + public void updateFailureDomain(String cluster, String domainName, FailureDomain domain) throws PulsarAdminException { setDomain(cluster, domainName, domain); } @Override public CompletableFuture updateFailureDomainAsync(String cluster, String domainName, - FailureDomainInterface domain) { + FailureDomain domain) { return setDomainAsync(cluster, domainName, domain); } @@ -489,7 +489,7 @@ public CompletableFuture deleteFailureDomainAsync(String cluster, String d } @Override - public Map getFailureDomains(String cluster) throws PulsarAdminException { + public Map getFailureDomains(String cluster) throws PulsarAdminException { try { return getFailureDomainsAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -503,14 +503,14 @@ public Map getFailureDomains(String cluster) thr } @Override - public CompletableFuture> getFailureDomainsAsync(String cluster) { + public CompletableFuture> getFailureDomainsAsync(String cluster) { WebTarget path = adminClusters.path(cluster).path("failureDomains"); - final CompletableFuture> future = new CompletableFuture<>(); + final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback>() { + new InvocationCallback>() { @Override - public void completed(Map failureDomains) { - Map result = new HashMap<>(failureDomains); + public void completed(Map failureDomains) { + Map result = new HashMap<>(failureDomains); future.complete(result); } @@ -523,7 +523,7 @@ public void failed(Throwable throwable) { } @Override - public FailureDomainInterface getFailureDomain(String cluster, String domainName) throws PulsarAdminException { + public FailureDomain getFailureDomain(String cluster, String domainName) throws PulsarAdminException { try { return getFailureDomainAsync(cluster, domainName).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -537,13 +537,13 @@ public FailureDomainInterface getFailureDomain(String cluster, String domainName } @Override - public CompletableFuture getFailureDomainAsync(String cluster, String domainName) { + public CompletableFuture getFailureDomainAsync(String cluster, String domainName) { WebTarget path = adminClusters.path(cluster).path("failureDomains").path(domainName); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(FailureDomain failureDomain) { + public void completed(FailureDomainImpl failureDomain) { future.complete(failureDomain); } @@ -556,7 +556,7 @@ public void failed(Throwable throwable) { } private void setDomain(String cluster, String domainName, - FailureDomainInterface domain) throws PulsarAdminException { + FailureDomain domain) throws PulsarAdminException { try { setDomainAsync(cluster, domainName, domain).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -570,8 +570,8 @@ private void setDomain(String cluster, String domainName, } private CompletableFuture setDomainAsync(String cluster, String domainName, - FailureDomainInterface domain) { + FailureDomain domain) { WebTarget path = adminClusters.path(cluster).path("failureDomains").path(domainName); - return asyncPostRequest(path, Entity.entity((FailureDomain) domain, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((FailureDomainImpl) domain, MediaType.APPLICATION_JSON)); } } diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java index 357e5b494ae08..fe23dc41ab226 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java @@ -76,7 +76,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats.LedgerInfo; @@ -204,7 +204,7 @@ public void clusters() throws Exception { verify(mockClusters).getFailureDomain("use", "domain"); clusters.run(split("create-failure-domain use --domain-name domain --broker-list b1")); - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers(Sets.newHashSet("b1")); verify(mockClusters).createFailureDomain("use", "domain", domain); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java index 5adbdb95da73a..7cfad806039ad 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java @@ -27,7 +27,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.ProxyProtocol; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; @@ -200,7 +200,7 @@ private class CreateFailureDomain extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers((isNotBlank(brokerList) ? Sets.newHashSet(brokerList.split(",")): null)); getAdmin().clusters().createFailureDomain(cluster, domainName, domain); } @@ -219,7 +219,7 @@ private class UpdateFailureDomain extends CliCommand { void run() throws PulsarAdminException { String cluster = getOneArgument(params); - FailureDomain domain = new FailureDomain(); + FailureDomainImpl domain = new FailureDomainImpl(); domain.setBrokers((isNotBlank(brokerList) ? Sets.newHashSet(brokerList.split(",")) : null)); getAdmin().clusters().updateFailureDomain(cluster, domainName, domain); } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainImpl.java similarity index 91% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainImpl.java index a1721be888b98..d486d228535e1 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomain.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FailureDomainImpl.java @@ -36,7 +36,7 @@ ) @ToString @Data -public class FailureDomain implements FailureDomainInterface { +public class FailureDomainImpl implements FailureDomain { @ApiModelProperty( name = "brokers", @@ -62,8 +62,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof FailureDomain) { - FailureDomain other = (FailureDomain) obj; + if (obj instanceof FailureDomainImpl) { + FailureDomainImpl other = (FailureDomainImpl) obj; return Objects.equals(brokers, other.brokers); } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 24fb337ff520e..b95737da07398 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -38,8 +38,8 @@ import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ClusterData; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.FailureDomainInterface; import org.apache.pulsar.common.policies.data.FunctionInstanceStats; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBase; @@ -114,7 +114,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(AutoFailoverPolicyData.class, AutoFailoverPolicyDataImpl.class); resolver.addMapping(BrokerNamespaceIsolationData.class, BrokerNamespaceIsolationDataImpl.class); resolver.addMapping(ClusterData.class, ClusterDataImpl.class); - resolver.addMapping(FailureDomainInterface.class, FailureDomain.class); + resolver.addMapping(FailureDomain.class, FailureDomainImpl.class); resolver.addMapping(NamespaceIsolationDataInterface.class, NamespaceIsolationData.class); resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); resolver.addMapping(OffloadPoliciesInterface.class, OffloadPolicies.class); From 5aad2a07c5b643f190b1e8a5b4906186924c3d61 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:37:42 +0800 Subject: [PATCH 46/51] FunctionInstanceStats --- .../broker/admin/impl/FunctionsBase.java | 6 ++--- .../pulsar/io/PulsarFunctionE2ETest.java | 9 +++---- .../apache/pulsar/client/admin/Functions.java | 6 ++--- ...erface.java => FunctionInstanceStats.java} | 6 ++--- ...ce.java => FunctionInstanceStatsData.java} | 6 ++--- ...ava => FunctionInstanceStatsDataBase.java} | 2 +- .../policies/data/FunctionStatsInterface.java | 10 +++---- .../data/WorkerFunctionInstanceStats.java | 2 +- .../client/admin/internal/FunctionsImpl.java | 10 +++---- ...=> FunctionInstanceStatsDataBaseImpl.java} | 2 +- ...ava => FunctionInstanceStatsDataImpl.java} | 4 +-- ...ts.java => FunctionInstanceStatsImpl.java} | 4 +-- .../common/policies/data/FunctionStats.java | 18 ++++++------- .../common/util/ObjectMapperFactory.java | 16 ++++++------ .../worker/FunctionRuntimeManager.java | 26 +++++++++---------- .../pulsar/functions/worker/WorkerUtils.java | 15 +++++------ .../worker/rest/api/ComponentImpl.java | 20 +++++++------- .../functions/worker/rest/api/WorkerImpl.java | 7 +++-- .../rest/api/v3/FunctionsApiV3Resource.java | 6 ++--- .../worker/service/api/Component.java | 16 ++++++------ .../worker/rest/api/FunctionsImplTest.java | 8 +++--- 21 files changed, 95 insertions(+), 104 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{FunctionInstanceStatsInterface.java => FunctionInstanceStats.java} (84%) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{FunctionInstanceStatsDataInterface.java => FunctionInstanceStatsData.java} (82%) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{FunctionInstanceStatsDataBaseInterface.java => FunctionInstanceStatsDataBase.java} (95%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{FunctionInstanceStatsDataBase.java => FunctionInstanceStatsDataBaseImpl.java} (95%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{FunctionInstanceStatsData.java => FunctionInstanceStatsDataImpl.java} (88%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{FunctionInstanceStats.java => FunctionInstanceStatsImpl.java} (87%) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java index 27904170f73ed..97721f2b9434a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java @@ -44,7 +44,7 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; @@ -428,7 +428,7 @@ public FunctionStats getFunctionStats( @GET @ApiOperation( value = "Displays the stats of a Pulsar Function instance", - response = FunctionInstanceStatsData.class + response = FunctionInstanceStatsDataImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -438,7 +438,7 @@ public FunctionStats getFunctionStats( }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/{instanceId}/stats") - public FunctionInstanceStatsData getFunctionInstanceStats( + public FunctionInstanceStatsDataImpl getFunctionInstanceStats( @ApiParam(value = "The tenant of a Pulsar Function") final @PathParam("tenant") String tenant, @ApiParam(value = "The namespace of a Pulsar Function") final @PathParam("namespace") String namespace, @ApiParam(value = "The name of a Pulsar Function") final @PathParam("functionName") String functionName, diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java index 508c8f519f4e0..da4fb1983b039 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java @@ -52,8 +52,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.functions.ConsumerConfig; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.io.SinkConfig; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.SubscriptionStats; @@ -415,10 +414,10 @@ public void testPulsarFunctionStats() throws Exception { // validate function instance stats empty - FunctionInstanceStatsData functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, + FunctionInstanceStatsDataImpl functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, namespacePortion, functionName, 0, null); - FunctionInstanceStatsData functionInstanceStatsAdmin = (FunctionInstanceStatsData) admin.functions(). + FunctionInstanceStatsDataImpl functionInstanceStatsAdmin = (FunctionInstanceStatsDataImpl) admin.functions(). getFunctionStats(tenant, namespacePortion, functionName, 0); assertEquals(functionInstanceStats, functionInstanceStatsAdmin); @@ -484,7 +483,7 @@ public void testPulsarFunctionStats() throws Exception { functionInstanceStats = functionRuntimeManager.getFunctionInstanceStats(tenant, namespacePortion, functionName, 0, null); - functionInstanceStatsAdmin = (FunctionInstanceStatsData) admin.functions().getFunctionStats(tenant, + functionInstanceStatsAdmin = (FunctionInstanceStatsDataImpl) admin.functions().getFunctionStats(tenant, namespacePortion, functionName, 0); assertEquals(functionInstanceStats, functionInstanceStatsAdmin); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java index 5119e673fa042..c402e2b28f706 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataInterface; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.FunctionStatus; @@ -411,7 +411,7 @@ CompletableFuture getFunctionStatsAsync( + CompletableFuture getFunctionStatsAsync( String tenant, String namespace, String function, int id); /** diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java similarity index 84% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java index ffadfa91f5cc3..03714476e3d08 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java @@ -18,12 +18,12 @@ */ package org.apache.pulsar.common.policies.data; -public interface FunctionInstanceStatsInterface { +public interface FunctionInstanceStats { int getInstanceId(); - FunctionInstanceStatsDataInterface getMetrics(); + FunctionInstanceStatsData getMetrics(); void setInstanceId(int instanceId); - void setMetrics(FunctionInstanceStatsDataInterface metrics); + void setMetrics(FunctionInstanceStatsData metrics); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java similarity index 82% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java index b3b282e60dbd5..5d8d558051b35 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java @@ -18,14 +18,14 @@ */ package org.apache.pulsar.common.policies.data; -public interface FunctionInstanceStatsDataInterface extends FunctionInstanceStatsDataBaseInterface { - FunctionInstanceStatsDataBaseInterface getOneMin(); +public interface FunctionInstanceStatsData extends FunctionInstanceStatsDataBase { + FunctionInstanceStatsDataBase getOneMin(); Long getLastInvocation(); java.util.Map getUserMetrics(); - void setOneMin(FunctionInstanceStatsDataBaseInterface oneMin); + void setOneMin(FunctionInstanceStatsDataBase oneMin); void setLastInvocation(Long lastInvocation); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java similarity index 95% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java index 9a57f83bd7cf7..578e19e3a1288 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -public interface FunctionInstanceStatsDataBaseInterface { +public interface FunctionInstanceStatsDataBase { long getReceivedTotal(); long getProcessedSuccessfullyTotal(); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java index a2fdf6e49c84c..831e980ce1034 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java @@ -21,7 +21,7 @@ import java.util.List; public interface FunctionStatsInterface { - void addInstance(FunctionInstanceStatsInterface functionInstanceStats); + void addInstance(FunctionInstanceStats functionInstanceStats); FunctionStatsInterface calculateOverall(); @@ -35,11 +35,11 @@ public interface FunctionStatsInterface { Double getAvgProcessLatency(); - FunctionInstanceStatsDataBaseInterface getOneMin(); + FunctionInstanceStatsDataBase getOneMin(); Long getLastInvocation(); - List getInstances(); + List getInstances(); void setReceivedTotal(long receivedTotal); @@ -51,9 +51,9 @@ public interface FunctionStatsInterface { void setAvgProcessLatency(Double avgProcessLatency); - void setOneMin(FunctionInstanceStatsDataBaseInterface oneMin); + void setOneMin(FunctionInstanceStatsDataBase oneMin); void setLastInvocation(Long lastInvocation); - void setInstances(List instances); + void setInstances(List instances); } diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java index 8710695937095..ce70d65b48f73 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/WorkerFunctionInstanceStats.java @@ -29,5 +29,5 @@ public class WorkerFunctionInstanceStats { * Fully qualified function instance name. */ public String name; - public FunctionInstanceStatsDataInterface metrics; + public FunctionInstanceStatsData metrics; } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java index 936611f481f04..110394fdca3bb 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java @@ -50,8 +50,8 @@ import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataInterface; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.FunctionStatus; @@ -241,7 +241,7 @@ public void failed(Throwable throwable) { } @Override - public FunctionInstanceStatsDataInterface getFunctionStats( + public FunctionInstanceStatsData getFunctionStats( String tenant, String namespace, String function, int id) throws PulsarAdminException { try { return getFunctionStatsAsync(tenant, namespace, function, id) @@ -258,10 +258,10 @@ public FunctionInstanceStatsDataInterface getFunctionStats( } @Override - public CompletableFuture getFunctionStatsAsync( + public CompletableFuture getFunctionStatsAsync( String tenant, String namespace, String function, int id) { WebTarget path = functions.path(tenant).path(namespace).path(function).path(Integer.toString(id)).path("stats"); - final CompletableFuture future = + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @@ -270,7 +270,7 @@ public void completed(Response response) { if (!response.getStatusInfo().equals(Response.Status.OK)) { future.completeExceptionally(getApiException(response)); } else { - future.complete(response.readEntity(FunctionInstanceStatsData.class)); + future.complete(response.readEntity(FunctionInstanceStatsDataImpl.class)); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseImpl.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseImpl.java index 9bc2013f04231..e8d297a5eaee4 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBase.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataBaseImpl.java @@ -29,7 +29,7 @@ @JsonInclude(JsonInclude.Include.ALWAYS) @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", "avgProcessLatency" }) -public class FunctionInstanceStatsDataBase implements FunctionInstanceStatsDataBaseInterface { +public class FunctionInstanceStatsDataBaseImpl implements FunctionInstanceStatsDataBase { /** * Total number of records function received from source for instance. **/ diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataImpl.java similarity index 88% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataImpl.java index 7066b8073496c..f1ed757b96337 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsDataImpl.java @@ -34,9 +34,9 @@ @JsonInclude(JsonInclude.Include.ALWAYS) @JsonPropertyOrder({ "receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "userMetrics" }) -public class FunctionInstanceStatsData extends FunctionInstanceStatsDataBase implements FunctionInstanceStatsDataInterface { +public class FunctionInstanceStatsDataImpl extends FunctionInstanceStatsDataBaseImpl implements FunctionInstanceStatsData { @JsonProperty("1min") - public FunctionInstanceStatsDataBaseInterface oneMin = new FunctionInstanceStatsDataBase(); + public FunctionInstanceStatsDataBase oneMin = new FunctionInstanceStatsDataBaseImpl(); /** * Timestamp of when the function was last invoked for instance. diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsImpl.java similarity index 87% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsImpl.java index 63f84570c011f..f23700149baaf 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStats.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionInstanceStatsImpl.java @@ -28,9 +28,9 @@ @Data @JsonInclude(JsonInclude.Include.ALWAYS) @JsonPropertyOrder({ "instanceId", "metrics" }) -public class FunctionInstanceStats implements FunctionInstanceStatsInterface { +public class FunctionInstanceStatsImpl implements FunctionInstanceStats { /** Instance Id of function instance. **/ public int instanceId; - public FunctionInstanceStatsDataInterface metrics = new FunctionInstanceStatsData(); + public FunctionInstanceStatsData metrics = new FunctionInstanceStatsDataImpl(); } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java index 5894dba1bb743..071d4143d0637 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java @@ -22,12 +22,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.io.IOException; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; + import lombok.Data; -import lombok.EqualsAndHashCode; import org.apache.pulsar.common.util.ObjectMapperFactory; /** @@ -65,18 +63,18 @@ public class FunctionStats implements FunctionStatsInterface { public Double avgProcessLatency; @JsonProperty("1min") - public FunctionInstanceStatsDataBaseInterface oneMin = - new FunctionInstanceStatsDataBase(); + public FunctionInstanceStatsDataBase oneMin = + new FunctionInstanceStatsDataBaseImpl(); /** * Timestamp of when the function was last invoked by any instance. **/ public Long lastInvocation; - public List instances = new LinkedList<>(); + public List instances = new LinkedList<>(); @Override - public void addInstance(FunctionInstanceStatsInterface functionInstanceStats) { + public void addInstance(FunctionInstanceStats functionInstanceStats) { instances.add(functionInstanceStats); } @@ -85,9 +83,9 @@ public FunctionStats calculateOverall() { int nonNullInstances = 0; int nonNullInstancesOneMin = 0; - for (FunctionInstanceStatsInterface functionInstanceStats : instances) { - FunctionInstanceStatsData functionInstanceStatsData = - (FunctionInstanceStatsData) functionInstanceStats.getMetrics(); + for (FunctionInstanceStats functionInstanceStats : instances) { + FunctionInstanceStatsDataImpl functionInstanceStatsData = + (FunctionInstanceStatsDataImpl) functionInstanceStats.getMetrics(); receivedTotal += functionInstanceStatsData.receivedTotal; processedSuccessfullyTotal += functionInstanceStatsData.processedSuccessfullyTotal; systemExceptionsTotal += functionInstanceStatsData.systemExceptionsTotal; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index b95737da07398..3420a4db6b72e 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -40,12 +40,12 @@ import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.FunctionInstanceStats; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBaseImpl; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBase; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBaseInterface; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataInterface; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsInterface; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStats; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @@ -119,9 +119,9 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); resolver.addMapping(OffloadPoliciesInterface.class, OffloadPolicies.class); resolver.addMapping(FunctionStatsInterface.class, FunctionStats.class); - resolver.addMapping(FunctionInstanceStatsInterface.class, FunctionInstanceStats.class); - resolver.addMapping(FunctionInstanceStatsDataInterface.class, FunctionInstanceStatsData.class); - resolver.addMapping(FunctionInstanceStatsDataBaseInterface.class, FunctionInstanceStatsDataBase.class); + resolver.addMapping(FunctionInstanceStats.class, FunctionInstanceStatsImpl.class); + resolver.addMapping(FunctionInstanceStatsData.class, FunctionInstanceStatsDataImpl.class); + resolver.addMapping(FunctionInstanceStatsDataBase.class, FunctionInstanceStatsDataBaseImpl.class); // we use MixIn class to add jackson annotations mapper.addMixIn(BacklogQuota.class, BacklogQuotaMixIn.class); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java index 55e66b49b7c57..c380ad79ba97d 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java @@ -51,8 +51,8 @@ import org.apache.pulsar.common.functions.AuthenticationConfig; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.policies.data.ErrorData; -import org.apache.pulsar.common.policies.data.FunctionInstanceStats; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.Reflections; @@ -534,8 +534,8 @@ private void stopFunction(String fullyQualifiedInstanceId, boolean restart) thro * @param instanceId the function instance id * @return jsonObject containing stats for instance */ - public FunctionInstanceStatsData getFunctionInstanceStats(String tenant, String namespace, - String functionName, int instanceId, URI uri) { + public FunctionInstanceStatsDataImpl getFunctionInstanceStats(String tenant, String namespace, + String functionName, int instanceId, URI uri) { Assignment assignment; if (runtimeFactory.externallyManaged()) { assignment = this.findAssignment(tenant, namespace, functionName, -1); @@ -544,7 +544,7 @@ public FunctionInstanceStatsData getFunctionInstanceStats(String tenant, String } if (assignment == null) { - return new FunctionInstanceStatsData(); + return new FunctionInstanceStatsDataImpl(); } final String assignedWorkerId = assignment.getWorkerId(); @@ -556,12 +556,12 @@ public FunctionInstanceStatsData getFunctionInstanceStats(String tenant, String FunctionCommon.getFullyQualifiedInstanceId(assignment.getInstance())); RuntimeSpawner runtimeSpawner = functionRuntimeInfo.getRuntimeSpawner(); if (runtimeSpawner != null) { - return (FunctionInstanceStatsData) + return (FunctionInstanceStatsDataImpl) WorkerUtils.getFunctionInstanceStats( FunctionCommon.getFullyQualifiedInstanceId( assignment.getInstance()), functionRuntimeInfo, instanceId).getMetrics(); } - return new FunctionInstanceStatsData(); + return new FunctionInstanceStatsDataImpl(); } else { // query other worker @@ -573,7 +573,7 @@ public FunctionInstanceStatsData getFunctionInstanceStats(String tenant, String } } if (workerInfo == null) { - return new FunctionInstanceStatsData(); + return new FunctionInstanceStatsDataImpl(); } if (uri == null) { @@ -608,10 +608,10 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu int parallelism = assignment.getInstance().getFunctionMetaData().getFunctionDetails().getParallelism(); for (int i = 0; i < parallelism; ++i) { - FunctionInstanceStatsData functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, + FunctionInstanceStatsDataImpl functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, functionName, i, null); - FunctionInstanceStats functionInstanceStats = new FunctionInstanceStats(); + FunctionInstanceStatsImpl functionInstanceStats = new FunctionInstanceStatsImpl(); functionInstanceStats.setInstanceId(i); functionInstanceStats.setMetrics(functionInstanceStatsData); functionStats.addInstance(functionInstanceStats); @@ -641,20 +641,20 @@ public FunctionStats getFunctionStats(String tenant, String namespace, String fu for (Assignment assignment : assignments) { boolean isOwner = this.workerConfig.getWorkerId().equals(assignment.getWorkerId()); - FunctionInstanceStatsData functionInstanceStatsData; + FunctionInstanceStatsDataImpl functionInstanceStatsData; if (isOwner) { functionInstanceStatsData = getFunctionInstanceStats(tenant, namespace, functionName, assignment.getInstance().getInstanceId(), null); } else { functionInstanceStatsData = - (FunctionInstanceStatsData) this.functionAdmin.functions().getFunctionStats( + (FunctionInstanceStatsDataImpl) this.functionAdmin.functions().getFunctionStats( assignment.getInstance().getFunctionMetaData().getFunctionDetails().getTenant(), assignment.getInstance().getFunctionMetaData().getFunctionDetails().getNamespace(), assignment.getInstance().getFunctionMetaData().getFunctionDetails().getName(), assignment.getInstance().getInstanceId()); } - FunctionInstanceStats functionInstanceStats = new FunctionInstanceStats(); + FunctionInstanceStatsImpl functionInstanceStats = new FunctionInstanceStatsImpl(); functionInstanceStats.setInstanceId(assignment.getInstance().getInstanceId()); functionInstanceStats.setMetrics(functionInstanceStatsData); functionStats.addInstance(functionInstanceStats); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java index 68692dbc095c7..d7c6a71f8c36f 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerUtils.java @@ -41,9 +41,8 @@ import org.apache.pulsar.client.api.Reader; import org.apache.pulsar.client.api.ReaderBuilder; import org.apache.pulsar.common.conf.InternalConfigurationData; -import org.apache.pulsar.common.policies.data.FunctionInstanceStats; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.functions.proto.InstanceCommunication; import org.apache.pulsar.functions.runtime.Runtime; import org.apache.pulsar.functions.runtime.RuntimeSpawner; @@ -263,12 +262,12 @@ && isNotBlank(authParams)) { } } - public static FunctionInstanceStats getFunctionInstanceStats(String fullyQualifiedInstanceName, - FunctionRuntimeInfo functionRuntimeInfo, - int instanceId) { + public static FunctionInstanceStatsImpl getFunctionInstanceStats(String fullyQualifiedInstanceName, + FunctionRuntimeInfo functionRuntimeInfo, + int instanceId) { RuntimeSpawner functionRuntimeSpawner = functionRuntimeInfo.getRuntimeSpawner(); - FunctionInstanceStats functionInstanceStats = new FunctionInstanceStats(); + FunctionInstanceStatsImpl functionInstanceStats = new FunctionInstanceStatsImpl(); if (functionRuntimeSpawner != null) { Runtime functionRuntime = functionRuntimeSpawner.getRuntime(); if (functionRuntime != null) { @@ -277,7 +276,7 @@ public static FunctionInstanceStats getFunctionInstanceStats(String fullyQualifi InstanceCommunication.MetricsData metricsData = functionRuntime.getMetrics(instanceId).get(); functionInstanceStats.setInstanceId(instanceId); - FunctionInstanceStatsData functionInstanceStatsData = new FunctionInstanceStatsData(); + FunctionInstanceStatsDataImpl functionInstanceStatsData = new FunctionInstanceStatsDataImpl(); functionInstanceStatsData.setReceivedTotal(metricsData.getReceivedTotal()); functionInstanceStatsData.setProcessedSuccessfullyTotal(metricsData.getProcessedSuccessfullyTotal()); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java index 32880e6bac518..5d10c66330d4f 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java @@ -60,7 +60,7 @@ import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.Codec; @@ -88,11 +88,9 @@ import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; -import java.net.URISyntaxException; import java.net.URL; import java.util.Base64; import java.util.Collection; @@ -781,13 +779,13 @@ public FunctionStats getFunctionStats(final String tenant, } @Override - public FunctionInstanceStatsData getFunctionsInstanceStats(final String tenant, - final String namespace, - final String componentName, - final String instanceId, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps) { + public FunctionInstanceStatsDataImpl getFunctionsInstanceStats(final String tenant, + final String namespace, + final String componentName, + final String instanceId, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); } @@ -830,7 +828,7 @@ public FunctionInstanceStatsData getFunctionsInstanceStats(final String tenant, } FunctionRuntimeManager functionRuntimeManager = worker().getFunctionRuntimeManager(); - FunctionInstanceStatsData functionInstanceStatsData; + FunctionInstanceStatsDataImpl functionInstanceStatsData; try { functionInstanceStatsData = functionRuntimeManager.getFunctionInstanceStats(tenant, namespace, componentName, Integer.parseInt(instanceId), uri); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java index 38bc5982a9f1e..0d0a9f83621a5 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/WorkerImpl.java @@ -21,8 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionInstanceStats; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; import org.apache.pulsar.common.policies.data.WorkerFunctionInstanceStats; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.proto.Function; @@ -177,7 +176,7 @@ public List getFunctionsMetrics(String clientRole) Function.FunctionDetails functionDetails = functionRuntimeInfo.getFunctionInstance().getFunctionMetaData().getFunctionDetails(); int parallelism = functionDetails.getParallelism(); for (int i = 0; i < parallelism; ++i) { - FunctionInstanceStats functionInstanceStats = + FunctionInstanceStatsImpl functionInstanceStats = WorkerUtils.getFunctionInstanceStats(fullyQualifiedInstanceName, functionRuntimeInfo, i); WorkerFunctionInstanceStats workerFunctionInstanceStats = new WorkerFunctionInstanceStats(); workerFunctionInstanceStats.setName(FunctionCommon.getFullyQualifiedInstanceId( @@ -187,7 +186,7 @@ public List getFunctionsMetrics(String clientRole) metricsList.add(workerFunctionInstanceStats); } } else { - FunctionInstanceStats functionInstanceStats = + FunctionInstanceStatsImpl functionInstanceStats = WorkerUtils.getFunctionInstanceStats(fullyQualifiedInstanceName, functionRuntimeInfo, functionRuntimeInfo.getFunctionInstance().getInstanceId()); WorkerFunctionInstanceStats workerFunctionInstanceStats = new WorkerFunctionInstanceStats(); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java index 72e711d316e26..92dbee3a50315 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java @@ -27,7 +27,7 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; @@ -183,7 +183,7 @@ public FunctionStats getFunctionStats(final @PathParam("tenant") String tenant, @GET @ApiOperation( value = "Displays the stats of a Pulsar Function instance", - response = FunctionInstanceStatsData.class + response = FunctionInstanceStatsDataImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -193,7 +193,7 @@ public FunctionStats getFunctionStats(final @PathParam("tenant") String tenant, }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/{instanceId}/stats") - public FunctionInstanceStatsData getFunctionInstanceStats( + public FunctionInstanceStatsDataImpl getFunctionInstanceStats( final @PathParam("tenant") String tenant, final @PathParam("namespace") String namespace, final @PathParam("functionName") String functionName, diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java index 5a00dd3f6bcc6..fa3f5495ad8c5 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java @@ -27,7 +27,7 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.functions.worker.WorkerService; @@ -100,13 +100,13 @@ FunctionStats getFunctionStats(final String tenant, final String clientRole, final AuthenticationDataSource clientAuthenticationDataHttps); - FunctionInstanceStatsData getFunctionsInstanceStats(final String tenant, - final String namespace, - final String componentName, - final String instanceId, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps); + FunctionInstanceStatsDataImpl getFunctionsInstanceStats(final String tenant, + final String namespace, + final String componentName, + final String instanceId, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps); String triggerFunction(final String tenant, final String namespace, diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java index f4cf36bef1824..b1651f32469af 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java @@ -19,7 +19,6 @@ package org.apache.pulsar.functions.worker.rest.api; import org.apache.distributedlog.api.namespace.Namespace; -import org.apache.pulsar.broker.authentication.AuthenticationDataHttp; import org.apache.pulsar.broker.authentication.AuthenticationDataSource; import org.apache.pulsar.broker.authorization.AuthorizationService; import org.apache.pulsar.client.admin.Namespaces; @@ -27,7 +26,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.FunctionInstanceStats; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.functions.api.Context; @@ -57,7 +56,6 @@ import org.testng.annotations.ObjectFactory; import org.testng.annotations.Test; -import javax.servlet.http.HttpServletRequest; import java.io.InputStream; import java.util.Collections; import java.util.HashMap; @@ -234,9 +232,9 @@ public void testMetricsEmpty() { FunctionRuntimeInfo functionRuntimeInfo = mock(FunctionRuntimeInfo.class); doReturn(runtimeSpawner).when(functionRuntimeInfo).getRuntimeSpawner(); - FunctionInstanceStats instanceStats1 = WorkerUtils + FunctionInstanceStatsImpl instanceStats1 = WorkerUtils .getFunctionInstanceStats("public/default/test", functionRuntimeInfo, 0); - FunctionInstanceStats instanceStats2 = WorkerUtils + FunctionInstanceStatsImpl instanceStats2 = WorkerUtils .getFunctionInstanceStats("public/default/test", functionRuntimeInfo, 1); FunctionStats functionStats = new FunctionStats(); From 6fefb6add4e7dbe0e02ef8dee1e34b06cfd45ab4 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:38:24 +0800 Subject: [PATCH 47/51] NamespaceIsolationData --- .../cache/ConfigurationCacheService.java | 4 +-- .../broker/resources/NamespaceResources.java | 8 ++--- .../broker/admin/impl/ClustersBase.java | 18 +++++----- .../pulsar/broker/admin/AdminApiTest.java | 12 +++---- .../pulsar/broker/admin/AdminApiTest2.java | 6 ++-- .../apache/pulsar/broker/admin/AdminTest.java | 4 +-- .../broker/admin/v1/V1_AdminApiTest.java | 12 +++---- .../broker/loadbalance/LoadBalancerTest.java | 8 ++--- .../ModularLoadManagerImplTest.java | 8 ++--- .../SimpleLoadManagerImplTest.java | 4 +-- .../apache/pulsar/client/admin/Clusters.java | 20 +++++------ ...rface.java => NamespaceIsolationData.java} | 2 +- .../client/admin/internal/ClustersImpl.java | 36 +++++++++---------- .../cli/CmdNamespaceIsolationPolicy.java | 16 ++++----- ...a.java => NamespaceIsolationDataImpl.java} | 6 ++-- .../impl/NamespaceIsolationPolicies.java | 18 +++++----- .../impl/NamespaceIsolationPolicyImpl.java | 4 +-- .../common/util/ObjectMapperFactory.java | 4 +-- .../data/NamespaceIsolationDataTest.java | 6 ++-- .../impl/NamespaceIsolationPoliciesTest.java | 14 ++++---- .../NamespaceIsolationPolicyImplTest.java | 6 ++-- 21 files changed, 108 insertions(+), 108 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{NamespaceIsolationDataInterface.java => NamespaceIsolationData.java} (96%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{NamespaceIsolationData.java => NamespaceIsolationDataImpl.java} (95%) diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java index 4141da915003e..c83edde283cf4 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java @@ -26,7 +26,7 @@ import org.apache.pulsar.broker.resources.PulsarResources; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomainImpl; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; @@ -121,7 +121,7 @@ public ClusterDataImpl deserialize(String path, byte[] content) throws Exception @SuppressWarnings("unchecked") public NamespaceIsolationPolicies deserialize(String path, byte[] content) throws Exception { return new NamespaceIsolationPolicies(ObjectMapperFactory - .getThreadLocal().readValue(content, new TypeReference>() { + .getThreadLocal().readValue(content, new TypeReference>() { })); } }; diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java index 4cb08f1e28f4b..58d493ee17135 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/NamespaceResources.java @@ -24,7 +24,7 @@ import lombok.Getter; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.metadata.api.MetadataStoreException; @@ -43,14 +43,14 @@ public NamespaceResources(MetadataStoreExtended configurationStore, int operatio partitionedTopicResources = new PartitionedTopicResources(configurationStore, operationTimeoutSec); } - public static class IsolationPolicyResources extends BaseResources> { + public static class IsolationPolicyResources extends BaseResources> { public IsolationPolicyResources(MetadataStoreExtended store, int operationTimeoutSec) { - super(store, new TypeReference>() { + super(store, new TypeReference>() { }, operationTimeoutSec); } public Optional getPolicies(String path) throws MetadataStoreException { - Optional> data = super.get(path); + Optional> data = super.get(path); return data.isPresent() ? Optional.of(new NamespaceIsolationPolicies(data.get())) : Optional.empty(); } } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java index 5cb15b0af5bb9..dd1f3faee8a60 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java @@ -59,7 +59,7 @@ import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomainImpl; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImpl; import org.apache.pulsar.common.util.FutureUtil; @@ -433,7 +433,7 @@ private void deleteFailureDomain(String clusterPath) { @Path("/{cluster}/namespaceIsolationPolicies") @ApiOperation( value = "Get the namespace isolation policies assigned to the cluster.", - response = NamespaceIsolationData.class, + response = NamespaceIsolationDataImpl.class, responseContainer = "Map", notes = "This operation requires Pulsar superuser privileges." ) @@ -442,7 +442,7 @@ private void deleteFailureDomain(String clusterPath) { @ApiResponse(code = 404, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public Map getNamespaceIsolationPolicies( + public Map getNamespaceIsolationPolicies( @ApiParam( value = "The cluster name", required = true @@ -471,7 +471,7 @@ public Map getNamespaceIsolationPolicies( @Path("/{cluster}/namespaceIsolationPolicies/{policyName}") @ApiOperation( value = "Get the single namespace isolation policy assigned to the cluster.", - response = NamespaceIsolationData.class, + response = NamespaceIsolationDataImpl.class, notes = "This operation requires Pulsar superuser privileges." ) @ApiResponses(value = { @@ -480,7 +480,7 @@ public Map getNamespaceIsolationPolicies( @ApiResponse(code = 412, message = "Cluster doesn't exist."), @ApiResponse(code = 500, message = "Internal server error.") }) - public NamespaceIsolationData getNamespaceIsolationPolicy( + public NamespaceIsolationDataImpl getNamespaceIsolationPolicy( @ApiParam( value = "The cluster name", required = true @@ -541,7 +541,7 @@ public List getBrokersWithNamespaceIsolationPo Set availableBrokers; final String nsIsolationPoliciesPath = AdminResource.path("clusters", cluster, NAMESPACE_ISOLATION_POLICIES); - Map nsPolicies; + Map nsPolicies; try { availableBrokers = pulsar().getLoadManager().get().getAvailableBrokers(); } catch (Exception e) { @@ -609,7 +609,7 @@ public BrokerNamespaceIsolationDataImpl getBrokerWithNamespaceIsolationPolicy( validateClusterExists(cluster); final String nsIsolationPoliciesPath = AdminResource.path("clusters", cluster, NAMESPACE_ISOLATION_POLICIES); - Map nsPolicies; + Map nsPolicies; try { Optional nsPoliciesResult = namespaceIsolationPolicies() .getPolicies(nsIsolationPoliciesPath); @@ -669,7 +669,7 @@ public void setNamespaceIsolationPolicy( value = "The namespace isolation policy data", required = true ) - NamespaceIsolationData policyData + NamespaceIsolationDataImpl policyData ) { validateSuperUserAccess(); validateClusterExists(cluster); @@ -722,7 +722,7 @@ public void setNamespaceIsolationPolicy( // get matched namespaces; call unload for each namespaces; private void filterAndUnloadMatchedNameSpaces(AsyncResponse asyncResponse, - NamespaceIsolationData policyData) throws Exception { + NamespaceIsolationDataImpl policyData) throws Exception { Namespaces namespaces = pulsar().getAdminClient().namespaces(); List nssToUnload = Lists.newArrayList(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 15955542e9a23..25112631af1a7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -112,8 +112,8 @@ import org.apache.pulsar.common.policies.data.BrokerInfo; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ConsumerStats; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; @@ -278,7 +278,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { try { // create String policyName1 = "policy-1"; - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList(); nsPolicyData1.namespaces.add("other/use/other.*"); nsPolicyData1.primary = new ArrayList(); @@ -293,7 +293,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("test", policyName1, nsPolicyData1); String policyName2 = "policy-2"; - NamespaceIsolationData nsPolicyData2 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData2 = new NamespaceIsolationDataImpl(); nsPolicyData2.namespaces = new ArrayList(); nsPolicyData2.namespaces.add("other/use/other.*"); nsPolicyData2.primary = new ArrayList(); @@ -308,7 +308,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("test", policyName2, nsPolicyData2); // verify create indirectly with get - Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("test"); + Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("test"); assertEquals(policiesMap.get(policyName1), nsPolicyData1); assertEquals(policiesMap.get(policyName2), nsPolicyData2); @@ -347,7 +347,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName1), nsPolicyData1); // verify single get - NamespaceIsolationData policy1Data = (NamespaceIsolationData) admin.clusters().getNamespaceIsolationPolicy("test", policyName1); + NamespaceIsolationDataImpl policy1Data = (NamespaceIsolationDataImpl) admin.clusters().getNamespaceIsolationPolicy("test", policyName1); assertEquals(policy1Data, nsPolicyData1); // verify creation of more than one policy @@ -419,7 +419,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { } // validate regex: invlid regex for primary and seconday - NamespaceIsolationData nsRegexPolicy = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsRegexPolicy = new NamespaceIsolationDataImpl(); nsRegexPolicy.namespaces = new ArrayList(); nsRegexPolicy.namespaces.add("other/use/other.*"); nsRegexPolicy.primary = new ArrayList(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index e6f9fe61e7839..2eeb9ddc6e374 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -86,7 +86,7 @@ import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; @@ -969,7 +969,7 @@ public void brokerNamespaceIsolationPolicies() throws Exception { String namespaceRegex = "other/" + cluster + "/other.*"; String brokerName = pulsar.getAdvertisedAddress(); String brokerAddress = brokerName + ":" + pulsar.getConfiguration().getWebServicePort().get(); - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList<>(); nsPolicyData1.namespaces.add(namespaceRegex); nsPolicyData1.primary = new ArrayList<>(); @@ -1019,7 +1019,7 @@ public void brokerNamespaceIsolationPoliciesUpdateOnTime() throws Exception { // create String policyName1 = "policy-1"; String cluster = pulsar.getConfiguration().getClusterName(); - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList<>(); nsPolicyData1.namespaces.add(ns1Name); nsPolicyData1.primary = new ArrayList<>(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java index feebaf86aa878..d906edcda142c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java @@ -82,7 +82,7 @@ import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.BrokerInfo; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.policies.data.ResourceQuota; @@ -255,7 +255,7 @@ public void clusters() throws Exception { } catch (RestException e) { assertEquals(e.getResponse().getStatus(), 404); } - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("dummy/colo/ns"); policyData.primary = new ArrayList(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index cfe50794ee535..8cc76bdbceef8 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -88,8 +88,8 @@ import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -246,7 +246,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { try { // create String policyName1 = "policy-1"; - NamespaceIsolationData nsPolicyData1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData1 = new NamespaceIsolationDataImpl(); nsPolicyData1.namespaces = new ArrayList<>(); nsPolicyData1.namespaces.add("other/use/other.*"); nsPolicyData1.primary = new ArrayList<>(); @@ -263,7 +263,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("use", policyName1, nsPolicyData1); String policyName2 = "policy-2"; - NamespaceIsolationData nsPolicyData2 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData2 = new NamespaceIsolationDataImpl(); nsPolicyData2.namespaces = new ArrayList<>(); nsPolicyData2.namespaces.add("other/use/other.*"); nsPolicyData2.primary = new ArrayList<>(); @@ -278,7 +278,7 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { admin.clusters().createNamespaceIsolationPolicy("use", policyName2, nsPolicyData2); // verify create indirectly with get - Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("use"); + Map policiesMap = admin.clusters().getNamespaceIsolationPolicies("use"); assertEquals(policiesMap.get(policyName1), nsPolicyData1); assertEquals(policiesMap.get(policyName2), nsPolicyData2); @@ -322,8 +322,8 @@ public void clusterNamespaceIsolationPolicies() throws PulsarAdminException { assertEquals(policiesMap.get(policyName1), nsPolicyData1); // verify single get - NamespaceIsolationData policy1Data = - (NamespaceIsolationData) admin.clusters().getNamespaceIsolationPolicy("use", policyName1); + NamespaceIsolationDataImpl policy1Data = + (NamespaceIsolationDataImpl) admin.clusters().getNamespaceIsolationPolicy("use", policyName1); assertEquals(policy1Data, nsPolicyData1); // verify creation of more than one policy diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java index 8acddb0cf671a..d48c2caeedd0b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java @@ -54,7 +54,7 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BundlesData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; @@ -708,7 +708,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { NamespaceIsolationPolicies policies = new NamespaceIsolationPolicies(); // set up policy that use this broker as primary - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("pulsar/use/primary-ns.*"); policyData.primary = new ArrayList(); @@ -724,7 +724,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { policies.setPolicy("primaryBrokerPolicy", policyData); // set up policy that use this broker as secondary - policyData = new NamespaceIsolationData(); + policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("pulsar/use/secondary-ns.*"); policyData.primary = new ArrayList(); @@ -741,7 +741,7 @@ private void createNamespacePolicies(PulsarService pulsar) throws Exception { policies.setPolicy("secondaryBrokerPolicy", policyData); // set up policy that do not use this broker (neither primary nor secondary) - policyData = new NamespaceIsolationData(); + policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList(); policyData.namespaces.add("pulsar/use/shared-ns.*"); policyData.primary = new ArrayList(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java index c64c8f906458d..c92574cbf315d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java @@ -69,7 +69,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.ServiceUnitId; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.TenantInfo; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.metadata.api.Notification; @@ -505,8 +505,8 @@ public void testNamespaceIsolationPoliciesForPrimaryAndSecondaryBrokers() throws broker2Address, 1); String newPolicyName = "my-ns-isolation-policies"; ObjectMapper jsonMapper = ObjectMapperFactory.create(); - NamespaceIsolationData nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), - NamespaceIsolationData.class); + NamespaceIsolationDataImpl nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), + NamespaceIsolationDataImpl.class); admin1.clusters().createNamespaceIsolationPolicy("use", newPolicyName, nsPolicyData); SimpleResourceAllocationPolicies simpleResourceAllocationPolicies = new SimpleResourceAllocationPolicies( @@ -553,7 +553,7 @@ public boolean isEnableNonPersistentTopics(String brokerUrl) { newPolicyJson = String.format(newPolicyJsonTemplate, tenant, cluster, namespace, broker1Address, broker2Address, 2); - nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), NamespaceIsolationData.class); + nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), NamespaceIsolationDataImpl.class); admin1.clusters().createNamespaceIsolationPolicy("use", newPolicyName, nsPolicyData); // test1: shared=1, primary=1, secondary=1 => It should return primary + secondary diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java index f77c13afab014..5e19d4fa0b434 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java @@ -69,7 +69,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -174,7 +174,7 @@ void shutdown() throws Exception { private void createNamespacePolicies(PulsarService pulsar) throws Exception { NamespaceIsolationPolicies policies = new NamespaceIsolationPolicies(); // set up policy that use this broker as primary - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList<>(); policyData.namespaces.add("pulsar/use/primary-ns.*"); policyData.primary = new ArrayList<>(); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java index 8b0c7174bcbe7..263d8af90454f 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java @@ -30,7 +30,7 @@ import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; +import org.apache.pulsar.common.policies.data.NamespaceIsolationData; /** * Admin interface for clusters management. @@ -289,7 +289,7 @@ public interface Clusters { * @throws PulsarAdminException * Unexpected error */ - Map getNamespaceIsolationPolicies(String cluster) + Map getNamespaceIsolationPolicies(String cluster) throws PulsarAdminException; /** @@ -311,7 +311,7 @@ Map getNamespaceIsolationPolicies(Strin * @throws PulsarAdminException * Unexpected error */ - CompletableFuture> getNamespaceIsolationPoliciesAsync(String cluster); + CompletableFuture> getNamespaceIsolationPoliciesAsync(String cluster); /** * Create a namespace isolation policy for a cluster. @@ -340,7 +340,7 @@ Map getNamespaceIsolationPolicies(Strin * Unexpected error */ void createNamespaceIsolationPolicy( - String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) + String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException; /** @@ -359,7 +359,7 @@ void createNamespaceIsolationPolicy( * @return */ CompletableFuture createNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData); + String cluster, String policyName, NamespaceIsolationData namespaceIsolationData); /** * Returns list of active brokers with namespace-isolation policies attached to it. @@ -428,7 +428,7 @@ CompletableFuture getBrokerWithNamespaceIsolationP * Unexpected error */ void updateNamespaceIsolationPolicy( - String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) + String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException; /** @@ -448,7 +448,7 @@ void updateNamespaceIsolationPolicy( * */ CompletableFuture updateNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData); + String cluster, String policyName, NamespaceIsolationData namespaceIsolationData); /** * Delete a namespace isolation policy for a cluster. @@ -513,7 +513,7 @@ CompletableFuture updateNamespaceIsolationPolicyAsync( * @throws PulsarAdminException * Unexpected error */ - NamespaceIsolationDataInterface getNamespaceIsolationPolicy(String cluster, String policyName) + NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, String policyName) throws PulsarAdminException; /** @@ -527,8 +527,8 @@ NamespaceIsolationDataInterface getNamespaceIsolationPolicy(String cluster, Stri * Policy name * */ - CompletableFuture getNamespaceIsolationPolicyAsync(String cluster, - String policyName); + CompletableFuture getNamespaceIsolationPolicyAsync(String cluster, + String policyName); /** * Create a domain into cluster. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java similarity index 96% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java index bfa558a640104..6feb0d71de7cc 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java @@ -20,7 +20,7 @@ import java.util.List; -public interface NamespaceIsolationDataInterface { +public interface NamespaceIsolationData { List getNamespaces(); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index 5020a58ee5ef9..c908061f6463f 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -41,8 +41,8 @@ import org.apache.pulsar.common.policies.data.ClusterData; import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.FailureDomain; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; public class ClustersImpl extends BaseResource implements Clusters { @@ -234,7 +234,7 @@ public CompletableFuture deleteClusterAsync(String cluster) { } @Override - public Map getNamespaceIsolationPolicies(String cluster) + public Map getNamespaceIsolationPolicies(String cluster) throws PulsarAdminException { try { return getNamespaceIsolationPoliciesAsync(cluster).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -249,15 +249,15 @@ public Map getNamespaceIsolationPolicie } @Override - public CompletableFuture> getNamespaceIsolationPoliciesAsync( + public CompletableFuture> getNamespaceIsolationPoliciesAsync( String cluster) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies"); - final CompletableFuture> future = new CompletableFuture<>(); + final CompletableFuture> future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback>() { + new InvocationCallback>() { @Override - public void completed(Map stringNamespaceIsolationDataMap) { - Map result = new HashMap<>(); + public void completed(Map stringNamespaceIsolationDataMap) { + Map result = new HashMap<>(); stringNamespaceIsolationDataMap.forEach(result::put); future.complete(result); } @@ -345,25 +345,25 @@ public void failed(Throwable throwable) { @Override public void createNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData); } @Override public CompletableFuture createNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) { + String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) { return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData); } @Override public void updateNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData); } @Override public CompletableFuture updateNamespaceIsolationPolicyAsync( - String cluster, String policyName, NamespaceIsolationDataInterface namespaceIsolationData) { + String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) { return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData); } @@ -388,7 +388,7 @@ public CompletableFuture deleteNamespaceIsolationPolicyAsync(String cluste } private void setNamespaceIsolationPolicy(String cluster, String policyName, - NamespaceIsolationDataInterface namespaceIsolationData) throws PulsarAdminException { + NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException { try { setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData) .get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -403,13 +403,13 @@ private void setNamespaceIsolationPolicy(String cluster, String policyName, } private CompletableFuture setNamespaceIsolationPolicyAsync(String cluster, String policyName, - NamespaceIsolationDataInterface namespaceIsolationData) { + NamespaceIsolationData namespaceIsolationData) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName); return asyncPostRequest(path, Entity.entity(namespaceIsolationData, MediaType.APPLICATION_JSON)); } @Override - public NamespaceIsolationDataInterface getNamespaceIsolationPolicy(String cluster, String policyName) + public NamespaceIsolationData getNamespaceIsolationPolicy(String cluster, String policyName) throws PulsarAdminException { try { return getNamespaceIsolationPolicyAsync(cluster, policyName) @@ -425,14 +425,14 @@ public NamespaceIsolationDataInterface getNamespaceIsolationPolicy(String cluste } @Override - public CompletableFuture getNamespaceIsolationPolicyAsync( + public CompletableFuture getNamespaceIsolationPolicyAsync( String cluster, String policyName) { WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(NamespaceIsolationData namespaceIsolationData) { + public void completed(NamespaceIsolationDataImpl namespaceIsolationData) { future.complete(namespaceIsolationData); } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java index 6e4b71b5fea37..73b066c429ce6 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java @@ -30,13 +30,13 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterException; import com.beust.jcommander.Parameters; import com.beust.jcommander.converters.CommaParameterSplitter; -import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; +import org.apache.pulsar.common.policies.data.NamespaceIsolationData; @Parameters(commandDescription = "Operations about namespace isolation policy") public class CmdNamespaceIsolationPolicy extends CmdBase { @@ -65,7 +65,7 @@ void run() throws PulsarAdminException { String policyName = getOneArgument(params, 1, 2); // validate and create the POJO - NamespaceIsolationData namespaceIsolationData = createNamespaceIsolationData(namespaces, primary, secondary, + NamespaceIsolationDataImpl namespaceIsolationData = createNamespaceIsolationData(namespaces, primary, secondary, autoFailoverPolicyTypeName, autoFailoverPolicyParams); getAdmin().clusters().createNamespaceIsolationPolicy(clusterName, policyName, namespaceIsolationData); @@ -80,7 +80,7 @@ private class GetAllPolicies extends CliCommand { void run() throws PulsarAdminException { String clusterName = getOneArgument(params); - Map policyMap = + Map policyMap = getAdmin().clusters().getNamespaceIsolationPolicies(clusterName); print(policyMap); @@ -130,7 +130,7 @@ void run() throws PulsarAdminException { String clusterName = getOneArgument(params, 0, 2); String policyName = getOneArgument(params, 1, 2); - NamespaceIsolationData nsIsolationData = (NamespaceIsolationData) getAdmin().clusters().getNamespaceIsolationPolicy(clusterName, + NamespaceIsolationDataImpl nsIsolationData = (NamespaceIsolationDataImpl) getAdmin().clusters().getNamespaceIsolationPolicy(clusterName, policyName); print(nsIsolationData); @@ -159,8 +159,8 @@ private List validateList(List list) { return list; } - private NamespaceIsolationData createNamespaceIsolationData(List namespaces, List primary, - List secondary, String autoFailoverPolicyTypeName, Map autoFailoverPolicyParams) { + private NamespaceIsolationDataImpl createNamespaceIsolationData(List namespaces, List primary, + List secondary, String autoFailoverPolicyTypeName, Map autoFailoverPolicyParams) { // validate namespaces = validateList(namespaces); @@ -181,7 +181,7 @@ private NamespaceIsolationData createNamespaceIsolationData(List namespa // System.out.println("autoFailoverPolicyTypeName = " + autoFailoverPolicyTypeName); // System.out.println("autoFailoverPolicyParams = " + autoFailoverPolicyParams); - NamespaceIsolationData nsIsolationData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsIsolationData = new NamespaceIsolationDataImpl(); if (namespaces != null) { nsIsolationData.namespaces = namespaces; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataImpl.java similarity index 95% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataImpl.java index f6adc4f191f20..1c3ce58e78eb0 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataImpl.java @@ -38,7 +38,7 @@ description = "The data of namespace isolation configuration" ) @Data -public class NamespaceIsolationData implements NamespaceIsolationDataInterface { +public class NamespaceIsolationDataImpl implements NamespaceIsolationData { @ApiModelProperty( name = "namespaces", @@ -77,8 +77,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - if (obj instanceof NamespaceIsolationData) { - NamespaceIsolationData other = (NamespaceIsolationData) obj; + if (obj instanceof NamespaceIsolationDataImpl) { + NamespaceIsolationDataImpl other = (NamespaceIsolationDataImpl) obj; return Objects.equal(namespaces, other.namespaces) && Objects.equal(primary, other.primary) && Objects.equal(secondary, other.secondary) && Objects.equal(auto_failover_policy, other.auto_failover_policy); diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java index 787505003128a..323ad0c1a9fbe 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicies.java @@ -25,20 +25,20 @@ import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; import org.apache.pulsar.common.policies.data.BrokerAssignment; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; /** * Namespace isolation policies. */ public class NamespaceIsolationPolicies { - private Map policies = null; + private Map policies = null; public NamespaceIsolationPolicies() { - policies = new HashMap(); + policies = new HashMap(); } - public NamespaceIsolationPolicies(Map policiesMap) { + public NamespaceIsolationPolicies(Map policiesMap) { policies = policiesMap; } @@ -65,7 +65,7 @@ public NamespaceIsolationPolicy getPolicyByName(String policyName) { * @return */ public NamespaceIsolationPolicy getPolicyByNamespace(NamespaceName namespace) { - for (NamespaceIsolationData nsPolicyData : policies.values()) { + for (NamespaceIsolationDataImpl nsPolicyData : policies.values()) { if (this.namespaceMatches(namespace, nsPolicyData)) { return new NamespaceIsolationPolicyImpl(nsPolicyData); } @@ -73,7 +73,7 @@ public NamespaceIsolationPolicy getPolicyByNamespace(NamespaceName namespace) { return null; } - private boolean namespaceMatches(NamespaceName namespace, NamespaceIsolationData nsPolicyData) { + private boolean namespaceMatches(NamespaceName namespace, NamespaceIsolationDataImpl nsPolicyData) { for (String nsnameRegex : nsPolicyData.namespaces) { if (namespace.toString().matches(nsnameRegex)) { return true; @@ -88,7 +88,7 @@ private boolean namespaceMatches(NamespaceName namespace, NamespaceIsolationData * @param policyName * @param policyData */ - public void setPolicy(String policyName, NamespaceIsolationData policyData) { + public void setPolicy(String policyName, NamespaceIsolationDataImpl policyData) { policyData.validate(); policies.put(policyName, policyData); } @@ -107,7 +107,7 @@ public void deletePolicy(String policyName) { * * @return All policy data in a map */ - public Map getPolicies() { + public Map getPolicies() { return this.policies; } @@ -118,7 +118,7 @@ public Map getPolicies() { * @return */ public boolean isSharedBroker(String host) { - for (NamespaceIsolationData policyData : this.policies.values()) { + for (NamespaceIsolationDataImpl policyData : this.policies.values()) { NamespaceIsolationPolicyImpl policy = new NamespaceIsolationPolicyImpl(policyData); if (policy.isPrimaryBroker(host)) { // not free for sharing, this is some properties' primary broker diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java index b33d9248c87e4..8c2af70f88d4d 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImpl.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.policies.AutoFailoverPolicy; import org.apache.pulsar.common.policies.NamespaceIsolationPolicy; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; /** * Implementation of the namespace isolation policy. @@ -59,7 +59,7 @@ private List getMatchedBrokers(List brkRegexList, List availab return matchedBrokers; } - public NamespaceIsolationPolicyImpl(NamespaceIsolationData policyData) { + public NamespaceIsolationPolicyImpl(NamespaceIsolationDataImpl policyData) { this.namespaces = policyData.namespaces; this.primary = policyData.primary; this.secondary = policyData.secondary; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 3420a4db6b72e..f78b8c5719acc 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -48,8 +48,8 @@ import org.apache.pulsar.common.policies.data.FunctionInstanceStats; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatsInterface; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; -import org.apache.pulsar.common.policies.data.NamespaceIsolationDataInterface; import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.ResourceQuota; @@ -115,7 +115,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(BrokerNamespaceIsolationData.class, BrokerNamespaceIsolationDataImpl.class); resolver.addMapping(ClusterData.class, ClusterDataImpl.class); resolver.addMapping(FailureDomain.class, FailureDomainImpl.class); - resolver.addMapping(NamespaceIsolationDataInterface.class, NamespaceIsolationData.class); + resolver.addMapping(NamespaceIsolationData.class, NamespaceIsolationDataImpl.class); resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); resolver.addMapping(OffloadPoliciesInterface.class, OffloadPolicies.class); resolver.addMapping(FunctionStatsInterface.class, FunctionStats.class); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java index 5c9dbb535f992..7df8d2268f287 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/NamespaceIsolationDataTest.java @@ -31,8 +31,8 @@ public class NamespaceIsolationDataTest { @Test public void testNamespaceIsolationData() { - NamespaceIsolationData n0 = new NamespaceIsolationData(); - NamespaceIsolationData n1 = new NamespaceIsolationData(); + NamespaceIsolationDataImpl n0 = new NamespaceIsolationDataImpl(); + NamespaceIsolationDataImpl n1 = new NamespaceIsolationDataImpl(); assertNotEquals(new OldPolicies(), n0); n0.namespaces = new ArrayList<>(); n0.primary = new ArrayList<>(); @@ -44,7 +44,7 @@ public void testNamespaceIsolationData() { n0.secondary.add(String.format("s%d", i)); } - assertNotEquals(new NamespaceIsolationData(), n0); + assertNotEquals(new NamespaceIsolationDataImpl(), n0); n1.namespaces = n0.namespaces; n1.primary = n0.primary; diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java index f9c767373e2fd..d9f08796f5edb 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPoliciesTest.java @@ -40,7 +40,7 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.testng.annotations.Test; @@ -67,7 +67,7 @@ public void testJsonSerialization() throws Exception { byte[] outJson = jsonMapperForWriter.writeValueAsBytes(policies.getPolicies()); assertEquals(new String(outJson), this.defaultJson); - NamespaceIsolationData nsPolicyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl nsPolicyData = new NamespaceIsolationDataImpl(); nsPolicyData.namespaces = new ArrayList<>(); nsPolicyData.namespaces.add("other/use/other.*"); nsPolicyData.primary = new ArrayList<>(); @@ -82,8 +82,8 @@ public void testJsonSerialization() throws Exception { policies.setPolicy("otherPolicy", nsPolicyData); byte[] morePolicyJson = jsonMapperForWriter.writeValueAsBytes(policies.getPolicies()); ObjectMapper jsonParser = ObjectMapperFactory.create(); - Map policiesMap = jsonParser.readValue(morePolicyJson, - new TypeReference>() { + Map policiesMap = jsonParser.readValue(morePolicyJson, + new TypeReference>() { }); assertEquals(policiesMap.size(), 2); } @@ -134,8 +134,8 @@ public void testSetPolicy() throws Exception { String newPolicyJson = "{\"namespaces\":[\"pulsar/use/TESTNS.*\"],\"primary\":[\"prod1-broker[45].messaging.use.example.com\"],\"secondary\":[\"prod1-broker.*.use.example.com\"],\"auto_failover_policy\":{\"policy_type\":\"min_available\",\"parameters\":{\"min_limit\":2,\"usage_threshold\":80}}}"; String newPolicyName = "policy2"; ObjectMapper jsonMapper = ObjectMapperFactory.create(); - NamespaceIsolationData nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), - NamespaceIsolationData.class); + NamespaceIsolationDataImpl nsPolicyData = jsonMapper.readValue(newPolicyJson.getBytes(), + NamespaceIsolationDataImpl.class); policies.setPolicy(newPolicyName, nsPolicyData); assertEquals(policies.getPolicies().size(), 2); @@ -149,7 +149,7 @@ public void testSetPolicy() throws Exception { private NamespaceIsolationPolicies getDefaultTestPolicies() throws Exception { ObjectMapper jsonMapper = ObjectMapperFactory.create(); return new NamespaceIsolationPolicies(jsonMapper - .readValue(this.defaultJson.getBytes(), new TypeReference>() { + .readValue(this.defaultJson.getBytes(), new TypeReference>() { })); } diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java index 0700d0717a1e8..5177b26d97678 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/impl/NamespaceIsolationPolicyImplTest.java @@ -37,7 +37,7 @@ import org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataImpl; import org.apache.pulsar.common.policies.data.AutoFailoverPolicyType; import org.apache.pulsar.common.policies.data.BrokerStatus; -import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.OldPolicies; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.testng.annotations.Test; @@ -48,13 +48,13 @@ public class NamespaceIsolationPolicyImplTest { private NamespaceIsolationPolicyImpl getDefaultPolicy() throws Exception { ObjectMapper jsonMapper = ObjectMapperFactory.create(); return new NamespaceIsolationPolicyImpl( - jsonMapper.readValue(this.defaultPolicyJson.getBytes(), NamespaceIsolationData.class)); + jsonMapper.readValue(this.defaultPolicyJson.getBytes(), NamespaceIsolationDataImpl.class)); } @Test public void testConstructor() throws Exception { NamespaceIsolationPolicyImpl defaultPolicy = this.getDefaultPolicy(); - NamespaceIsolationData policyData = new NamespaceIsolationData(); + NamespaceIsolationDataImpl policyData = new NamespaceIsolationDataImpl(); policyData.namespaces = new ArrayList<>(); policyData.namespaces.add("pulsar/use/test.*"); policyData.primary = new ArrayList<>(); From 2709d0146429631c530292d0c2bf19ff2a8a4f2f Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:39:29 +0800 Subject: [PATCH 48/51] OffloadPolicies --- .../bookkeeper/mledger/LedgerOffloader.java | 4 +- .../mledger/LedgerOffloaderFactory.java | 12 ++--- .../mledger/impl/NullLedgerOffloader.java | 4 +- .../mledger/impl/OffloadLedgerDeleteTest.java | 4 +- .../mledger/impl/OffloadPrefixReadTest.java | 16 +++---- .../mledger/impl/OffloadPrefixTest.java | 16 +++---- .../pulsar/broker/ServiceConfiguration.java | 4 -- .../apache/pulsar/broker/PulsarService.java | 10 ++-- .../broker/admin/impl/NamespacesBase.java | 22 ++++----- .../admin/impl/PersistentTopicsBase.java | 14 +++--- .../pulsar/broker/admin/v2/Namespaces.java | 8 ++-- .../broker/admin/v2/PersistentTopics.java | 4 +- .../pulsar/broker/service/BrokerService.java | 12 ++--- .../broker/admin/AdminApiOffloadTest.java | 22 ++++----- .../pulsar/broker/admin/NamespacesTest.java | 40 ++++++++-------- .../pulsar/client/admin/Namespaces.java | 10 ++-- .../apache/pulsar/client/admin/Topics.java | 14 +++--- ...iesInterface.java => OffloadPolicies.java} | 2 +- .../pulsar/common/policies/data/Policies.java | 2 +- .../client/admin/internal/NamespacesImpl.java | 16 +++---- .../client/admin/internal/TopicsImpl.java | 22 ++++----- .../pulsar/admin/cli/PulsarAdminToolTest.java | 6 +-- .../pulsar/admin/cli/CmdNamespaces.java | 17 ++++--- .../apache/pulsar/admin/cli/CmdTopics.java | 7 ++- ...Policies.java => OffloadPoliciesImpl.java} | 46 +++++++++---------- .../common/policies/data/TopicPolicies.java | 2 +- .../common/util/ObjectMapperFactory.java | 4 +- .../policies/data/OffloadPoliciesTest.java | 28 +++++------ .../sql/presto/PulsarConnectorCache.java | 8 ++-- .../sql/presto/PulsarConnectorConfig.java | 6 +-- .../pulsar/sql/presto/PulsarRecordCursor.java | 4 +- .../apache/pulsar/sql/presto/PulsarSplit.java | 8 ++-- .../pulsar/sql/presto/PulsarSplitManager.java | 10 ++-- .../sql/presto/TestPulsarConnectorConfig.java | 4 +- .../sql/presto/TestPulsarSplitManager.java | 4 +- .../FileSystemLedgerOffloaderFactory.java | 7 ++- .../FileSystemManagedLedgerOffloader.java | 12 ++--- .../offload/filesystem/FileStoreTestBase.java | 4 +- .../jcloud/JCloudLedgerOffloaderFactory.java | 6 +-- .../impl/BlobStoreManagedLedgerOffloader.java | 6 +-- 40 files changed, 219 insertions(+), 228 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{OffloadPoliciesInterface.java => OffloadPolicies.java} (99%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{OffloadPolicies.java => OffloadPoliciesImpl.java} (93%) diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java index 32fbc9ca8fd7f..ead9db73965e4 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloader.java @@ -27,7 +27,7 @@ import org.apache.bookkeeper.common.annotation.InterfaceAudience; import org.apache.bookkeeper.common.annotation.InterfaceStability; import org.apache.bookkeeper.mledger.proto.MLDataFormats; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; /** * Interface for offloading ledgers to long-term storage. @@ -211,7 +211,7 @@ default CompletableFuture deleteOffloaded(UUID uid, * * @return offload policies */ - OffloadPolicies getOffloadPolicies(); + OffloadPoliciesImpl getOffloadPolicies(); /** * Close the resources if necessary diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java index dd0e6c962b9cd..c854996cd1685 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/LedgerOffloaderFactory.java @@ -23,7 +23,7 @@ import org.apache.bookkeeper.common.annotation.InterfaceAudience.LimitedPrivate; import org.apache.bookkeeper.common.annotation.InterfaceStability.Evolving; import org.apache.bookkeeper.common.util.OrderedScheduler; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.protocol.schema.SchemaStorage; /** @@ -50,7 +50,7 @@ public interface LedgerOffloaderFactory { * @return the offloader instance * @throws IOException when fail to create an offloader */ - T create(OffloadPolicies offloadPolicies, + T create(OffloadPoliciesImpl offloadPolicies, Map userMetadata, OrderedScheduler scheduler) throws IOException; @@ -65,10 +65,10 @@ T create(OffloadPolicies offloadPolicies, * @return the offloader instance * @throws IOException when fail to create an offloader */ - default T create(OffloadPolicies offloadPolicies, - Map userMetadata, - SchemaStorage schemaStorage, - OrderedScheduler scheduler) + default T create(OffloadPoliciesImpl offloadPolicies, + Map userMetadata, + SchemaStorage schemaStorage, + OrderedScheduler scheduler) throws IOException { return create(offloadPolicies, userMetadata, scheduler); } diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java index aa3aae71d1db7..b9a4df59cce00 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/NullLedgerOffloader.java @@ -24,7 +24,7 @@ import org.apache.bookkeeper.client.api.ReadHandle; import org.apache.bookkeeper.mledger.LedgerOffloader; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; /** * Null implementation that throws an error on any invokation. @@ -63,7 +63,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uid, } @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return null; } diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java index 736cd8bd8362b..258987cbfe31c 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadLedgerDeleteTest.java @@ -33,7 +33,7 @@ import org.apache.bookkeeper.mledger.util.MockClock; import org.apache.bookkeeper.test.MockedBookKeeperTestCase; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -210,7 +210,7 @@ public void testLaggedDeleteSlowConsumer() throws Exception { @Test public void isOffloadedNeedsDeleteTest() throws Exception { - OffloadPolicies offloadPolicies = new OffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); LedgerOffloader ledgerOffloader = Mockito.mock(LedgerOffloader.class); Mockito.when(ledgerOffloader.getOffloadPolicies()).thenReturn(offloadPolicies); diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java index f7597bf2dee10..426a00db25ec8 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixReadTest.java @@ -58,7 +58,7 @@ import org.apache.bookkeeper.mledger.util.MockClock; import org.apache.bookkeeper.net.BookieId; import org.apache.bookkeeper.test.MockedBookKeeperTestCase; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.testng.Assert; import org.testng.annotations.Test; @@ -202,14 +202,14 @@ static class MockLedgerOffloader implements LedgerOffloader { ConcurrentHashMap offloads = new ConcurrentHashMap(); - OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY); + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY); @Override @@ -246,7 +246,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uuid, }; @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java index ffbc2ae27a68d..a7092e4ec46f6 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java @@ -48,7 +48,7 @@ import org.apache.bookkeeper.mledger.proto.MLDataFormats.ManagedLedgerInfo.LedgerInfo; import org.apache.bookkeeper.test.MockedBookKeeperTestCase; import org.apache.commons.lang3.tuple.Pair; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Test; @@ -991,14 +991,14 @@ Set deletedOffloads() { return deletes.keySet(); } - OffloadPolicies offloadPolicies = OffloadPolicies.create("S3", "", "", "", + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, - OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY); + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS, + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY); @Override public String getOffloadDriverName() { @@ -1044,7 +1044,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uuid, }; @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java index 1c69c90503318..4cfcff0951e1f 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Properties; import java.util.Set; @@ -34,19 +33,16 @@ import lombok.Setter; import org.apache.bookkeeper.client.api.DigestType; import org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider; -import org.apache.pulsar.broker.validator.MultipleListenerValidator; import org.apache.pulsar.common.configuration.Category; import org.apache.pulsar.common.configuration.FieldContext; import org.apache.pulsar.common.configuration.PulsarConfiguration; import org.apache.pulsar.common.nar.NarClassLoader; import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; -import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.TopicType; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.sasl.SaslConstants; -import org.apache.pulsar.policies.data.loadbalancer.AdvertisedListener; /** * Pulsar service configuration object. diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java index bc0665f755adb..7b71a9f7803a1 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java @@ -124,7 +124,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.protocol.schema.SchemaStorage; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.netty.EventLoopUtil; @@ -642,7 +642,7 @@ config, localMetadataStore, getZkClient(), bkClientFactory, ioEventLoopGroup schemaStorage, config.getSchemaRegistryCompatibilityCheckers()); this.defaultOffloader = createManagedLedgerOffloader( - OffloadPolicies.create(this.getConfiguration().getProperties())); + OffloadPoliciesImpl.create(this.getConfiguration().getProperties())); this.brokerInterceptor = BrokerInterceptors.load(config); brokerService.setInterceptor(getBrokerInterceptor()); this.brokerInterceptor.initialize(this); @@ -1117,7 +1117,7 @@ public ManagedLedgerStorage getManagedLedgerClientFactory() { * @param offloadPolicies the OffloadPolicies * @return LedgerOffloader */ - public LedgerOffloader getManagedLedgerOffloader(NamespaceName namespaceName, OffloadPolicies offloadPolicies) { + public LedgerOffloader getManagedLedgerOffloader(NamespaceName namespaceName, OffloadPoliciesImpl offloadPolicies) { if (offloadPolicies == null) { return getDefaultOffloader(); } @@ -1138,7 +1138,7 @@ public LedgerOffloader getManagedLedgerOffloader(NamespaceName namespaceName, Of }); } - public synchronized LedgerOffloader createManagedLedgerOffloader(OffloadPolicies offloadPolicies) + public synchronized LedgerOffloader createManagedLedgerOffloader(OffloadPoliciesImpl offloadPolicies) throws PulsarServerException { try { if (StringUtils.isNotBlank(offloadPolicies.getManagedLedgerOffloadDriver())) { @@ -1245,7 +1245,7 @@ public synchronized Compactor getCompactor() throws PulsarServerException { return this.compactor; } - protected synchronized OrderedScheduler getOffloaderScheduler(OffloadPolicies offloadPolicies) { + protected synchronized OrderedScheduler getOffloaderScheduler(OffloadPoliciesImpl offloadPolicies) { if (this.offloaderScheduler == null) { this.offloaderScheduler = OrderedScheduler.newSchedulerBuilder() .numThreads(offloadPolicies.getManagedLedgerOffloadMaxThreads()) 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 20446f41980e6..c6c09e46e0f30 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 @@ -87,7 +87,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -2260,7 +2260,7 @@ protected void internalSetOffloadThreshold(long newThreshold) { final String path = path(POLICIES, namespaceName.toString()); updatePolicies(path, (policies) -> { if (policies.offload_policies == null) { - policies.offload_policies = new OffloadPolicies(); + policies.offload_policies = new OffloadPoliciesImpl(); } policies.offload_policies.setManagedLedgerOffloadThresholdInBytes(newThreshold); policies.offload_threshold = newThreshold; @@ -2295,7 +2295,7 @@ protected void internalSetOffloadDeletionLag(Long newDeletionLagMs) { final String path = path(POLICIES, namespaceName.toString()); updatePolicies(path, (policies) -> { if (policies.offload_policies == null) { - policies.offload_policies = new OffloadPolicies(); + policies.offload_policies = new OffloadPoliciesImpl(); } policies.offload_policies.setManagedLedgerOffloadDeletionLagInMillis(newDeletionLagMs); policies.offload_deletion_lag_ms = newDeletionLagMs; @@ -2445,7 +2445,7 @@ private void mutatePolicy(Function policyTransformation, } } - protected void internalSetOffloadPolicies(AsyncResponse asyncResponse, OffloadPolicies offloadPolicies) { + protected void internalSetOffloadPolicies(AsyncResponse asyncResponse, OffloadPoliciesImpl offloadPolicies) { validateNamespacePolicyOperation(namespaceName, PolicyName.OFFLOAD, PolicyOperation.WRITE); validatePoliciesReadOnlyAccess(); validateOffloadPolicies(offloadPolicies); @@ -2454,13 +2454,13 @@ protected void internalSetOffloadPolicies(AsyncResponse asyncResponse, OffloadPo final String path = path(POLICIES, namespaceName.toString()); namespaceResources().setAsync(path, (policies) -> { if (Objects.equals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), - OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS)) { + OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS)) { offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(policies.offload_deletion_lag_ms); } else { policies.offload_deletion_lag_ms = offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(); } if (Objects.equals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), - OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES)) { + OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES)) { offloadPolicies.setManagedLedgerOffloadThresholdInBytes(policies.offload_threshold); } else { policies.offload_threshold = offloadPolicies.getManagedLedgerOffloadThresholdInBytes(); @@ -2512,7 +2512,7 @@ protected void internalRemoveOffloadPolicies(AsyncResponse asyncResponse) { } } - private void validateOffloadPolicies(OffloadPolicies offloadPolicies) { + private void validateOffloadPolicies(OffloadPoliciesImpl offloadPolicies) { if (offloadPolicies == null) { log.warn("[{}] Failed to update offload configuration for namespace {}: offloadPolicies is null", clientAppId(), namespaceName); @@ -2522,9 +2522,9 @@ private void validateOffloadPolicies(OffloadPolicies offloadPolicies) { if (!offloadPolicies.driverSupported()) { log.warn("[{}] Failed to update offload configuration for namespace {}: " + "driver is not supported, support value: {}", - clientAppId(), namespaceName, OffloadPolicies.getSupportedDriverNames()); + clientAppId(), namespaceName, OffloadPoliciesImpl.getSupportedDriverNames()); throw new RestException(Status.PRECONDITION_FAILED, - "The driver is not supported, support value: " + OffloadPolicies.getSupportedDriverNames()); + "The driver is not supported, support value: " + OffloadPoliciesImpl.getSupportedDriverNames()); } if (!offloadPolicies.bucketValid()) { log.warn("[{}] Failed to update offload configuration for namespace {}: bucket must be specified", @@ -2534,11 +2534,11 @@ private void validateOffloadPolicies(OffloadPolicies offloadPolicies) { } } - protected OffloadPolicies internalGetOffloadPolicies() { + protected OffloadPoliciesImpl internalGetOffloadPolicies() { validateNamespacePolicyOperation(namespaceName, PolicyName.OFFLOAD, PolicyOperation.READ); Policies policies = getNamespacePolicies(namespaceName); - return (OffloadPolicies) policies.offload_policies; + return (OffloadPoliciesImpl) policies.offload_policies; } protected int internalGetMaxTopicsPerNamespace() { 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 bf833fab81b65..05ae53889ecef 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 @@ -105,7 +105,7 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -769,18 +769,18 @@ protected CompletableFuture internalGetDelayedDeliveryP return CompletableFuture.completedFuture(delayedDeliveryPolicies); } - protected CompletableFuture internalGetOffloadPolicies(boolean applied) { - OffloadPolicies offloadPolicies = + protected CompletableFuture internalGetOffloadPolicies(boolean applied) { + OffloadPoliciesImpl offloadPolicies = getTopicPolicies(topicName).map(TopicPolicies::getOffloadPolicies).orElse(null); if (applied) { - OffloadPolicies namespacePolicy = (OffloadPolicies) getNamespacePolicies(namespaceName).offload_policies; - offloadPolicies = OffloadPolicies.mergeConfiguration(offloadPolicies + OffloadPoliciesImpl namespacePolicy = (OffloadPoliciesImpl) getNamespacePolicies(namespaceName).offload_policies; + offloadPolicies = OffloadPoliciesImpl.mergeConfiguration(offloadPolicies , namespacePolicy, pulsar().getConfiguration().getProperties()); } return CompletableFuture.completedFuture(offloadPolicies); } - protected CompletableFuture internalSetOffloadPolicies(OffloadPolicies offloadPolicies) { + protected CompletableFuture internalSetOffloadPolicies(OffloadPoliciesImpl offloadPolicies) { TopicPolicies topicPolicies = null; try { topicPolicies = pulsar().getTopicPoliciesService().getTopicPolicies(topicName); @@ -850,7 +850,7 @@ protected CompletableFuture internalSetInactiveTopicPolicies(InactiveTopic return pulsar().getTopicPoliciesService().updateTopicPoliciesAsync(topicName, topicPolicies); } - private CompletableFuture internalUpdateOffloadPolicies(OffloadPolicies offloadPolicies, + private CompletableFuture internalUpdateOffloadPolicies(OffloadPoliciesImpl offloadPolicies, TopicName topicName) { return pulsar().getBrokerService().getTopicIfExists(topicName.toString()) .thenAccept(optionalTopic -> { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java index bad90198e91b4..85a6ac67a8702 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java @@ -57,7 +57,7 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -1649,7 +1649,7 @@ public void setSchemaValidtionEnforced(@PathParam("tenant") String tenant, message = "OffloadPolicies is empty or driver is not supported or bucket is not valid")}) public void setOffloadPolicies(@PathParam("tenant") String tenant, @PathParam("namespace") String namespace, @ApiParam(value = "Offload policies for the specified namespace", required = true) - OffloadPolicies offload, + OffloadPoliciesImpl offload, @Suspended final AsyncResponse asyncResponse) { try { validateNamespaceName(tenant, namespace); @@ -1688,8 +1688,8 @@ public void removeOffloadPolicies(@PathParam("tenant") String tenant, @PathParam @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Namespace does not exist")}) - public OffloadPolicies getOffloadPolicies(@PathParam("tenant") String tenant, - @PathParam("namespace") String namespace) { + public OffloadPoliciesImpl getOffloadPolicies(@PathParam("tenant") String tenant, + @PathParam("namespace") String namespace) { validateNamespaceName(tenant, namespace); return internalGetOffloadPolicies(); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java index 9c317f8032014..ce8eada750e71 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java @@ -61,7 +61,7 @@ import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentOfflineTopicStats; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; @@ -306,7 +306,7 @@ public void setOffloadPolicies(@Suspended final AsyncResponse asyncResponse, @PathParam("namespace") String namespace, @PathParam("topic") @Encoded String encodedTopic, @ApiParam(value = "Offload policies for the specified topic") - OffloadPolicies offloadPolicies) { + OffloadPoliciesImpl offloadPolicies) { validateTopicName(tenant, namespace, encodedTopic); validateAdminAccessForTenant(tenant); internalSetOffloadPolicies(offloadPolicies).whenComplete((res, ex) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java index 58d34979574f9..210691ae85257 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java @@ -144,7 +144,7 @@ import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.LocalPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentOfflineTopicStats; import org.apache.pulsar.common.policies.data.Policies; @@ -1269,7 +1269,7 @@ public CompletableFuture getManagedLedgerConfig(TopicName t PersistencePolicies persistencePolicies = null; RetentionPolicies retentionPolicies = null; - OffloadPolicies topicLevelOffloadPolicies = null; + OffloadPoliciesImpl topicLevelOffloadPolicies = null; if (pulsar.getConfig().isTopicLevelPoliciesEnabled()) { TopicName cloneTopicName = topicName; @@ -1362,11 +1362,11 @@ public CompletableFuture getManagedLedgerConfig(TopicName t managedLedgerConfig.setAutoSkipNonRecoverableData(serviceConfig.isAutoSkipNonRecoverableData()); managedLedgerConfig.setLazyCursorRecovery(serviceConfig.isLazyCursorRecovery()); - OffloadPolicies nsLevelOffloadPolicies = - (OffloadPolicies) policies.map(p -> p.offload_policies).orElse(null); - OffloadPolicies offloadPolicies = OffloadPolicies.mergeConfiguration( + OffloadPoliciesImpl nsLevelOffloadPolicies = + (OffloadPoliciesImpl) policies.map(p -> p.offload_policies).orElse(null); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.mergeConfiguration( topicLevelOffloadPolicies, - OffloadPolicies.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), + OffloadPoliciesImpl.oldPoliciesCompatible(nsLevelOffloadPolicies, policies.orElse(null)), getPulsar().getConfig().getProperties()); if (topicLevelOffloadPolicies != null) { try { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java index c80f4c5eedbe4..a4c46322b2810 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java @@ -47,7 +47,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.TenantInfo; import org.awaitility.Awaitility; @@ -173,15 +173,15 @@ public void testOffloadPolicies() throws Exception { long offloadDeletionLagInMillis = 100L; OffloadedReadPriority priority = OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offload1 = OffloadPolicies.create( + OffloadPoliciesImpl offload1 = OffloadPoliciesImpl.create( driver, region, bucket, endpoint, null, null, null, null, 100, 100, offloadThresholdInBytes, offloadDeletionLagInMillis, priority); admin.namespaces().setOffloadPolicies(namespaceName, offload1); - OffloadPolicies offload2 = (OffloadPolicies) admin.namespaces().getOffloadPolicies(namespaceName); + OffloadPoliciesImpl offload2 = (OffloadPoliciesImpl) admin.namespaces().getOffloadPolicies(namespaceName); assertEquals(offload1, offload2); admin.namespaces().removeOffloadPolicies(namespaceName); - OffloadPolicies offload3 = (OffloadPolicies) admin.namespaces().getOffloadPolicies(namespaceName); + OffloadPoliciesImpl offload3 = (OffloadPoliciesImpl) admin.namespaces().getOffloadPolicies(namespaceName); assertNull(offload3); } @@ -192,9 +192,9 @@ public void testOffloadPoliciesApi() throws Exception { pulsarClient.newProducer().topic(topicName).create().close(); Awaitility.await() .until(() -> pulsar.getTopicPoliciesService().cacheIsInitialized(TopicName.get(topicName))); - OffloadPolicies offloadPolicies = (OffloadPolicies) admin.topics().getOffloadPolicies(topicName); + OffloadPoliciesImpl offloadPolicies = (OffloadPoliciesImpl) admin.topics().getOffloadPolicies(topicName); assertNull(offloadPolicies); - OffloadPolicies offload = new OffloadPolicies(); + OffloadPoliciesImpl offload = new OffloadPoliciesImpl(); String path = "fileSystemPath"; offload.setFileSystemProfilePath(path); admin.topics().setOffloadPolicies(topicName, offload); @@ -215,8 +215,8 @@ public void testOffloadPoliciesAppliedApi() throws Exception { pulsarClient.newProducer().topic(topicName).create().close(); Awaitility.await() .until(() -> pulsar.getTopicPoliciesService().cacheIsInitialized(TopicName.get(topicName))); - OffloadPolicies offloadPolicies = (OffloadPolicies) admin.topics().getOffloadPolicies(topicName, true); - OffloadPolicies brokerPolicies = OffloadPolicies + OffloadPoliciesImpl offloadPolicies = (OffloadPoliciesImpl) admin.topics().getOffloadPolicies(topicName, true); + OffloadPoliciesImpl brokerPolicies = OffloadPoliciesImpl .mergeConfiguration(null,null, pulsar.getConfiguration().getProperties()); assertEquals(offloadPolicies, brokerPolicies); @@ -225,7 +225,7 @@ public void testOffloadPoliciesAppliedApi() throws Exception { when(topicOffloaded.getOffloadDriverName()).thenReturn("mock"); doReturn(topicOffloaded).when(pulsar).createManagedLedgerOffloader(any()); - OffloadPolicies namespacePolicies = new OffloadPolicies(); + OffloadPoliciesImpl namespacePolicies = new OffloadPoliciesImpl(); namespacePolicies.setManagedLedgerOffloadThresholdInBytes(100L); namespacePolicies.setManagedLedgerOffloadDeletionLagInMillis(200L); namespacePolicies.setManagedLedgerOffloadDriver("s3"); @@ -236,7 +236,7 @@ public void testOffloadPoliciesAppliedApi() throws Exception { assertEquals( admin.topics().getOffloadPolicies(topicName, true), namespacePolicies); - OffloadPolicies topicPolicies = new OffloadPolicies(); + OffloadPoliciesImpl topicPolicies = new OffloadPoliciesImpl(); topicPolicies.setManagedLedgerOffloadThresholdInBytes(200L); topicPolicies.setManagedLedgerOffloadDeletionLagInMillis(400L); topicPolicies.setManagedLedgerOffloadDriver("s3"); @@ -294,7 +294,7 @@ private void testOffload(boolean isPartitioned) throws Exception { , "NullLedgerOffloader"); } //3 construct a topic level offloadPolicies - OffloadPolicies offloadPolicies = new OffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); offloadPolicies.setOffloadersDirectory("."); offloadPolicies.setManagedLedgerOffloadDriver("mock"); offloadPolicies.setManagedLedgerOffloadPrefetchRounds(10); 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 94af3a6245f38..770b792711664 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 @@ -85,7 +85,7 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; @@ -1246,9 +1246,9 @@ Set deletedOffloads() { return deletes.keySet(); } - OffloadPolicies offloadPolicies; + OffloadPoliciesImpl offloadPolicies; - public MockLedgerOffloader(OffloadPolicies offloadPolicies) { + public MockLedgerOffloader(OffloadPoliciesImpl offloadPolicies) { this.offloadPolicies = offloadPolicies; } @@ -1292,7 +1292,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uuid, }; @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } @@ -1317,14 +1317,14 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); // the ledger config should have the expected value ManagedLedgerConfig ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + MockLedgerOffloader offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(-1)); @@ -1334,14 +1334,14 @@ public void testSetOffloadThreshold() throws Exception { assertEquals(100, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); admin.namespaces().getOffloadPolicies(namespace); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(100)); @@ -1350,14 +1350,14 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -2); assertEquals(-2, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(-2)); @@ -1366,14 +1366,14 @@ public void testSetOffloadThreshold() throws Exception { admin.namespaces().setOffloadThreshold(namespace, -1); assertEquals(-1, admin.namespaces().getOffloadThreshold(namespace)); ledgerConf = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get(); - offloader = new MockLedgerOffloader(OffloadPolicies.create("S3", "", "", "", + offloader = new MockLedgerOffloader(OffloadPoliciesImpl.create("S3", "", "", "", null, null, null, null, - OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, - OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES, + OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES, admin.namespaces().getOffloadThreshold(namespace), pulsar.getConfiguration().getManagedLedgerOffloadDeletionLagMs(), - OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY)); + OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY)); ledgerConf.setLedgerOffloader(offloader); assertEquals(ledgerConf.getLedgerOffloader().getOffloadPolicies().getManagedLedgerOffloadThresholdInBytes(), new Long(-1)); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java index d44eeb6ed131f..556418093fe22 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java @@ -37,7 +37,7 @@ import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; +import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -3681,7 +3681,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @throws PulsarAdminException * Unexpected error */ - void setOffloadPolicies(String namespace, OffloadPoliciesInterface offloadPolicies) throws PulsarAdminException; + void setOffloadPolicies(String namespace, OffloadPolicies offloadPolicies) throws PulsarAdminException; /** * Remove the offload configuration for a namespace. @@ -3722,7 +3722,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @param offloadPolicies * Offload configuration */ - CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPoliciesInterface offloadPolicies); + CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPolicies offloadPolicies); /** * Remove the offload configuration for a namespace asynchronously. @@ -3769,7 +3769,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @throws PulsarAdminException * Unexpected error */ - OffloadPoliciesInterface getOffloadPolicies(String namespace) throws PulsarAdminException; + OffloadPolicies getOffloadPolicies(String namespace) throws PulsarAdminException; /** * Get the offload configuration for a namespace asynchronously. @@ -3794,7 +3794,7 @@ void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchem * @param namespace * Namespace name */ - CompletableFuture getOffloadPoliciesAsync(String namespace); + CompletableFuture getOffloadPoliciesAsync(String namespace); /** * Get maxTopicsPerNamespace for a namespace. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java index c2541b422adab..66ac8c456ec3b 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java @@ -37,7 +37,7 @@ import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; +import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -2043,14 +2043,14 @@ void setInactiveTopicPolicies(String topic * @return * @throws PulsarAdminException */ - OffloadPoliciesInterface getOffloadPolicies(String topic) throws PulsarAdminException; + OffloadPolicies getOffloadPolicies(String topic) throws PulsarAdminException; /** * get offload policies of a topic asynchronously. * @param topic * @return */ - CompletableFuture getOffloadPoliciesAsync(String topic); + CompletableFuture getOffloadPoliciesAsync(String topic); /** * get applied offload policies of a topic. @@ -2058,14 +2058,14 @@ void setInactiveTopicPolicies(String topic * @return * @throws PulsarAdminException */ - OffloadPoliciesInterface getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException; + OffloadPolicies getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException; /** * get applied offload policies of a topic asynchronously. * @param topic * @return */ - CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied); + CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied); /** * set offload policies of a topic. @@ -2073,7 +2073,7 @@ void setInactiveTopicPolicies(String topic * @param offloadPolicies * @throws PulsarAdminException */ - void setOffloadPolicies(String topic, OffloadPoliciesInterface offloadPolicies) throws PulsarAdminException; + void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) throws PulsarAdminException; /** * set offload policies of a topic asynchronously. @@ -2081,7 +2081,7 @@ void setInactiveTopicPolicies(String topic * @param offloadPolicies * @return */ - CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPoliciesInterface offloadPolicies); + CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPolicies offloadPolicies); /** * remove offload policies of a topic. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java similarity index 99% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java index eb36de2892840..002e6f9007198 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.common.policies.data; -public interface OffloadPoliciesInterface { +public interface OffloadPolicies { String getOffloadersDirectory(); String getManagedLedgerOffloadDriver(); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java index 378f52a43be1e..86c0b2b8a19b5 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/Policies.java @@ -112,7 +112,7 @@ public class Policies { public boolean schema_validation_enforced = false; @SuppressWarnings("checkstyle:MemberName") - public OffloadPoliciesInterface offload_policies = null; + public OffloadPolicies offload_policies = null; public Integer deduplicationSnapshotIntervalSeconds = null; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java index 98b541802a3ec..3bf290c8fca11 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java @@ -47,8 +47,8 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; @@ -3210,7 +3210,7 @@ public CompletableFuture setIsAllowAutoUpdateSchemaAsync(String namespace, } @Override - public void setOffloadPolicies(String namespace, OffloadPoliciesInterface offloadPolicies) + public void setOffloadPolicies(String namespace, OffloadPolicies offloadPolicies) throws PulsarAdminException { try { setOffloadPoliciesAsync(namespace, offloadPolicies) @@ -3241,7 +3241,7 @@ public void removeOffloadPolicies(String namespace) throws PulsarAdminException } @Override - public CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPoliciesInterface offloadPolicies) { + public CompletableFuture setOffloadPoliciesAsync(String namespace, OffloadPolicies offloadPolicies) { NamespaceName ns = NamespaceName.get(namespace); WebTarget path = namespacePath(ns, "offloadPolicies"); return asyncPostRequest(path, Entity.entity(offloadPolicies, MediaType.APPLICATION_JSON)); @@ -3255,7 +3255,7 @@ public CompletableFuture removeOffloadPoliciesAsync(String namespace) { } @Override - public OffloadPoliciesInterface getOffloadPolicies(String namespace) throws PulsarAdminException { + public OffloadPolicies getOffloadPolicies(String namespace) throws PulsarAdminException { try { return getOffloadPoliciesAsync(namespace). get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -3270,14 +3270,14 @@ public OffloadPoliciesInterface getOffloadPolicies(String namespace) throws Puls } @Override - public CompletableFuture getOffloadPoliciesAsync(String namespace) { + public CompletableFuture getOffloadPoliciesAsync(String namespace) { NamespaceName ns = NamespaceName.get(namespace); WebTarget path = namespacePath(ns, "offloadPolicies"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(OffloadPolicies offloadPolicies) { + public void completed(OffloadPoliciesImpl offloadPolicies) { future.complete(offloadPolicies); } diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java index b056c46d46ce6..8d62073313015 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java @@ -72,8 +72,8 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies; @@ -2038,17 +2038,17 @@ public CompletableFuture removeDeduplicationStatusAsync(String topic) { } @Override - public OffloadPoliciesInterface getOffloadPolicies(String topic) throws PulsarAdminException { + public OffloadPolicies getOffloadPolicies(String topic) throws PulsarAdminException { return getOffloadPolicies(topic, false); } @Override - public CompletableFuture getOffloadPoliciesAsync(String topic) { + public CompletableFuture getOffloadPoliciesAsync(String topic) { return getOffloadPoliciesAsync(topic, false); } @Override - public OffloadPoliciesInterface getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException { + public OffloadPolicies getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException { try { return getOffloadPoliciesAsync(topic, applied). get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -2063,14 +2063,14 @@ public OffloadPoliciesInterface getOffloadPolicies(String topic, boolean applied } @Override - public CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied) { + public CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied) { TopicName topicName = validateTopic(topic); WebTarget path = topicPath(topicName, "offloadPolicies"); path = path.queryParam("applied", applied); - final CompletableFuture future = new CompletableFuture<>(); - asyncGetRequest(path, new InvocationCallback() { + final CompletableFuture future = new CompletableFuture<>(); + asyncGetRequest(path, new InvocationCallback() { @Override - public void completed(OffloadPolicies offloadPolicies) { + public void completed(OffloadPoliciesImpl offloadPolicies) { future.complete(offloadPolicies); } @@ -2083,7 +2083,7 @@ public void failed(Throwable throwable) { } @Override - public void setOffloadPolicies(String topic, OffloadPoliciesInterface offloadPolicies) throws PulsarAdminException { + public void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) throws PulsarAdminException { try { setOffloadPoliciesAsync(topic, offloadPolicies). get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -2098,10 +2098,10 @@ public void setOffloadPolicies(String topic, OffloadPoliciesInterface offloadPol } @Override - public CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPoliciesInterface offloadPolicies) { + public CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPolicies offloadPolicies) { TopicName topicName = validateTopic(topic); WebTarget path = topicPath(topicName, "offloadPolicies"); - return asyncPostRequest(path, Entity.entity((OffloadPolicies) offloadPolicies, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((OffloadPoliciesImpl) offloadPolicies, MediaType.APPLICATION_JSON)); } @Override diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java index fe23dc41ab226..2618fff152b1a 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java @@ -80,7 +80,7 @@ import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats.LedgerInfo; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; @@ -646,7 +646,7 @@ public void namespaces() throws Exception { namespaces.run(split( "set-offload-policies myprop/clust/ns1 -r test-region -d aws-s3 -b test-bucket -e http://test.endpoint -mbs 32M -rbs 5M -oat 10M -oae 10s -orp tiered-storage-first")); verify(mockNamespaces).setOffloadPolicies("myprop/clust/ns1", - OffloadPolicies.create("aws-s3", "test-region", "test-bucket", + OffloadPoliciesImpl.create("aws-s3", "test-region", "test-bucket", "http://test.endpoint",null, null, null, null, 32 * 1024 * 1024, 5 * 1024 * 1024, 10 * 1024 * 1024L, 10000L, OffloadedReadPriority.TIERED_STORAGE_FIRST)); @@ -963,7 +963,7 @@ public void topics() throws Exception { verify(mockTopics).removeDelayedDeliveryPolicy("persistent://myprop/clust/ns1/ds1") ; cmdTopics.run(split("set-offload-policies persistent://myprop/clust/ns1/ds1 -d s3 -r region -b bucket -e endpoint -m 8 -rb 9 -t 10 -orp tiered-storage-first")); - OffloadPolicies offloadPolicies = OffloadPolicies.create("s3", "region", "bucket" + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create("s3", "region", "bucket" , "endpoint", null, null, null, null, 8, 9, 10L, null, OffloadedReadPriority.TIERED_STORAGE_FIRST); verify(mockTopics).setOffloadPolicies("persistent://myprop/clust/ns1/ds1", offloadPolicies); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java index b9461fdf87851..6049f77de76d2 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java @@ -23,7 +23,6 @@ import com.beust.jcommander.Parameters; import com.beust.jcommander.converters.CommaParameterSplitter; import com.google.common.base.Strings; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import java.io.IOException; @@ -53,7 +52,7 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; @@ -1939,7 +1938,7 @@ private class SetOffloadPolicies extends CliCommand { ) private String offloadReadPriorityStr; - public final List DRIVER_NAMES = OffloadPolicies.DRIVER_NAMES; + public final List DRIVER_NAMES = OffloadPoliciesImpl.DRIVER_NAMES; public boolean driverSupported(String driver) { return DRIVER_NAMES.stream().anyMatch(d -> d.equalsIgnoreCase(driver)); @@ -1982,7 +1981,7 @@ void run() throws PulsarAdminException { + " if s3 offload enabled"); } - int maxBlockSizeInBytes = OffloadPolicies.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; + int maxBlockSizeInBytes = OffloadPoliciesImpl.DEFAULT_MAX_BLOCK_SIZE_IN_BYTES; if (StringUtils.isNotEmpty(maxBlockSizeStr)) { long maxBlockSize = validateSizeString(maxBlockSizeStr); if (positiveCheck("MaxBlockSize", maxBlockSize) @@ -1991,7 +1990,7 @@ && maxValueCheck("MaxBlockSize", maxBlockSize, Integer.MAX_VALUE)) { } } - int readBufferSizeInBytes = OffloadPolicies.DEFAULT_READ_BUFFER_SIZE_IN_BYTES; + int readBufferSizeInBytes = OffloadPoliciesImpl.DEFAULT_READ_BUFFER_SIZE_IN_BYTES; if (StringUtils.isNotEmpty(readBufferSizeStr) ) { long readBufferSize = validateSizeString(readBufferSizeStr); if (positiveCheck("ReadBufferSize", readBufferSize) @@ -2000,7 +1999,7 @@ && maxValueCheck("ReadBufferSize", readBufferSize, Integer.MAX_VALUE)) { } } - Long offloadAfterElapsedInMillis = OffloadPolicies.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; + Long offloadAfterElapsedInMillis = OffloadPoliciesImpl.DEFAULT_OFFLOAD_DELETION_LAG_IN_MILLIS; if (StringUtils.isNotEmpty(offloadAfterElapsedStr)) { Long offloadAfterElapsed = TimeUnit.SECONDS.toMillis(RelativeTimeUtil.parseRelativeTimeInSeconds(offloadAfterElapsedStr)); if (positiveCheck("OffloadAfterElapsed", offloadAfterElapsed) @@ -2009,7 +2008,7 @@ && maxValueCheck("OffloadAfterElapsed", offloadAfterElapsed, Long.MAX_VALUE)) { } } - Long offloadAfterThresholdInBytes = OffloadPolicies.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; + Long offloadAfterThresholdInBytes = OffloadPoliciesImpl.DEFAULT_OFFLOAD_THRESHOLD_IN_BYTES; if (StringUtils.isNotEmpty(offloadAfterThresholdStr)) { long offloadAfterThreshold = validateSizeString(offloadAfterThresholdStr); if (positiveCheck("OffloadAfterThreshold", offloadAfterThreshold) @@ -2017,7 +2016,7 @@ && maxValueCheck("OffloadAfterThreshold", offloadAfterThreshold, Long.MAX_VALUE) offloadAfterThresholdInBytes = offloadAfterThreshold; } } - OffloadedReadPriority offloadedReadPriority = OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY; + OffloadedReadPriority offloadedReadPriority = OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY; if (this.offloadReadPriorityStr != null) { try { @@ -2031,7 +2030,7 @@ && maxValueCheck("OffloadAfterThreshold", offloadAfterThreshold, Long.MAX_VALUE) } } - OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, readBufferSizeInBytes, offloadAfterThresholdInBytes, diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java index bd47e5f0ba7f8..0e0e413722d7f 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java @@ -28,7 +28,6 @@ import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; @@ -60,7 +59,7 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; @@ -1524,7 +1523,7 @@ private class SetOffloadPolicies extends CliCommand { void run() throws PulsarAdminException { String persistentTopic = validatePersistentTopic(params); - OffloadedReadPriority offloadedReadPriority = OffloadPolicies.DEFAULT_OFFLOADED_READ_PRIORITY; + OffloadedReadPriority offloadedReadPriority = OffloadPoliciesImpl.DEFAULT_OFFLOADED_READ_PRIORITY; if (this.offloadReadPriorityStr != null) { try { @@ -1538,7 +1537,7 @@ void run() throws PulsarAdminException { } } - OffloadPolicies offloadPolicies = OffloadPolicies.create(driver, region, bucket, endpoint, + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(driver, region, bucket, endpoint, s3Role, s3RoleSessionName, awsId, awsSecret, maxBlockSizeInBytes, diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesImpl.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesImpl.java index 4e61960e7d343..d2478e2963d6f 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPoliciesImpl.java @@ -35,19 +35,17 @@ import java.util.List; import java.util.Objects; import java.util.Properties; -import java.util.stream.Collectors; + import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.pulsar.common.classification.InterfaceAudience; -import org.apache.pulsar.common.classification.InterfaceStability; /** * Definition of the offload policies. */ @Slf4j @Data -public class OffloadPolicies implements Serializable, OffloadPoliciesInterface { +public class OffloadPoliciesImpl implements Serializable, OffloadPolicies { private final static long serialVersionUID = 0L; @@ -55,7 +53,7 @@ public class OffloadPolicies implements Serializable, OffloadPoliciesInterface { static { List temp = new ArrayList<>(); - Class clazz = OffloadPolicies.class; + Class clazz = OffloadPoliciesImpl.class; Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { if (field.isAnnotationPresent(Configuration.class)) { @@ -177,13 +175,13 @@ public class OffloadPolicies implements Serializable, OffloadPoliciesInterface { @JsonProperty(access = JsonProperty.Access.READ_WRITE) private Integer managedLedgerOffloadReadBufferSizeInBytes; - public static OffloadPolicies create(String driver, String region, String bucket, String endpoint, - String role, String roleSessionName, - String credentialId, String credentialSecret, - Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, - Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, - OffloadedReadPriority readPriority) { - OffloadPolicies offloadPolicies = new OffloadPolicies(); + public static OffloadPoliciesImpl create(String driver, String region, String bucket, String endpoint, + String role, String roleSessionName, + String credentialId, String credentialSecret, + Integer maxBlockSizeInBytes, Integer readBufferSizeInBytes, + Long offloadThresholdInBytes, Long offloadDeletionLagInMillis, + OffloadedReadPriority readPriority) { + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); offloadPolicies.setManagedLedgerOffloadDriver(driver); offloadPolicies.setManagedLedgerOffloadThresholdInBytes(offloadThresholdInBytes); offloadPolicies.setManagedLedgerOffloadDeletionLagInMillis(offloadDeletionLagInMillis); @@ -222,9 +220,9 @@ public static OffloadPolicies create(String driver, String region, String bucket return offloadPolicies; } - public static OffloadPolicies create(Properties properties) { - OffloadPolicies data = new OffloadPolicies(); - Field[] fields = OffloadPolicies.class.getDeclaredFields(); + public static OffloadPoliciesImpl create(Properties properties) { + OffloadPoliciesImpl data = new OffloadPoliciesImpl(); + Field[] fields = OffloadPoliciesImpl.class.getDeclaredFields(); Arrays.stream(fields).forEach(f -> { if (properties.containsKey(f.getName())) { try { @@ -340,7 +338,7 @@ public boolean equals(Object obj) { if (obj == null || getClass() != obj.getClass()) { return false; } - OffloadPolicies other = (OffloadPolicies) obj; + OffloadPoliciesImpl other = (OffloadPoliciesImpl) obj; return Objects.equals(managedLedgerOffloadedReadPriority, other.getManagedLedgerOffloadedReadPriority()) && Objects.equals(managedLedgerOffloadDriver, other.getManagedLedgerOffloadDriver()) && Objects.equals(managedLedgerOffloadMaxThreads, other.getManagedLedgerOffloadMaxThreads()) @@ -494,12 +492,12 @@ private static void setProperty(Properties properties, String key, Object value) * @param policies namespace policies * @return offload policies */ - public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolicies, Policies policies) { + public static OffloadPoliciesImpl oldPoliciesCompatible(OffloadPoliciesImpl nsLevelPolicies, Policies policies) { if (policies == null || (policies.offload_threshold == -1 && policies.offload_deletion_lag_ms == null)) { return nsLevelPolicies; } if (nsLevelPolicies == null) { - nsLevelPolicies = new OffloadPolicies(); + nsLevelPolicies = new OffloadPoliciesImpl(); } if (nsLevelPolicies.getManagedLedgerOffloadThresholdInBytes() == null && policies.offload_threshold != -1) { @@ -522,12 +520,12 @@ public static OffloadPolicies oldPoliciesCompatible(OffloadPolicies nsLevelPolic * @param brokerProperties broker level offload configuration * @return offload policies */ - public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolicies, - OffloadPolicies nsLevelPolicies, - Properties brokerProperties) { + public static OffloadPoliciesImpl mergeConfiguration(OffloadPoliciesImpl topicLevelPolicies, + OffloadPoliciesImpl nsLevelPolicies, + Properties brokerProperties) { try { boolean allConfigValuesAreNull = true; - OffloadPolicies offloadPolicies = new OffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = new OffloadPoliciesImpl(); for (Field field : CONFIGURATION_FIELDS) { Object object; if (topicLevelPolicies != null && field.get(topicLevelPolicies) != null) { @@ -558,8 +556,8 @@ public static OffloadPolicies mergeConfiguration(OffloadPolicies topicLevelPolic /** * Make configurations of the OffloadPolicies compatible with the config file. * - *

The names of the fields {@link OffloadPolicies#managedLedgerOffloadDeletionLagInMillis} - * and {@link OffloadPolicies#managedLedgerOffloadThresholdInBytes} are not matched with + *

The names of the fields {@link OffloadPoliciesImpl#managedLedgerOffloadDeletionLagInMillis} + * and {@link OffloadPoliciesImpl#managedLedgerOffloadThresholdInBytes} are not matched with * config file (broker.conf or standalone.conf). * * @param properties broker configuration properties diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java index 27e0b87c48b5f..0b03425a9e07a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TopicPolicies.java @@ -55,7 +55,7 @@ public class TopicPolicies { private Integer maxUnackedMessagesOnSubscription = null; private Long delayedDeliveryTickTimeMillis = null; private Boolean delayedDeliveryEnabled = null; - private OffloadPolicies offloadPolicies; + private OffloadPoliciesImpl offloadPolicies; private InactiveTopicPolicies inactiveTopicPolicies = null; private DispatchRate dispatchRate = null; private DispatchRate subscriptionDispatchRate = null; diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index f78b8c5719acc..9a90e65096020 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -50,8 +50,8 @@ import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesInterface; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; import org.apache.pulsar.common.policies.data.TenantInfo; @@ -117,7 +117,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(FailureDomain.class, FailureDomainImpl.class); resolver.addMapping(NamespaceIsolationData.class, NamespaceIsolationDataImpl.class); resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); - resolver.addMapping(OffloadPoliciesInterface.class, OffloadPolicies.class); + resolver.addMapping(OffloadPolicies.class, OffloadPoliciesImpl.class); resolver.addMapping(FunctionStatsInterface.class, FunctionStats.class); resolver.addMapping(FunctionInstanceStats.class, FunctionInstanceStatsImpl.class); resolver.addMapping(FunctionInstanceStatsData.class, FunctionInstanceStatsDataImpl.class); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java index 397a985ad2016..86a3e39a68a00 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/OffloadPoliciesTest.java @@ -51,7 +51,7 @@ public void testS3Configuration() { final Long offloadThresholdInBytes = 10L * M; final Long offloadDeletionLagInMillis = 5L * MIN; - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create( driver, region, bucket, @@ -95,7 +95,7 @@ public void testGcsConfiguration() { final Long offloadDeletionLagInMillis = 5 * MIN; final OffloadedReadPriority readPriority = OffloadedReadPriority.TIERED_STORAGE_FIRST; - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create( driver, region, bucket, @@ -177,7 +177,7 @@ public void testCreateByProperties() { properties.setProperty("fileSystemProfilePath", fileSystemProfilePath); properties.setProperty("fileSystemURI", fileSystemURI); - OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(offloadPolicies.getOffloadersDirectory(), offloadersDirectory); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), driver); @@ -221,7 +221,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis); - OffloadPolicies offloadPolicies = OffloadPolicies.create(properties); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(offloadThresholdInBytes, offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis, offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis()); @@ -229,7 +229,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadThresholdInBytes", "" + (offloadThresholdInBytes + 10)); properties.setProperty("managedLedgerOffloadDeletionLagInMillis", "" + (offloadDeletionLagInMillis + 10)); - offloadPolicies = OffloadPolicies.create(properties); + offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 10), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 10, @@ -241,7 +241,7 @@ public void compatibleWithConfigFileTest() { properties.setProperty("managedLedgerOffloadAutoTriggerSizeThresholdBytes", "" + offloadThresholdInBytes + 30); properties.setProperty("managedLedgerOffloadDeletionLagMs", "" + offloadDeletionLagInMillis + 30); - offloadPolicies = OffloadPolicies.create(properties); + offloadPolicies = OffloadPoliciesImpl.create(properties); Assert.assertEquals(Long.valueOf(offloadThresholdInBytes + 20), offloadPolicies.getManagedLedgerOffloadThresholdInBytes()); Assert.assertEquals(offloadDeletionLagInMillis + 20, @@ -253,19 +253,19 @@ public void oldPoliciesCompatibleTest() { Policies policies = new Policies(); Assert.assertEquals(policies.offload_threshold, -1); - OffloadPolicies offloadPolicies = OffloadPolicies.oldPoliciesCompatible(null, policies); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.oldPoliciesCompatible(null, policies); Assert.assertNull(offloadPolicies); policies.offload_deletion_lag_ms = 1000L; policies.offload_threshold = 0; - offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPoliciesImpl.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); policies.offload_deletion_lag_ms = 2000L; policies.offload_threshold = 100; - offloadPolicies = OffloadPolicies.oldPoliciesCompatible(offloadPolicies, policies); + offloadPolicies = OffloadPoliciesImpl.oldPoliciesCompatible(offloadPolicies, policies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDeletionLagInMillis(), new Long(1000)); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), new Long(0)); } @@ -273,12 +273,12 @@ public void oldPoliciesCompatibleTest() { @Test public void mergeTest() { final String topicBucket = "topic-bucket"; - OffloadPolicies topicLevelPolicies = new OffloadPolicies(); + OffloadPoliciesImpl topicLevelPolicies = new OffloadPoliciesImpl(); topicLevelPolicies.setS3ManagedLedgerOffloadBucket(topicBucket); final String nsBucket = "ns-bucket"; final Long nsDeletionLag = 2000L; - OffloadPolicies nsLevelPolicies = new OffloadPolicies(); + OffloadPoliciesImpl nsLevelPolicies = new OffloadPoliciesImpl(); nsLevelPolicies.setManagedLedgerOffloadDeletionLagInMillis(nsDeletionLag); nsLevelPolicies.setS3ManagedLedgerOffloadBucket(nsBucket); @@ -292,8 +292,8 @@ public void mergeTest() { brokerProperties.setProperty("managedLedgerOffloadDeletionLagMs", "" + brokerDeletionLag); brokerProperties.setProperty("managedLedgerOffloadMaxThreads", "" + brokerOffloadMaxThreads); - OffloadPolicies offloadPolicies = - OffloadPolicies.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); + OffloadPoliciesImpl offloadPolicies = + OffloadPoliciesImpl.mergeConfiguration(topicLevelPolicies, nsLevelPolicies, brokerProperties); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), brokerDriver); Assert.assertEquals(offloadPolicies.getS3ManagedLedgerOffloadBucket(), topicBucket); @@ -301,7 +301,7 @@ public void mergeTest() { Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadThresholdInBytes(), brokerOffloadThreshold); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadMaxThreads(), brokerOffloadMaxThreads); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadPrefetchRounds(), - new Integer(OffloadPolicies.DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS)); + new Integer(OffloadPoliciesImpl.DEFAULT_OFFLOAD_MAX_PREFETCH_ROUNDS)); Assert.assertNull(offloadPolicies.getS3ManagedLedgerOffloadRegion()); } diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java index 8fcab09bbd979..457709940ad63 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorCache.java @@ -41,7 +41,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.pulsar.PulsarVersion; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.metadata.api.MetadataStore; import org.apache.pulsar.metadata.api.MetadataStoreConfig; import org.apache.pulsar.metadata.api.MetadataStoreFactory; @@ -119,7 +119,7 @@ private ManagedLedgerFactory initManagedLedgerFactory(PulsarConnectorConfig puls return new ManagedLedgerFactoryImpl(metadataStore, bkClientConfiguration, managedLedgerFactoryConfig); } - public ManagedLedgerConfig getManagedLedgerConfig(NamespaceName namespaceName, OffloadPolicies offloadPolicies, + public ManagedLedgerConfig getManagedLedgerConfig(NamespaceName namespaceName, OffloadPoliciesImpl offloadPolicies, PulsarConnectorConfig pulsarConnectorConfig) { ManagedLedgerConfig managedLedgerConfig = new ManagedLedgerConfig(); if (offloadPolicies == null) { @@ -141,7 +141,7 @@ public ManagedLedgerConfig getManagedLedgerConfig(NamespaceName namespaceName, O return managedLedgerConfig; } - private synchronized OrderedScheduler getOffloaderScheduler(OffloadPolicies offloadPolicies) { + private synchronized OrderedScheduler getOffloaderScheduler(OffloadPoliciesImpl offloadPolicies) { if (this.offloaderScheduler == null) { this.offloaderScheduler = OrderedScheduler.newSchedulerBuilder() .numThreads(offloadPolicies.getManagedLedgerOffloadMaxThreads()) @@ -150,7 +150,7 @@ private synchronized OrderedScheduler getOffloaderScheduler(OffloadPolicies offl return this.offloaderScheduler; } - private LedgerOffloader initManagedLedgerOffloader(OffloadPolicies offloadPolicies, + private LedgerOffloader initManagedLedgerOffloader(OffloadPoliciesImpl offloadPolicies, PulsarConnectorConfig pulsarConnectorConfig) { try { diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java index a03909f4b0fe4..8c984cbbffcdc 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarConnectorConfig.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.naming.NamedEntity; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.protocol.Commands; /** @@ -451,10 +451,10 @@ public PulsarAdmin getPulsarAdmin() throws PulsarClientException { return this.pulsarAdmin; } - public OffloadPolicies getOffloadPolices() { + public OffloadPoliciesImpl getOffloadPolices() { Properties offloadProperties = new Properties(); offloadProperties.putAll(getOffloaderProperties()); - OffloadPolicies offloadPolicies = OffloadPolicies.create(offloadProperties); + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create(offloadProperties); offloadPolicies.setManagedLedgerOffloadDriver(getManagedLedgerOffloadDriver()); offloadPolicies.setManagedLedgerOffloadMaxThreads(getManagedLedgerOffloadMaxThreads()); offloadPolicies.setOffloadersDirectory(getOffloadersDirectory()); diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java index 0fde38a20503f..f1e2bdb4bb4bf 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java @@ -60,7 +60,7 @@ import org.apache.pulsar.common.api.raw.RawMessage; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.schema.KeyValue; import org.apache.pulsar.common.schema.KeyValueEncodingType; import org.apache.pulsar.common.schema.SchemaInfo; @@ -128,7 +128,7 @@ public PulsarRecordCursor(List columnHandles, PulsarSplit pu throw new RuntimeException(e); } - OffloadPolicies offloadPolicies = pulsarSplit.getOffloadPolicies(); + OffloadPoliciesImpl offloadPolicies = pulsarSplit.getOffloadPolicies(); if (offloadPolicies != null) { offloadPolicies.setOffloadersDirectory(pulsarConnectorConfig.getOffloadersDirectory()); offloadPolicies.setManagedLedgerOffloadMaxThreads( diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java index a58da78477044..03a6b771bbaa1 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplit.java @@ -32,7 +32,7 @@ import java.util.List; import java.util.Map; import org.apache.bookkeeper.mledger.impl.PositionImpl; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; @@ -62,7 +62,7 @@ public class PulsarSplit implements ConnectorSplit { private final PositionImpl endPosition; private final String schemaInfoProperties; - private final OffloadPolicies offloadPolicies; + private final OffloadPoliciesImpl offloadPolicies; @JsonCreator public PulsarSplit( @@ -80,7 +80,7 @@ public PulsarSplit( @JsonProperty("endPositionLedgerId") long endPositionLedgerId, @JsonProperty("tupleDomain") TupleDomain tupleDomain, @JsonProperty("schemaInfoProperties") String schemaInfoProperties, - @JsonProperty("offloadPolicies") OffloadPolicies offloadPolicies) throws IOException { + @JsonProperty("offloadPolicies") OffloadPoliciesImpl offloadPolicies) throws IOException { this.splitId = splitId; requireNonNull(schemaName, "schema name is null"); this.originSchemaName = originSchemaName; @@ -188,7 +188,7 @@ public String getSchemaInfoProperties() { } @JsonProperty - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { return offloadPolicies; } diff --git a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java index f22e5094e853e..eca1ba871053c 100644 --- a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java +++ b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarSplitManager.java @@ -60,7 +60,7 @@ import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.schema.SchemaInfo; /** @@ -125,7 +125,7 @@ public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHand Collection splits; try { - OffloadPolicies offloadPolicies = (OffloadPolicies) this.pulsarAdmin.namespaces() + OffloadPoliciesImpl offloadPolicies = (OffloadPoliciesImpl) this.pulsarAdmin.namespaces() .getOffloadPolicies(topicName.getNamespace()); if (offloadPolicies != null) { offloadPolicies.setOffloadersDirectory(pulsarConnectorConfig.getOffloadersDirectory()); @@ -151,7 +151,7 @@ public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHand @VisibleForTesting Collection getSplitsPartitionedTopic(int numSplits, TopicName topicName, PulsarTableHandle tableHandle, SchemaInfo schemaInfo, TupleDomain tupleDomain, - OffloadPolicies offloadPolicies) throws Exception { + OffloadPoliciesImpl offloadPolicies) throws Exception { List predicatedPartitions = getPredicatedPartitions(topicName, tupleDomain); if (log.isDebugEnabled()) { @@ -237,7 +237,7 @@ private List getPredicatedPartitions(TopicName topicName, TupleDomain getSplitsNonPartitionedTopic(int numSplits, TopicName topicName, PulsarTableHandle tableHandle, SchemaInfo schemaInfo, TupleDomain tupleDomain, - OffloadPolicies offloadPolicies) throws Exception { + OffloadPoliciesImpl offloadPolicies) throws Exception { PulsarConnectorCache pulsarConnectorCache = PulsarConnectorCache.getConnectorCache(pulsarConnectorConfig); ManagedLedgerFactory managedLedgerFactory = pulsarConnectorCache.getManagedLedgerFactory(); ManagedLedgerConfig managedLedgerConfig = pulsarConnectorCache.getManagedLedgerConfig( @@ -263,7 +263,7 @@ Collection getSplitsForTopic(String topicNamePersistenceEncoding, PulsarTableHandle tableHandle, SchemaInfo schemaInfo, String tableName, TupleDomain tupleDomain, - OffloadPolicies offloadPolicies) + OffloadPoliciesImpl offloadPolicies) throws ManagedLedgerException, InterruptedException, IOException { ReadOnlyCursor readOnlyCursor = null; diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java index c9bf2ae20136f..42bb987c3b897 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarConnectorConfig.java @@ -18,7 +18,7 @@ */ package org.apache.pulsar.sql.presto; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.testng.Assert; import org.testng.annotations.Test; @@ -91,7 +91,7 @@ public void testGetOffloadPolices() throws Exception { connectorConfig.setManagedLedgerOffloadMaxThreads(managedLedgerOffloadMaxThreads); connectorConfig.setOffloaderProperties(offloadProperties); - OffloadPolicies offloadPolicies = connectorConfig.getOffloadPolices(); + OffloadPoliciesImpl offloadPolicies = connectorConfig.getOffloadPolices(); Assert.assertNotNull(offloadPolicies); Assert.assertEquals(offloadPolicies.getManagedLedgerOffloadDriver(), managedLedgerOffloadDriver); Assert.assertEquals(offloadPolicies.getOffloadersDirectory(), offloaderDirectory); diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java index 149f344401854..c7f6ce10759ec 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestPulsarSplitManager.java @@ -33,7 +33,7 @@ import org.apache.bookkeeper.mledger.impl.PositionImpl; import org.apache.pulsar.client.impl.schema.JSONSchema; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; @@ -414,7 +414,7 @@ public void testGetSplitNonSchema(String delimiter) throws Exception { @Test public void pulsarSplitJsonCodecTest() throws JsonProcessingException, UnsupportedEncodingException { - OffloadPolicies offloadPolicies = OffloadPolicies.create( + OffloadPoliciesImpl offloadPolicies = OffloadPoliciesImpl.create( "aws-s3", "test-region", "test-bucket", diff --git a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java index cf86f38e1bedb..555e1428ac02a 100644 --- a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java +++ b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/FileSystemLedgerOffloaderFactory.java @@ -21,11 +21,10 @@ import org.apache.bookkeeper.common.util.OrderedScheduler; import org.apache.bookkeeper.mledger.LedgerOffloaderFactory; import org.apache.bookkeeper.mledger.offload.filesystem.impl.FileSystemManagedLedgerOffloader; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import java.io.IOException; import java.util.Map; -import java.util.Properties; public class FileSystemLedgerOffloaderFactory implements LedgerOffloaderFactory { @Override @@ -34,8 +33,8 @@ public boolean isDriverSupported(String driverName) { } @Override - public FileSystemManagedLedgerOffloader create(OffloadPolicies offloadPolicies, - Map userMetadata, OrderedScheduler scheduler) throws IOException { + public FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, + Map userMetadata, OrderedScheduler scheduler) throws IOException { return FileSystemManagedLedgerOffloader.create(offloadPolicies, scheduler); } } diff --git a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java index 5438459c43a56..922332b845911 100644 --- a/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java +++ b/tiered-storage/file-system/src/main/java/org/apache/bookkeeper/mledger/offload/filesystem/impl/FileSystemManagedLedgerOffloader.java @@ -34,7 +34,7 @@ import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.MapFile; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,7 +65,7 @@ public class FileSystemManagedLedgerOffloader implements LedgerOffloader { private OrderedScheduler scheduler; private static final long ENTRIES_PER_READ = 100; private OrderedScheduler assignmentScheduler; - private OffloadPolicies offloadPolicies; + private OffloadPoliciesImpl offloadPolicies; public static boolean driverSupported(String driver) { return DRIVER_NAMES.equals(driver); @@ -76,11 +76,11 @@ public String getOffloadDriverName() { return driverName; } - public static FileSystemManagedLedgerOffloader create(OffloadPolicies conf, OrderedScheduler scheduler) throws IOException { + public static FileSystemManagedLedgerOffloader create(OffloadPoliciesImpl conf, OrderedScheduler scheduler) throws IOException { return new FileSystemManagedLedgerOffloader(conf, scheduler); } - private FileSystemManagedLedgerOffloader(OffloadPolicies conf, OrderedScheduler scheduler) throws IOException { + private FileSystemManagedLedgerOffloader(OffloadPoliciesImpl conf, OrderedScheduler scheduler) throws IOException { this.offloadPolicies = conf; this.configuration = new Configuration(); if (conf.getFileSystemProfilePath() != null) { @@ -111,7 +111,7 @@ private FileSystemManagedLedgerOffloader(OffloadPolicies conf, OrderedScheduler } @VisibleForTesting - public FileSystemManagedLedgerOffloader(OffloadPolicies conf, OrderedScheduler scheduler, String testHDFSPath, String baseDir) throws IOException { + public FileSystemManagedLedgerOffloader(OffloadPoliciesImpl conf, OrderedScheduler scheduler, String testHDFSPath, String baseDir) throws IOException { this.offloadPolicies = conf; this.configuration = new Configuration(); this.configuration.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem"); @@ -341,7 +341,7 @@ public CompletableFuture deleteOffloaded(long ledgerId, UUID uid, Map userMetadata, - OrderedScheduler scheduler) throws IOException { + public BlobStoreManagedLedgerOffloader create(OffloadPoliciesImpl offloadPolicies, Map userMetadata, + OrderedScheduler scheduler) throws IOException { TieredStorageConfiguration config = TieredStorageConfiguration.create(offloadPolicies.toProperties()); diff --git a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java index c76864d9ae8ea..f9c86fd2967cd 100644 --- a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java +++ b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreManagedLedgerOffloader.java @@ -55,7 +55,7 @@ import org.apache.bookkeeper.mledger.offload.jcloud.provider.BlobStoreLocation; import org.apache.bookkeeper.mledger.offload.jcloud.provider.TieredStorageConfiguration; import org.apache.bookkeeper.mledger.proto.MLDataFormats; -import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.BlobBuilder; @@ -595,10 +595,10 @@ public CompletableFuture deleteOffloaded(UUID uid, Map off } @Override - public OffloadPolicies getOffloadPolicies() { + public OffloadPoliciesImpl getOffloadPolicies() { Properties properties = new Properties(); properties.putAll(config.getConfigProperties()); - return OffloadPolicies.create(properties); + return OffloadPoliciesImpl.create(properties); } @Override From d35b73cd0ba653d40d26cb147a2d06b24cbd59f9 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:40:37 +0800 Subject: [PATCH 49/51] TenantInfo --- .../client/TlsProducerConsumerBase.java | 4 +-- .../authorization/AuthorizationProvider.java | 5 ++- .../authorization/AuthorizationService.java | 4 +-- .../PulsarAuthorizationProvider.java | 4 +-- .../cache/ConfigurationCacheService.java | 12 +++---- .../ConfigurationMetadataCacheService.java | 4 +-- .../broker/resources/TenantResources.java | 6 ++-- .../pulsar/PulsarClusterMetadataSetup.java | 6 ++-- .../org/apache/pulsar/PulsarStandalone.java | 6 ++-- .../pulsar/broker/admin/impl/TenantsBase.java | 10 +++--- .../ResourceUsageTransportManager.java | 4 +-- .../pulsar/broker/web/PulsarWebResource.java | 6 ++-- .../pulsar/broker/SLAMonitoringTest.java | 4 +-- .../broker/admin/AdminApiDelayedDelivery.java | 4 +-- .../admin/AdminApiGetLastMessageIdTest.java | 4 +-- .../admin/AdminApiMaxUnackedMessages.java | 4 +-- .../broker/admin/AdminApiOffloadTest.java | 4 +-- .../admin/AdminApiSchemaAutoUpdateTest.java | 4 +-- .../broker/admin/AdminApiSchemaTest.java | 4 +-- .../AdminApiSchemaValidationEnforced.java | 4 +-- .../pulsar/broker/admin/AdminApiTest.java | 24 +++++++------- .../pulsar/broker/admin/AdminApiTest2.java | 30 ++++++++--------- .../broker/admin/AdminApiTlsAuthTest.java | 32 +++++++++---------- .../apache/pulsar/broker/admin/AdminTest.java | 18 +++++------ .../admin/BrokerAdminClientTlsAuthTest.java | 4 +-- .../broker/admin/IncrementPartitionsTest.java | 4 +-- .../pulsar/broker/admin/NamespacesTest.java | 16 +++++----- .../broker/admin/PersistentTopicsTest.java | 8 ++--- .../broker/admin/ResourceGroupsTest.java | 4 +-- .../broker/admin/TopicMessageTTLTest.java | 6 ++-- .../admin/TopicPoliciesDisableTest.java | 4 +-- .../broker/admin/TopicPoliciesTest.java | 4 +-- .../broker/admin/v1/V1_AdminApiTest.java | 16 +++++----- .../broker/admin/v1/V1_AdminApiTest2.java | 10 +++--- .../admin/v3/AdminApiTransactionTest.java | 4 +-- .../pulsar/broker/auth/AuthLogsTest.java | 4 +-- .../pulsar/broker/auth/AuthorizationTest.java | 4 +-- .../auth/MockAuthorizationProvider.java | 4 +-- .../auth/MockedPulsarServiceBaseTest.java | 6 ++-- .../AntiAffinityNamespaceGroupTest.java | 12 +++---- .../LeaderElectionServiceTest.java | 4 +-- .../ModularLoadManagerImplTest.java | 4 +-- .../OwnerShipCacheForCurrentServerTest.java | 4 +-- .../ResourceGroupUsageAggregationTest.java | 4 +-- .../service/BacklogQuotaManagerTest.java | 4 +-- .../broker/service/BkEnsemblesTestBase.java | 4 +-- .../service/BrokerBookieIsolationTest.java | 8 ++--- .../pulsar/broker/service/BrokerTestBase.java | 4 +-- .../broker/service/MaxMessageSizeTest.java | 4 +-- .../broker/service/ReplicatorTestBase.java | 4 +-- .../broker/service/ResendRequestTest.java | 8 ++--- ...temTopicBasedTopicPoliciesServiceTest.java | 4 +-- .../pulsar/broker/service/TopicOwnerTest.java | 4 +-- .../stats/ManagedLedgerMetricsTest.java | 4 +-- ...NamespaceEventsSystemTopicServiceTest.java | 4 +-- .../TopicTransactionBufferRecoverTest.java | 6 ++-- .../TransactionClientReconnectTest.java | 6 ++-- .../transaction/TransactionConsumeTest.java | 4 +-- .../transaction/TransactionProduceTest.java | 6 ++-- .../buffer/TransactionBufferClientTest.java | 4 +-- .../buffer/TransactionLowWaterMarkTest.java | 6 ++-- .../buffer/TransactionStablePositionTest.java | 6 ++-- .../PendingAckInMemoryDeleteTest.java | 6 ++-- .../pendingack/PendingAckPersistentTest.java | 6 ++-- .../pulsar/broker/web/WebServiceTest.java | 6 ++-- .../AuthenticatedProducerConsumerTest.java | 12 +++---- ...enticationTlsHostnameVerificationTest.java | 4 +-- .../AuthorizationProducerConsumerTest.java | 10 +++--- .../client/api/BrokerServiceLookupTest.java | 6 ++-- .../api/ClientDeduplicationFailureTest.java | 4 +-- .../client/api/NonPersistentTopicTest.java | 4 +-- .../client/api/ProducerConsumerBase.java | 6 ++-- ...ListenersWithInternalListenerNameTest.java | 6 ++-- .../apache/pulsar/client/api/TenantTest.java | 4 +-- .../client/api/TlsProducerConsumerBase.java | 4 +-- ...okenAuthenticatedProducerConsumerTest.java | 4 +-- ...uth2AuthenticatedProducerConsumerTest.java | 6 ++-- .../api/v1/V1_ProducerConsumerBase.java | 4 +-- .../impl/AdminApiKeyStoreTlsAuthTest.java | 10 +++--- .../impl/ConsumerConfigurationTest.java | 4 +-- ...reTlsProducerConsumerTestWithAuthTest.java | 4 +-- ...lsProducerConsumerTestWithoutAuthTest.java | 4 +-- .../pulsar/client/impl/MessageParserTest.java | 4 +-- .../client/impl/MultiTopicsReaderTest.java | 4 +-- .../impl/PatternTopicsConsumerImplTest.java | 16 +++++----- ...erMessageUnAcknowledgedRedeliveryTest.java | 4 +-- .../pulsar/client/impl/RawReaderTest.java | 4 +-- .../apache/pulsar/client/impl/ReaderTest.java | 4 +-- .../pulsar/client/impl/SchemaDeleteTest.java | 4 +-- .../client/impl/TopicsConsumerImplTest.java | 30 ++++++++--------- .../client/impl/TransactionEndToEndTest.java | 6 ++-- .../pulsar/compaction/CompactedTopicTest.java | 4 +-- .../pulsar/compaction/CompactionTest.java | 4 +-- .../pulsar/compaction/CompactorTest.java | 4 +-- .../worker/PulsarFunctionE2ESecurityTest.java | 6 ++-- .../worker/PulsarFunctionLocalRunTest.java | 4 +-- .../worker/PulsarFunctionPublishTest.java | 4 +-- .../worker/PulsarFunctionTlsTest.java | 4 +-- .../worker/PulsarWorkerAssignmentTest.java | 4 +-- .../pulsar/io/AbstractPulsarE2ETest.java | 4 +-- .../pulsar/io/PulsarFunctionAdminTest.java | 4 +-- .../pulsar/io/PulsarFunctionE2ETest.java | 4 +-- .../pulsar/io/PulsarFunctionTlsTest.java | 4 +-- .../schema/PartitionedTopicSchemaTest.java | 6 ++-- .../org/apache/pulsar/schema/SchemaTest.java | 4 +-- .../SchemaCompatibilityCheckTest.java | 4 +-- .../SchemaTypeCompatibilityCheckTest.java | 4 +-- .../proxy/ProxyAuthorizationTest.java | 4 +-- .../pulsar/client/admin/Properties.java | 8 ++--- .../apache/pulsar/client/admin/Tenants.java | 14 ++++---- ...nantInfoInterface.java => TenantInfo.java} | 2 +- .../client/admin/internal/TenantsImpl.java | 30 ++++++++--------- .../pulsar/admin/cli/PulsarAdminToolTest.java | 6 ++-- .../client/cli/PulsarClientToolTest.java | 4 +-- .../apache/pulsar/admin/cli/CmdTenants.java | 6 ++-- .../{TenantInfo.java => TenantInfoImpl.java} | 6 ++-- .../common/util/ObjectMapperFactory.java | 4 +-- .../policies/data/PoliciesDataTest.java | 8 ++--- .../service/BrokerDiscoveryProvider.java | 4 +-- .../functions/worker/PulsarWorkerService.java | 4 +-- .../worker/rest/api/ComponentImpl.java | 4 +-- .../worker/rest/api/FunctionsImplTest.java | 10 +++--- .../api/v2/FunctionApiV2ResourceTest.java | 6 ++-- .../api/v3/FunctionApiV3ResourceTest.java | 6 ++-- .../rest/api/v3/SinkApiV3ResourceTest.java | 6 ++-- .../rest/api/v3/SourceApiV3ResourceTest.java | 6 ++-- .../proxy/server/BrokerDiscoveryProvider.java | 4 +-- .../server/AuthedAdminProxyHandlerTest.java | 8 ++--- ...roxyAuthenticatedProducerConsumerTest.java | 4 +-- .../server/ProxyKeyStoreTlsTestWithAuth.java | 4 +-- .../ProxyKeyStoreTlsTestWithoutAuth.java | 4 +-- .../pulsar/proxy/server/ProxyParserTest.java | 4 +-- .../apache/pulsar/proxy/server/ProxyTest.java | 4 +-- .../pulsar/proxy/server/ProxyTlsTest.java | 4 +-- .../server/ProxyWithAuthorizationNegTest.java | 4 +-- .../server/ProxyWithAuthorizationTest.java | 10 +++--- .../server/ProxyWithJwtAuthorizationTest.java | 8 ++--- .../ProxyWithoutServiceDiscoveryTest.java | 4 +-- .../SuperUserAuthedAdminProxyHandlerTest.java | 8 ++--- .../sql/presto/TestCacheSizeAllocator.java | 4 +-- .../testclient/PerformanceProducerTest.java | 4 +-- .../PulsarTokenAuthenticationBaseSuite.java | 10 +++--- .../cli/ClusterMetadataTearDownTest.java | 6 ++-- .../debezium/PulsarDebeziumSourcesTest.java | 4 +-- .../tests/integration/proxy/TestProxy.java | 6 ++-- .../proxy/TestProxyWithWebSocket.java | 5 ++- .../SimpleProducerConsumerTest.java | 6 ++-- .../SimpleProducerConsumerTest.java | 7 ++-- .../SimpleProducerConsumerTest.java | 6 ++-- 149 files changed, 468 insertions(+), 479 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{TenantInfoInterface.java => TenantInfo.java} (96%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{TenantInfo.java => TenantInfoImpl.java} (93%) diff --git a/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java b/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java index e4e42cd7e8482..c73d4a04da418 100644 --- a/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java +++ b/bouncy-castle/bcfips-include-test/src/test/java/org/apache/pulsar/client/TlsProducerConsumerBase.java @@ -32,7 +32,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -107,7 +107,7 @@ protected void internalSetUpForNamespace() throws Exception { admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java index f8e73c39a8fda..cfb191b8fc1f4 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationProvider.java @@ -33,11 +33,10 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; -import org.apache.pulsar.common.policies.data.TopicPolicies; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.RestException; @@ -79,7 +78,7 @@ default CompletableFuture isSuperUser(String role, ServiceConfiguration * @return a CompletableFuture containing a boolean in which true means the role is an admin user * and false if it is not */ - default CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, + default CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { return CompletableFuture.completedFuture(role != null && tenantInfo.getAdminRoles() != null && tenantInfo.getAdminRoles().contains(role) ? true : false); } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java index 403542f00112b..83a9944633643 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java @@ -29,7 +29,7 @@ import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; import org.apache.pulsar.common.util.FutureUtil; @@ -80,7 +80,7 @@ public CompletableFuture isSuperUser(String user, AuthenticationDataSou return FutureUtil.failedFuture(new IllegalStateException("No authorization provider configured")); } - public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, + public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { if (provider != null) { return provider.isTenantAdmin(tenant, role, tenantInfo, authenticationData); diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java index 05c9fb25071f6..ecd17f8a7f7b3 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java @@ -39,7 +39,7 @@ import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; import org.apache.pulsar.common.util.FutureUtil; @@ -634,7 +634,7 @@ public CompletableFuture validateTenantAdminAccess(String tenantName, return CompletableFuture.completedFuture(true); } else { try { - TenantInfo tenantInfo = pulsarResources.getTenantResources() + TenantInfoImpl tenantInfo = pulsarResources.getTenantResources() .get(path(POLICIES, tenantName)) .orElseThrow(() -> new RestException(Response.Status.NOT_FOUND, "Tenant does not exist")); return isTenantAdmin(tenantName, role, tenantInfo, authData); diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java index c83edde283cf4..03069a113440c 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationCacheService.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.zookeeper.ZooKeeperCache; @@ -54,7 +54,7 @@ public class ConfigurationCacheService { private static final Logger LOG = LoggerFactory.getLogger(ConfigurationCacheService.class); private final ZooKeeperCache cache; - private ZooKeeperDataCache propertiesCache; + private ZooKeeperDataCache propertiesCache; private ZooKeeperDataCache policiesCache; private ZooKeeperDataCache clustersCache; private ZooKeeperChildrenCache clustersListCache; @@ -88,10 +88,10 @@ public ConfigurationCacheService(ZooKeeperCache cache, String configuredClusterN initZK(); - this.propertiesCache = new ZooKeeperDataCache(cache) { + this.propertiesCache = new ZooKeeperDataCache(cache) { @Override - public TenantInfo deserialize(String path, byte[] content) throws Exception { - return ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfo.class); + public TenantInfoImpl deserialize(String path, byte[] content) throws Exception { + return ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfoImpl.class); } }; @@ -182,7 +182,7 @@ public ZooKeeperCache cache() { return cache; } - public ZooKeeperDataCache propertiesCache() { + public ZooKeeperDataCache propertiesCache() { return this.propertiesCache; } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java index a4cbb7b333ee4..3a91e5b7c55b3 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/cache/ConfigurationMetadataCacheService.java @@ -23,7 +23,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicies; import org.apache.pulsar.zookeeper.ZooKeeperCache; import org.apache.pulsar.zookeeper.ZooKeeperChildrenCache; @@ -44,7 +44,7 @@ public ZooKeeperCache cache() { throw new UnsupportedOperationException(); } - public ZooKeeperDataCache propertiesCache() { + public ZooKeeperDataCache propertiesCache() { throw new UnsupportedOperationException(); } diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java index a92c660a8a02e..3ae40ede2f75f 100644 --- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java +++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/resources/TenantResources.java @@ -18,11 +18,11 @@ */ package org.apache.pulsar.broker.resources; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; -public class TenantResources extends BaseResources { +public class TenantResources extends BaseResources { public TenantResources(MetadataStoreExtended store, int operationTimeoutSec) { - super(store, TenantInfo.class, operationTimeoutSec); + super(store, TenantInfoImpl.class, operationTimeoutSec); } } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java index 15c84c728e870..0495e0195a83f 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java @@ -38,7 +38,7 @@ import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.worker.WorkerUtils; import org.apache.pulsar.metadata.api.GetResult; @@ -278,14 +278,14 @@ static void createTenantIfAbsent(MetadataStore configStore, String tenant, Strin Optional getResult = configStore.get(tenantPath).get(); if (!getResult.isPresent()) { - TenantInfo publicTenant = new TenantInfo(Collections.emptySet(), Collections.singleton(cluster)); + TenantInfoImpl publicTenant = new TenantInfoImpl(Collections.emptySet(), Collections.singleton(cluster)); createMetadataNode(configStore, tenantPath, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(publicTenant)); } else { // Update existing public tenant with new cluster byte[] content = getResult.get().getValue(); - TenantInfo publicTenant = ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfo.class); + TenantInfoImpl publicTenant = ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfoImpl.class); // Only update z-node if the list of clusters should be modified if (!publicTenant.getAllowedClusters().contains(cluster)) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java index 06b2d8cdd57a1..8c810f5d860ae 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java @@ -35,7 +35,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.functions.worker.WorkerConfig; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.functions.worker.service.WorkerServiceLoader; @@ -354,7 +354,7 @@ private void createNameSpace(String cluster, String publicTenant, String default try { if (!admin.tenants().getTenants().contains(publicTenant)) { admin.tenants().createTenant(publicTenant, - new TenantInfo(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); } if (!admin.namespaces().getNamespaces(publicTenant).contains(defaultNamespace)) { admin.namespaces().createNamespace(defaultNamespace); @@ -387,7 +387,7 @@ private void createSampleNameSpace(ClusterDataImpl clusterData, String cluster) if (!admin.tenants().getTenants().contains(tenant)) { admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); } if (!admin.namespaces().getNamespaces(tenant).contains(namespace)) { diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java index 390b1fb96d0a1..df42b0dc65de7 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TenantsBase.java @@ -47,7 +47,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.naming.Constants; import org.apache.pulsar.common.naming.NamedEntity; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -115,7 +115,7 @@ public void getTenantAdmin(@Suspended final AsyncResponse asyncResponse, @ApiResponse(code = 412, message = "Clusters do not exist") }) public void createTenant(@Suspended final AsyncResponse asyncResponse, @ApiParam(value = "The tenant name") @PathParam("tenant") String tenant, - @ApiParam(value = "TenantInfo") TenantInfo tenantInfo) { + @ApiParam(value = "TenantInfo") TenantInfoImpl tenantInfo) { final String clientAppId = clientAppId(); try { @@ -181,7 +181,7 @@ public void createTenant(@Suspended final AsyncResponse asyncResponse, @ApiResponse(code = 412, message = "Clusters do not exist") }) public void updateTenant(@Suspended final AsyncResponse asyncResponse, @ApiParam(value = "The tenant name") @PathParam("tenant") String tenant, - @ApiParam(value = "TenantInfo") TenantInfo newTenantAdmin) { + @ApiParam(value = "TenantInfo") TenantInfoImpl newTenantAdmin) { try { validateSuperUserAccess(); validatePoliciesReadOnlyAccess(); @@ -197,7 +197,7 @@ public void updateTenant(@Suspended final AsyncResponse asyncResponse, asyncResponse.resume(new RestException(Status.NOT_FOUND, "Tenant " + tenant + " not found")); return; } - TenantInfo oldTenantAdmin = tenantAdmin.get(); + TenantInfoImpl oldTenantAdmin = tenantAdmin.get(); Set newClusters = new HashSet<>(newTenantAdmin.getAllowedClusters()); canUpdateCluster(tenant, oldTenantAdmin.getAllowedClusters(), newClusters).thenApply(r -> { tenantResources().setAsync(path(POLICIES, tenant), old -> { @@ -334,7 +334,7 @@ protected void internalDeleteTenantForcefully(AsyncResponse asyncResponse, Strin }); } - private void validateClusters(TenantInfo info) { + private void validateClusters(TenantInfoImpl info) { // empty cluster shouldn't be allowed if (info == null || info.getAllowedClusters().stream().filter(c -> !StringUtils.isBlank(c)) .collect(Collectors.toSet()).isEmpty() diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java index 7cebe43a435d7..8f0f009ce470b 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.ReaderListener; import org.apache.pulsar.common.allocator.PulsarByteBufAllocator; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -190,7 +190,7 @@ private void createTenantAndNamespace() throws PulsarServerException, PulsarAdmi if (!tenantList.contains(tenant)) { try { admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(config.getSuperUserRoles()), Sets.newHashSet(cluster))); } catch (PulsarAdminException ex1) { if (!(ex1 instanceof PulsarAdminException.ConflictException)) { LOG.error("Unexpected exception {} when creating tenant {}", ex1, tenant); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java index eec22e3f39af7..aeaa59c62d97a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java @@ -81,7 +81,7 @@ import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; import org.apache.pulsar.common.policies.path.PolicyPath; @@ -268,7 +268,7 @@ protected static void validateAdminAccessForTenant(PulsarService pulsar, String (isClientAuthenticated(clientAppId)), clientAppId); } - TenantInfo tenantInfo = pulsar.getPulsarResources().getTenantResources().get(path(POLICIES, tenant)) + TenantInfoImpl tenantInfo = pulsar.getPulsarResources().getTenantResources().get(path(POLICIES, tenant)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Tenant does not exist")); if (pulsar.getConfiguration().isAuthenticationEnabled() && pulsar.getConfiguration().isAuthorizationEnabled()) { @@ -322,7 +322,7 @@ protected static void validateAdminAccessForTenant(PulsarService pulsar, String } protected void validateClusterForTenant(String tenant, String cluster) { - TenantInfo tenantInfo; + TenantInfoImpl tenantInfo; try { tenantInfo = pulsar().getPulsarResources().getTenantResources().get(path(POLICIES, tenant)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Tenant does not exist")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java index 5d0daac44f838..2ee0829e16dfe 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/SLAMonitoringTest.java @@ -38,7 +38,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOwnershipStatus; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.Assert; import org.testng.annotations.AfterClass; @@ -113,7 +113,7 @@ private void createTenant(PulsarAdmin pulsarAdmin) pulsarAdmins[0].clusters().createCluster("my-cluster", clusterData); Set allowedClusters = new HashSet<>(); allowedClusters.add("my-cluster"); - TenantInfo adminConfig = new TenantInfo(); + TenantInfoImpl adminConfig = new TenantInfoImpl(); adminConfig.setAllowedClusters(allowedClusters); Set adminRoles = new HashSet<>(); adminRoles.add(""); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java index b1202212b9418..d5658ed7a8ed1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiDelayedDelivery.java @@ -26,7 +26,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,7 +52,7 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("delayed-delivery-messages", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java index 0e1f31d2cbcd4..a0d653b200da1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiGetLastMessageIdTest.java @@ -28,7 +28,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -72,7 +72,7 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop/ns-abc"); admin.namespaces().setNamespaceReplicationClusters("prop/ns-abc", Sets.newHashSet("test")); persistentTopics = spy(new PersistentTopics()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java index 52e2314aed28b..7c11e04901b45 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiMaxUnackedMessages.java @@ -30,7 +30,7 @@ import org.apache.pulsar.client.api.SubscriptionInitialPosition; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -52,7 +52,7 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("max-unacked-messages", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java index a4c46322b2810..b28aa9cd0a01b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiOffloadTest.java @@ -49,7 +49,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadedReadPriority; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -76,7 +76,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(testTenant, tenantInfo); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java index a65f9a30e14cb..61387462f442e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaAutoUpdateTest.java @@ -33,7 +33,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; import org.slf4j.Logger; @@ -56,7 +56,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); admin.namespaces().createNamespace("prop-xyz/test/ns1"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java index 6b495531e2986..7153311b9470e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java @@ -44,7 +44,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaInfoWithVersion; import org.testng.annotations.AfterMethod; @@ -67,7 +67,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster(cluster, new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("schematest", tenantInfo); admin.namespaces().createNamespace("schematest/test", Sets.newHashSet("test")); admin.namespaces().createNamespace("schematest/"+cluster+"/test", Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java index e878496a26e1e..465c1dfe9772f 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaValidationEnforced.java @@ -31,7 +31,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.schema.PostSchemaPayload; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; @@ -56,7 +56,7 @@ public void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("schema-validation-enforced", tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java index 25112631af1a7..58255f7418284 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java @@ -123,7 +123,7 @@ import org.apache.pulsar.common.policies.data.PoliciesUtil; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -186,7 +186,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); } @@ -656,14 +656,14 @@ public void properties() throws PulsarAdminException { } Set allowedClusters = Sets.newHashSet("test"); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); admin.tenants().updateTenant("prop-xyz", tenantInfo); assertEquals(admin.tenants().getTenants(), Lists.newArrayList("prop-xyz")); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), tenantInfo); - TenantInfo newTenantAdmin = new TenantInfo(Sets.newHashSet("role3", "role4"), allowedClusters); + TenantInfoImpl newTenantAdmin = new TenantInfoImpl(Sets.newHashSet("role3", "role4"), allowedClusters); admin.tenants().updateTenant("prop-xyz", newTenantAdmin); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), newTenantAdmin); @@ -684,7 +684,7 @@ public void properties() throws PulsarAdminException { @Test public void namespaces() throws Exception { admin.clusters().createCluster("usw", new ClusterDataImpl()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); @@ -1181,7 +1181,7 @@ public void testDeleteTenantForcefully() throws Exception { // create tenant admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); assertTrue(admin.tenants().getTenants().contains(tenant)); @@ -1212,7 +1212,7 @@ public void testDeleteTenantForcefully() throws Exception { assertFalse(admin.tenants().getTenants().contains(tenant)); admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); assertTrue(admin.tenants().getTenants().contains(tenant)); assertTrue(admin.namespaces().getNamespaces(tenant).isEmpty()); @@ -1230,7 +1230,7 @@ public void testForceDeleteTenantNotAllowed() throws Exception { // create tenant admin.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test"))); assertTrue(admin.tenants().getTenants().contains(tenant)); @@ -2203,12 +2203,12 @@ public void persistentTopicsInvalidCursorReset() throws Exception { @Test public void testObjectWithUnknownProperties() { - class CustomTenantAdmin extends TenantInfo { + class CustomTenantAdmin extends TenantInfoImpl { @SuppressWarnings("unused") public int newTenant; } - TenantInfo pa = new TenantInfo(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("test")); + TenantInfoImpl pa = new TenantInfoImpl(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("test")); CustomTenantAdmin cpa = new CustomTenantAdmin(); cpa.setAdminRoles(pa.getAdminRoles()); cpa.setAllowedClusters(pa.getAllowedClusters()); @@ -2596,7 +2596,7 @@ public PulsarAdmin getAdmin() { @Test public void testTopicBundleRangeLookup() throws PulsarAdminException, PulsarServerException, Exception { admin.clusters().createCluster("usw", new ClusterDataImpl()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/getBundleNs", 100); @@ -2780,7 +2780,7 @@ public void testSubscriptionExpiry() throws Exception { @Test public void testCreateAndDeleteNamespaceWithBundles() throws Exception { admin.clusters().createCluster("usw", new ClusterDataImpl()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 2eeb9ddc6e374..d9e1eaee2f641 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -92,7 +92,7 @@ import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.awaitility.Awaitility; import org.testng.Assert; @@ -121,7 +121,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); } @@ -260,7 +260,7 @@ public void testTopicPoliciesWithMultiBroker() throws Exception { super.internalSetup(); admin.clusters().createCluster("test" , new ClusterDataImpl(pulsar.getWebServiceAddress() + ",localhost:1026," + "localhost:2050")); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); conf.setBrokerServicePort(Optional.of(1024)); @@ -721,7 +721,7 @@ public void testReplicationPeerCluster() throws Exception { final String property = "peer-prop"; Set allowedClusters = Sets.newHashSet("us-west1", "us-west2", "us-west3", "us-west4", "us-east1", "us-east2", "global"); - TenantInfo propConfig = new TenantInfo(Sets.newHashSet("test"), allowedClusters); + TenantInfoImpl propConfig = new TenantInfoImpl(Sets.newHashSet("test"), allowedClusters); admin.tenants().createTenant(property, propConfig); final String namespace = property + "/global/conflictPeer"; @@ -895,7 +895,7 @@ public void testPublishConsumerStats() throws Exception { @Test public void testTenantNameWithUnderscore() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop_xyz", tenantInfo); admin.namespaces().createNamespace("prop_xyz/my-namespace", Sets.newHashSet("test")); @@ -912,7 +912,7 @@ public void testTenantNameWithUnderscore() throws Exception { @Test public void testTenantNameWithInvalidCharacters() { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); // If we try to create property with invalid characters, it should fail immediately try { @@ -936,7 +936,7 @@ public void testTenantWithNonexistentClusters() throws Exception { assertFalse(admin.clusters().getClusters().contains("cluster-non-existing")); Set allowedClusters = Sets.newHashSet("cluster-non-existing"); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); // If we try to create tenant with nonexistent clusters, it should fail immediately try { @@ -1438,7 +1438,7 @@ public void testMaxNumPartitionsPerPartitionedTopicFailure() { @Test public void testListOfNamespaceBundles() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz2", tenantInfo); admin.namespaces().createNamespace("prop-xyz2/ns1", 10); admin.namespaces().setNamespaceReplicationClusters("prop-xyz2/ns1", Sets.newHashSet("test")); @@ -1451,7 +1451,7 @@ public void testListOfNamespaceBundles() throws Exception { public void testForceDeleteNamespace() throws Exception { conf.setForceDeleteNamespaceAllowed(true); final String namespaceName = "prop-xyz2/ns1"; - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz2", tenantInfo); admin.namespaces().createNamespace(namespaceName, 1); final String topic = "persistent://" + namespaceName + "/test" + UUID.randomUUID(); @@ -1485,7 +1485,7 @@ public void testMaxNamespacesPerTenant() throws Exception { conf.setMaxNamespacesPerTenant(2); super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); admin.namespaces().createNamespace("testTenant/ns2", Sets.newHashSet("test")); @@ -1513,7 +1513,7 @@ public void testMaxTopicsPerNamespace() throws Exception { conf.setMaxTopicsPerNamespace(10); super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1604,7 +1604,7 @@ public void testMaxSubscriptionsPerTopic() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace("testTenant/ns1", Sets.newHashSet("test")); @@ -1754,7 +1754,7 @@ public void testMaxSubPerTopicPriority() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); @@ -1811,7 +1811,7 @@ public void testMaxProducersPerTopicUnlimited() throws Exception { super.internalSetup(); //init namespace admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); @@ -1864,7 +1864,7 @@ public void testMaxConsumersPerTopicUnlimited() throws Exception { super.internalSetup(); //init namespace admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); final String myNamespace = "prop-xyz/ns" + UUID.randomUUID(); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java index 66d452242010a..6fe4033f2c154 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTlsAuthTest.java @@ -51,7 +51,7 @@ import org.apache.pulsar.common.tls.NoopHostnameVerifier; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.SecurityUtility; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; @@ -152,7 +152,7 @@ PulsarClient buildClient(String user) throws Exception { public void testSuperUserCanListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.assertEquals(ImmutableSet.of("tenant1"), admin.tenants().getTenants()); } @@ -162,7 +162,7 @@ public void testSuperUserCanListTenants() throws Exception { public void testProxyRoleCantListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); } try (PulsarAdmin admin = buildAdminClient("proxy")) { @@ -177,7 +177,7 @@ public void testProxyRoleCantListTenants() throws Exception { public void testProxyRoleCantListNamespacesEvenWithAccess() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -193,7 +193,7 @@ public void testProxyRoleCantListNamespacesEvenWithAccess() throws Exception { public void testAuthorizedUserAsOriginalPrincipal() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy", "user1"), + new TenantInfoImpl(ImmutableSet.of("proxy", "user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -209,7 +209,7 @@ public void testAuthorizedUserAsOriginalPrincipal() throws Exception { public void testUnauthorizedUserAsOriginalPrincipal() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy", "user1"), + new TenantInfoImpl(ImmutableSet.of("proxy", "user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -229,7 +229,7 @@ public void testUnauthorizedUserAsOriginalPrincipal() throws Exception { public void testAuthorizedUserAsOriginalPrincipalButProxyNotAuthorized() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -249,7 +249,7 @@ public void testAuthorizedUserAsOriginalPrincipalButProxyNotAuthorized() throws public void testAuthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -265,7 +265,7 @@ public void testAuthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Excep public void testUnauthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -285,7 +285,7 @@ public void testUnauthorizedUserAsOriginalPrincipalProxyIsSuperUser() throws Exc public void testProxyUserViaProxy() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -305,7 +305,7 @@ public void testProxyUserViaProxy() throws Exception { public void testSuperProxyUserAndAdminCanListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); } WebTarget root = buildWebClient("superproxy"); @@ -320,7 +320,7 @@ public void testSuperProxyUserAndAdminCanListTenants() throws Exception { public void testSuperProxyUserAndNonAdminCannotListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); } WebTarget root = buildWebClient("superproxy"); @@ -339,7 +339,7 @@ public void testSuperProxyUserAndNonAdminCannotListTenants() throws Exception { public void testProxyCannotSetOriginalPrincipalAsEmpty() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -361,7 +361,7 @@ public void testDeleteNamespace() throws Exception { try (PulsarAdmin admin = buildAdminClient("admin")) { log.info("Creating tenant"); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("admin"), ImmutableSet.of("test"))); + new TenantInfoImpl(ImmutableSet.of("admin"), ImmutableSet.of("test"))); log.info("Creating namespace, and granting perms to user1"); admin.namespaces().createNamespace("tenant1/ns1", ImmutableSet.of("test")); admin.namespaces().grantPermissionOnNamespace("tenant1/ns1", "user1", ImmutableSet.of(AuthAction.produce)); @@ -405,7 +405,7 @@ public void testCertRefreshForPulsarAdmin() throws Exception { // try to call admin-api which should fail due to incorrect key-cert try { admin.tenants().createTenant("tenantX", - new TenantInfo(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.fail("should have failed due to invalid key file"); } catch (Exception e) { //OK @@ -418,7 +418,7 @@ public void testCertRefreshForPulsarAdmin() throws Exception { retryStrategically((test) -> { try { admin.tenants().createTenant("tenantX", - new TenantInfo(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); success.setValue(true); return true; }catch(Exception e) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java index d906edcda142c..fb646ae2c669a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java @@ -84,7 +84,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.stats.AllocatorStats; import org.apache.pulsar.common.stats.Metrics; @@ -429,7 +429,7 @@ public void properties() throws Throwable { Set allowedClusters = Sets.newHashSet(); allowedClusters.add(configClusterName); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); response = asynRequests(ctx -> properties.createTenant(ctx, "test-property", tenantInfo)); verify(properties, times(2)).validateSuperUserAccess(); @@ -441,7 +441,7 @@ public void properties() throws Throwable { assertEquals(response, tenantInfo); verify(properties, times(4)).validateSuperUserAccess(); - final TenantInfo newPropertyAdmin = new TenantInfo(Sets.newHashSet("role1", "other-role"), allowedClusters); + final TenantInfoImpl newPropertyAdmin = new TenantInfoImpl(Sets.newHashSet("role1", "other-role"), allowedClusters); response = asynRequests(ctx -> properties.updateTenant(ctx, "test-property", newPropertyAdmin)); verify(properties, times(5)).validateSuperUserAccess(); @@ -486,7 +486,7 @@ public void properties() throws Throwable { } // clear caches to load data from metadata-store again - MetadataCacheImpl cache = (MetadataCacheImpl) pulsar.getPulsarResources() + MetadataCacheImpl cache = (MetadataCacheImpl) pulsar.getPulsarResources() .getTenantResources().getCache(); AbstractMetadataStore store = (AbstractMetadataStore) cache.getStore(); cache.invalidateAll(); @@ -563,7 +563,7 @@ public void properties() throws Throwable { assertEquals(response, Lists.newArrayList()); // Create a namespace to test deleting a non-empty property - TenantInfo newPropertyAdmin2 = new TenantInfo(Sets.newHashSet("role1", "other-role"), Sets.newHashSet("use")); + TenantInfoImpl newPropertyAdmin2 = new TenantInfoImpl(Sets.newHashSet("role1", "other-role"), Sets.newHashSet("use")); response = asynRequests(ctx -> properties.createTenant(ctx, "my-tenant", newPropertyAdmin2)); namespaces.createNamespace("my-tenant", "use", "my-namespace", new BundlesData()); @@ -594,7 +594,7 @@ public void properties() throws Throwable { // Check tenantInfo with empty cluster String blankCluster = ""; Set blankClusters = Sets.newHashSet(blankCluster); - TenantInfo tenantWithEmptyCluster = new TenantInfo(Sets.newHashSet("role1", "role2"), blankClusters); + TenantInfoImpl tenantWithEmptyCluster = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), blankClusters); try { response = asynRequests(ctx -> properties.createTenant(ctx, "tenant-config-is-empty", tenantWithEmptyCluster)); fail("should have failed"); @@ -605,7 +605,7 @@ public void properties() throws Throwable { // Check tenantInfo contains empty cluster Set containBlankClusters = Sets.newHashSet(blankCluster); containBlankClusters.add(configClusterName); - TenantInfo tenantContainEmptyCluster = new TenantInfo(Sets.newHashSet(), containBlankClusters); + TenantInfoImpl tenantContainEmptyCluster = new TenantInfoImpl(Sets.newHashSet(), containBlankClusters); try { response = asynRequests(ctx -> properties.createTenant(ctx, "tenant-config-contain-empty", tenantContainEmptyCluster)); fail("should have failed"); @@ -680,7 +680,7 @@ public void resourceQuotas() throws Exception { } // create policies - TenantInfo admin = new TenantInfo(); + TenantInfoImpl admin = new TenantInfoImpl(); admin.getAllowedClusters().add(cluster); ClusterDataImpl clusterData = new ClusterDataImpl(cluster); clusters.createCluster(cluster, clusterData ); @@ -739,7 +739,7 @@ public void persistentTopics() throws Exception { doReturn(policies).when(resourceQuotas).getNamespacePolicies(NamespaceName.get(property, cluster, namespace)); doReturn("client-id").when(resourceQuotas).clientAppId(); // create policies - TenantInfo admin = new TenantInfo(); + TenantInfoImpl admin = new TenantInfoImpl(); admin.getAllowedClusters().add(cluster); ZkUtils.createFullPathOptimistic(mockZooKeeperGlobal, PulsarWebResource.path(POLICIES, property, cluster, namespace), ObjectMapperFactory.getThreadLocal().writeValueAsBytes(new Policies()), ZooDefs.Ids.OPEN_ACL_UNSAFE, diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java index e1cef1b6d3536..847c0800837d5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/BrokerAdminClientTlsAuthTest.java @@ -36,7 +36,7 @@ import org.apache.pulsar.common.policies.data.BundlesData; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -131,7 +131,7 @@ public void testPersistentList() throws Exception { try (PulsarAdmin admin = buildAdminClient("superproxy")) { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant", - new TenantInfo(ImmutableSet.of("admin"), + new TenantInfoImpl(ImmutableSet.of("admin"), ImmutableSet.of("test"))); } try (PulsarAdmin admin = buildAdminClient("admin")) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java index 92086c7da7479..17435936230f9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -58,7 +58,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); } 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 770b792711664..132d53e2c6bd8 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 @@ -92,7 +92,7 @@ import org.apache.pulsar.common.policies.data.PolicyOperation; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.metadata.cache.impl.MetadataCacheImpl; import org.apache.pulsar.metadata.impl.AbstractMetadataStore; @@ -170,9 +170,9 @@ public void setup() throws Exception { admin.clusters().createCluster("usw", new ClusterDataImpl("http://broker-usw.com:8080")); admin.clusters().createCluster("usc", new ClusterDataImpl("http://broker-usc.com:8080")); admin.tenants().createTenant(this.testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc", "usw"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc", "usw"))); admin.tenants().createTenant(this.testOtherTenant, - new TenantInfo(Sets.newHashSet("role3", "role4"), Sets.newHashSet("use", "usc", "usw"))); + new TenantInfoImpl(Sets.newHashSet("role3", "role4"), Sets.newHashSet("use", "usc", "usw"))); createTestNamespaces(this.testLocalNamespaces, new BundlesData()); createGlobalTestNamespaces(this.testTenant, this.testGlobalNamespaces.get(0).getLocalName(), @@ -288,7 +288,7 @@ public void testGetNamespaces() throws Exception { && path.equals("/admin/policies/my-tenant"); }); // clear caches to load data from metadata-store again - MetadataCacheImpl tenantCache = (MetadataCacheImpl) pulsar.getPulsarResources() + MetadataCacheImpl tenantCache = (MetadataCacheImpl) pulsar.getPulsarResources() .getTenantResources().getCache(); AbstractMetadataStore store = (AbstractMetadataStore) tenantCache.getStore(); tenantCache.invalidateAll(); @@ -513,7 +513,7 @@ public void testGlobalNamespaceReplicationConfiguration() throws Exception { } admin.tenants().updateTenant(testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usc"))); try { namespaces.setNamespaceReplicationClusters(this.testTenant, "global", @@ -986,7 +986,7 @@ public void testValidateAdminAccessOnTenant() throws Exception { pulsar.getConfiguration().setAuthorizationEnabled(true); final String path = PulsarWebResource.path(POLICIES, property); final String data = ObjectMapperFactory.getThreadLocal().writeValueAsString( - new TenantInfo(Sets.newHashSet(namespaces.clientAppId()), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet(namespaces.clientAppId()), Sets.newHashSet("use"))); ZkUtils.createFullPathOptimistic(pulsar.getConfigurationCache().getZooKeeper(), path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); @@ -1197,7 +1197,7 @@ public void testSubscribeRate() throws Exception { SubscribeRate subscribeRate = new SubscribeRate(1, 5); String namespace = "my-tenants/my-namespace"; admin.tenants().createTenant("my-tenants", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(testLocalCluster))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(testLocalCluster))); admin.namespaces().createNamespace(namespace, Sets.newHashSet(testLocalCluster)); admin.namespaces().setSubscribeRate(namespace, subscribeRate); assertEquals(subscribeRate, admin.namespaces().getSubscribeRate(namespace)); @@ -1478,7 +1478,7 @@ public void testMaxTopicsPerNamespace() throws Exception { String namespace = "testTenant/ns1"; admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("testTenant", tenantInfo); admin.namespaces().createNamespace(namespace, Sets.newHashSet("use")); 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 267fbe6449c13..7985beff1061b 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 @@ -67,7 +67,7 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.zookeeper.ZooKeeperManagedLedgerCache; import org.apache.zookeeper.KeeperException; @@ -131,7 +131,7 @@ protected void setup() throws Exception { admin.clusters().createCluster("use", new ClusterDataImpl("http://broker-use.com:8080")); admin.clusters().createCluster("test", new ClusterDataImpl("http://broker-use.com:8080")); admin.tenants().createTenant(this.testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testLocalCluster, "test"))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testLocalCluster, "test"))); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet(testLocalCluster, "test")); } @@ -631,7 +631,7 @@ public void testPeekWithSubscriptionNameNotExist() throws Exception { @Test public void testGetLastMessageId() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/ns1", Sets.newHashSet("test")); final String topicName = "persistent://prop-xyz/ns1/testGetLastMessageId"; @@ -661,7 +661,7 @@ public void testGetLastMessageId() throws Exception { @Test public void testExamineMessage() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("tenant-xyz", tenantInfo); admin.namespaces().createNamespace("tenant-xyz/ns-abc", Sets.newHashSet("test")); final String topicName = "persistent://tenant-xyz/ns-abc/topic-123"; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java index 747c3e7563f8b..9183d95b1a937 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/ResourceGroupsTest.java @@ -26,7 +26,7 @@ import org.apache.pulsar.broker.admin.v2.ResourceGroups; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ResourceGroup; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -175,7 +175,7 @@ public void testNamespaceResourceGroup() throws Exception { private void prepareData() throws PulsarAdminException { admin.clusters().createCluster(testCluster, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant(testTenant, - new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testCluster))); + new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet(testCluster))); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java index 1e880cc68e551..710920a9966f0 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicMessageTTLTest.java @@ -25,7 +25,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.eclipse.jetty.http.HttpStatus; import org.testng.Assert; @@ -58,7 +58,7 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); @@ -131,7 +131,7 @@ public void testTopicPolicyDisabled() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java index 32ca46b725783..2420a5b2ad873 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesDisableTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.common.policies.data.PublishRate; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.eclipse.jetty.http.HttpStatus; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -56,7 +56,7 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java index a4734507eaca3..c227870619504 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java @@ -52,7 +52,7 @@ import org.apache.pulsar.common.policies.data.PublishRate; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -99,7 +99,7 @@ protected void setup() throws Exception { super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(this.testTenant, tenantInfo); admin.namespaces().createNamespace(testTenant + "/" + testNamespace, Sets.newHashSet("test")); admin.topics().createPartitionedTopic(testTopic, 2); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java index 8cc76bdbceef8..ed60ef3f63a95 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java @@ -97,7 +97,7 @@ import org.apache.pulsar.common.policies.data.PoliciesUtil; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.policies.data.Policies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -165,7 +165,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); } @@ -576,14 +576,14 @@ public void testGetDynamicLocalConfiguration() throws Exception { @Test public void properties() throws PulsarAdminException { Set allowedClusters = Sets.newHashSet("use"); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), allowedClusters); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), allowedClusters); admin.tenants().updateTenant("prop-xyz", tenantInfo); assertEquals(admin.tenants().getTenants(), Lists.newArrayList("prop-xyz")); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), tenantInfo); - TenantInfo newPropertyAdmin = new TenantInfo(Sets.newHashSet("role3", "role4"), allowedClusters); + TenantInfoImpl newPropertyAdmin = new TenantInfoImpl(Sets.newHashSet("role3", "role4"), allowedClusters); admin.tenants().updateTenant("prop-xyz", newPropertyAdmin); assertEquals(admin.tenants().getTenantInfo("prop-xyz"), newPropertyAdmin); @@ -604,7 +604,7 @@ public void properties() throws PulsarAdminException { @Test public void namespaces() throws Exception { admin.clusters().createCluster("usw", new ClusterDataImpl()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); @@ -1689,12 +1689,12 @@ public void persistentTopicsInvalidCursorReset() throws Exception { @Test public void testObjectWithUnknownProperties() { - class CustomPropertyAdmin extends TenantInfo { + class CustomPropertyAdmin extends TenantInfoImpl { @SuppressWarnings("unused") public int newProperty; } - TenantInfo pa = new TenantInfo(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("use")); + TenantInfoImpl pa = new TenantInfoImpl(Sets.newHashSet("test_appid1", "test_appid2"), Sets.newHashSet("use")); CustomPropertyAdmin cpa = new CustomPropertyAdmin(); cpa.setAdminRoles(pa.getAdminRoles()); cpa.setAllowedClusters(pa.getAllowedClusters()); @@ -1966,7 +1966,7 @@ public PulsarAdmin getAdmin() { @Test public void testTopicBundleRangeLookup() throws Exception { admin.clusters().createCluster("usw", new ClusterDataImpl()); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw")); admin.tenants().updateTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/getBundleNs", 100); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java index 535ad4b5a3bdd..71f64b4307f0f 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest2.java @@ -68,7 +68,7 @@ import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.TopicStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.testng.annotations.AfterMethod; @@ -95,7 +95,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop-xyz", tenantInfo); admin.namespaces().createNamespace("prop-xyz/use/ns1"); } @@ -611,7 +611,7 @@ public void testReplicationPeerCluster() throws Exception { final String property = "peer-prop"; Set allowedClusters = Sets.newHashSet("us-west1", "us-west2", "us-west3", "us-west4", "us-east1", "us-east2"); - TenantInfo propConfig = new TenantInfo(Sets.newHashSet("test"), allowedClusters); + TenantInfoImpl propConfig = new TenantInfoImpl(Sets.newHashSet("test"), allowedClusters); admin.tenants().createTenant(property, propConfig); final String namespace = property + "/global/conflictPeer"; @@ -790,7 +790,7 @@ public void testPublishConsumerStats() throws Exception { @Test public void testTenantNameWithUnderscore() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); admin.tenants().createTenant("prop_xyz", tenantInfo); admin.namespaces().createNamespace("prop_xyz/use/my-namespace"); @@ -810,7 +810,7 @@ public void testTenantNameWithUnderscore() throws Exception { @Test public void testTenantNameWithInvalidCharacters() throws Exception { - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); // If we try to create property with invalid characters, it should fail immediately try { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java index d608b9f3d9a38..cad1f18c4c96d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v3/AdminApiTransactionTest.java @@ -38,7 +38,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.ManagedLedgerInternalStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TransactionBufferStats; import org.apache.pulsar.common.policies.data.TransactionCoordinatorInternalStats; import org.apache.pulsar.common.policies.data.TransactionCoordinatorStats; @@ -73,7 +73,7 @@ protected void setup() throws Exception { conf.setTransactionBufferSnapshotMaxTransactionCount(1); super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("pulsar", tenantInfo); admin.namespaces().createNamespace("pulsar/system", Sets.newHashSet("test")); admin.tenants().createTenant("public", tenantInfo); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java index 8825385944ae9..d128e957fcd58 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthLogsTest.java @@ -21,7 +21,7 @@ import static org.testng.Assert.fail; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -71,7 +71,7 @@ public void setup() throws Exception { .serviceHttpUrl(brokerUrl.toString()).build()) { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java index 75343435d9d3d..5e5e7421064fa 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/AuthorizationTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.SubscriptionAuthMode; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -75,7 +75,7 @@ public void simple() throws Exception { assertFalse(auth.canLookup(TopicName.get("persistent://p1/c1/ns1/ds1"), "my-role", null)); admin.clusters().createCluster("c1", new ClusterDataImpl()); - admin.tenants().createTenant("p1", new TenantInfo(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); + admin.tenants().createTenant("p1", new TenantInfoImpl(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); waitForChange(); admin.namespaces().createNamespace("p1/c1/ns1"); waitForChange(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java index 421da4fec81a2..f61b0de5b4bc3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockAuthorizationProvider.java @@ -31,7 +31,7 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.PolicyName; import org.apache.pulsar.common.policies.data.PolicyOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; @@ -58,7 +58,7 @@ public CompletableFuture isSuperUser(String role, ServiceConfiguration } @Override - public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, + public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { return roleAuthorizedAsync(role); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java index ed1001c6c2ae9..ac5f104ec1b64 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java @@ -55,7 +55,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.tests.TestRetrySupport; import org.apache.pulsar.zookeeper.ZooKeeperClientFactory; @@ -310,14 +310,14 @@ protected void waitForZooKeeperWatchers() { } } - protected TenantInfo createDefaultTenantInfo() throws PulsarAdminException { + protected TenantInfoImpl createDefaultTenantInfo() throws PulsarAdminException { // create local cluster if not exist if (!admin.clusters().getClusters().contains(configClusterName)) { admin.clusters().createCluster(configClusterName, new ClusterDataImpl()); } Set allowedClusters = Sets.newHashSet(); allowedClusters.add(configClusterName); - return new TenantInfo(Sets.newHashSet(), allowedClusters); + return new TenantInfoImpl(Sets.newHashSet(), allowedClusters); } public static MockZooKeeper createMockZooKeeper() throws Exception { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java index 77fb42f796493..f125984cb0f66 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java @@ -57,7 +57,7 @@ import org.apache.pulsar.common.naming.ServiceUnitId; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomainImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet; @@ -211,7 +211,7 @@ public void testAntiAffinityNamespaceFilteringWithDomain() throws Exception { pulsar1.getConfiguration().setFailureDomainsEnabled(true); admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; @@ -307,7 +307,7 @@ public void testAntiAffinityNamespaceFilteringWithoutDomain() throws Exception { final String bundle = "/0x00000000_0xffffffff"; admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; @@ -410,7 +410,7 @@ public void testBrokerSelectionForAntiAffinityGroup() throws Exception { domain2.brokers = Sets.newHashSet(broker2); admin1.clusters().createFailureDomain(cluster, "domain2", domain2); - admin1.tenants().createTenant(tenant, new TenantInfo(null, Sets.newHashSet(cluster))); + admin1.tenants().createTenant(tenant, new TenantInfoImpl(null, Sets.newHashSet(cluster))); admin1.namespaces().createNamespace(namespace1); admin1.namespaces().createNamespace(namespace2); @@ -460,7 +460,7 @@ public void testLoadSheddingUtilWithAntiAffinityNamespace() throws Exception { final String bundle = "/0x00000000_0xffffffff"; admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; @@ -513,7 +513,7 @@ public void testLoadSheddingWithAntiAffinityNamespace() throws Exception { final String bundle = "0x00000000_0xffffffff"; admin1.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); for (int i = 0; i < totalNamespaces; i++) { final String ns = namespace + i; diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java index 81ec0201002e0..b1fd3682bf78b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LeaderElectionServiceTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.mockito.Mockito; @@ -88,7 +88,7 @@ public void anErrorShouldBeThrowBeforeLeaderElected() throws PulsarServerExcepti @Cleanup PulsarAdmin adminClient = PulsarAdmin.builder().serviceHttpUrl(pulsar.getWebServiceAddress()).build(); adminClient.clusters().createCluster(clusterName, new ClusterDataImpl(pulsar.getWebServiceAddress())); - adminClient.tenants().createTenant(tenant, new TenantInfo(Sets.newHashSet("appid1", "appid2"), + adminClient.tenants().createTenant(tenant, new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(clusterName))); adminClient.namespaces().createNamespace(tenant + "/" + namespace, 16); @Cleanup diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java index c92574cbf315d..575a418d6aadd 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java @@ -70,7 +70,7 @@ import org.apache.pulsar.common.naming.ServiceUnitId; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.metadata.api.Notification; import org.apache.pulsar.metadata.api.NotificationType; @@ -495,7 +495,7 @@ public void testNamespaceIsolationPoliciesForPrimaryAndSecondaryBrokers() throws final String sharedBroker = "broker3"; admin1.clusters().createCluster(cluster, new ClusterDataImpl("http://" + pulsar1.getAdvertisedAddress())); admin1.tenants().createTenant(tenant, - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); admin1.namespaces().createNamespace(tenant + "/" + cluster + "/" + namespace); // set a new policy diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java index db9a4ade91c52..7c85c3a1d8474 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/OwnerShipCacheForCurrentServerTest.java @@ -22,7 +22,7 @@ import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -42,7 +42,7 @@ protected void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE); admin.topics().createNonPartitionedTopic(TOPIC_TEST); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java index 6d9d70f416282..de5aee659d5cb 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceGroupUsageAggregationTest.java @@ -33,7 +33,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.testng.Assert; import org.testng.annotations.AfterClass; @@ -251,7 +251,7 @@ private void prepareData() throws PulsarAdminException { final String clusterName = "test"; admin.clusters().createCluster(clusterName, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant(TenantName, - new TenantInfo(Sets.newHashSet("fakeAdminRole"), Sets.newHashSet(clusterName))); + new TenantInfoImpl(Sets.newHashSet("fakeAdminRole"), Sets.newHashSet(clusterName))); admin.namespaces().createNamespace(TenantAndNsName); admin.namespaces().setNamespaceReplicationClusters(TenantAndNsName, Sets.newHashSet(clusterName)); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java index 29cc1097bedc2..f960e01c55499 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java @@ -48,7 +48,7 @@ import org.apache.pulsar.common.policies.data.BacklogQuota; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.awaitility.Awaitility; @@ -101,7 +101,7 @@ void setup() throws Exception { admin.clusters().createCluster("usc", new ClusterDataImpl(adminUrl.toString())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); admin.namespaces().createNamespace("prop/ns-quota"); admin.namespaces().setNamespaceReplicationClusters("prop/ns-quota", Sets.newHashSet("usc")); admin.namespaces().createNamespace("prop/quotahold"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java index b8374b676c409..fbc4a9986fd55 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BkEnsemblesTestBase.java @@ -25,7 +25,7 @@ import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.tests.TestRetrySupport; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.Assert; @@ -100,7 +100,7 @@ protected void setup() throws Exception { admin.clusters().createCluster("usc", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("usc"))); } catch (Throwable t) { log.error("Error setting up broker test", t); Assert.fail("Broker test setup failed"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java index 1ee6a12114058..1a7df976d93d7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBookieIsolationTest.java @@ -64,7 +64,7 @@ import org.apache.pulsar.common.policies.data.BookiesRackConfiguration; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.apache.pulsar.zookeeper.ZkBookieRackAffinityMapping; @@ -169,7 +169,7 @@ public void testBookieIsolation() throws Exception { ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); - TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); admin.namespaces().createNamespace(ns1); admin.namespaces().createNamespace(ns2); @@ -312,7 +312,7 @@ public void testBookieIsolationWithSecondaryGroup() throws Exception { ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); - TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); admin.namespaces().createNamespace(ns1); admin.namespaces().createNamespace(ns2); @@ -434,7 +434,7 @@ public void testDeleteIsolationGroup() throws Exception { ClusterDataImpl clusterData = new ClusterDataImpl(pulsarService.getWebServiceAddress()); admin.clusters().createCluster(cluster, clusterData); - TenantInfo tenantInfo = new TenantInfo(null, Sets.newHashSet(cluster)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(null, Sets.newHashSet(cluster)); admin.tenants().createTenant(tenant1, tenantInfo); admin.namespaces().createNamespace(ns2); admin.namespaces().createNamespace(ns3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java index acf78c78aa734..b00ac20d80f52 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerTestBase.java @@ -21,7 +21,7 @@ import org.apache.pulsar.broker.ServiceConfiguration; import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +45,7 @@ public void baseSetup(ServiceConfiguration serviceConfiguration) throws Exceptio private void baseSetupCommon() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop", - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop/ns-abc"); admin.namespaces().setNamespaceReplicationClusters("prop/ns-abc", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java index aa3e191a9e1e5..4b80bcb1a43f3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/MaxMessageSizeTest.java @@ -33,7 +33,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -78,7 +78,7 @@ void setup() { admin = PulsarAdmin.builder().serviceHttpUrl(url).build(); admin.clusters().createCluster("max_message_test", new ClusterDataImpl(url)); admin.tenants() - .createTenant("test", new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("max_message_test"))); + .createTenant("test", new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("max_message_test"))); admin.namespaces().createNamespace("test/message", Sets.newHashSet("max_message_test")); } catch (Exception e) { e.printStackTrace(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java index c97b24fb41934..d81eb1e6ed39f 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java @@ -48,7 +48,7 @@ import org.apache.pulsar.client.api.TypedMessageBuilder; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.apache.pulsar.zookeeper.ZookeeperServerTest; import org.slf4j.Logger; @@ -164,7 +164,7 @@ protected void setup() throws Exception { pulsar3.getSafeBrokerServiceUrl(), pulsar3.getBrokerServiceUrlTls())); admin1.tenants().createTenant("pulsar", - new TenantInfo(Sets.newHashSet("appid1", "appid2", "appid3"), Sets.newHashSet("r1", "r2", "r3"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2", "appid3"), Sets.newHashSet("r1", "r2", "r3"))); admin1.namespaces().createNamespace("pulsar/ns", Sets.newHashSet("r1", "r2", "r3")); admin1.namespaces().createNamespace("pulsar/ns1", Sets.newHashSet("r1", "r2")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java index c5214e12bead0..6faa62b53dd38 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.Consumer; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.impl.ConsumerBase; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -421,7 +421,7 @@ public void testExclusiveSingleAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 10; final int numberOfPartitions = 4; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); // Special step to create partitioned topic @@ -477,7 +477,7 @@ public void testSharedSingleAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 10; final int numberOfPartitions = 3; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); Random rn = new Random(); @@ -578,7 +578,7 @@ public void testFailoverSingleAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 10; final int numberOfPartitions = 3; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); Random rn = new Random(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java index 95cf9f95cb0ed..79715c23cdb0b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesServiceTest.java @@ -26,7 +26,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicPolicies; import org.awaitility.Awaitility; import org.testng.Assert; @@ -207,7 +207,7 @@ public void testCacheCleanup() throws Exception { private void prepareData() throws PulsarAdminException { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant("system-topic", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NAMESPACE1); admin.namespaces().createNamespace(NAMESPACE2); admin.namespaces().createNamespace(NAMESPACE3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java index 27e3666414325..28cc9da98acf9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicOwnerTest.java @@ -47,7 +47,7 @@ import org.apache.pulsar.common.naming.NamespaceBundle; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.api.extended.MetadataStoreExtended; import org.apache.pulsar.metadata.api.extended.SessionEvent; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; @@ -118,7 +118,7 @@ void setup() throws Exception { Thread.sleep(1000); pulsarAdmins[0].clusters().createCluster(testCluster, new ClusterDataImpl(pulsarServices[0].getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet(testCluster)); pulsarAdmins[0].tenants().createTenant(testTenant, tenantInfo); pulsarAdmins[0].namespaces().createNamespace(testNamespace, 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java index 41ee681f8f912..9d19e3e4a3c26 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java @@ -32,7 +32,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.stats.Metrics; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.apache.pulsar.transaction.coordinator.impl.MLTransactionLogImpl; @@ -97,7 +97,7 @@ public void testManagedLedgerMetrics() throws Exception { @Test public void testTransactionTopic() throws Exception { admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 1); ManagedLedgerConfig managedLedgerConfig = new ManagedLedgerConfig(); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java index 8c5ec2478c111..daaf4a3444b72 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/systopic/NamespaceEventsSystemTopicServiceTest.java @@ -30,7 +30,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicPolicies; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,7 +125,7 @@ public void checkSystemTopic() throws PulsarAdminException { private void prepareData() throws PulsarAdminException { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getBrokerServiceUrl())); admin.tenants().createTenant("system-topic", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace(NAMESPACE1); admin.namespaces().createNamespace(NAMESPACE2); admin.namespaces().createNamespace(NAMESPACE3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java index 59a95fb355abe..2078b265123d3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TopicTransactionBufferRecoverTest.java @@ -54,7 +54,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -87,14 +87,14 @@ protected void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createNonPartitionedTopic(RECOVER_COMMIT); admin.topics().createNonPartitionedTopic(RECOVER_ABORT); admin.topics().createNonPartitionedTopic(TAKE_SNAPSHOT); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java index c7395f480ff22..9c5c36614e776 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionClientReconnectTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; @@ -55,10 +55,10 @@ public void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createNonPartitionedTopic(RECONNECT_TOPIC); admin.topics().createSubscription(RECONNECT_TOPIC, "test", MessageId.latest); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java index 2c137ba81be4c..1d0b28e9d805c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionConsumeTest.java @@ -43,7 +43,7 @@ import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.api.proto.TxnAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.awaitility.Awaitility; import org.testng.Assert; @@ -71,7 +71,7 @@ public void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); admin.topics().createNonPartitionedTopic(CONSUME_TOPIC); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java index 55e03ecfcb569..6b69bf1899ec1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionProduceTest.java @@ -57,7 +57,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.awaitility.Awaitility; import org.testng.Assert; @@ -89,7 +89,7 @@ protected void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createPartitionedTopic(PRODUCE_COMMIT_TOPIC, 3); admin.topics().createPartitionedTopic(PRODUCE_ABORT_TOPIC, 3); @@ -97,7 +97,7 @@ protected void setup() throws Exception { admin.topics().createPartitionedTopic(ACK_ABORT_TOPIC, 3); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java index a0b7fb17dd46e..5fb58ae42b284 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionBufferClientTest.java @@ -55,7 +55,7 @@ import org.apache.pulsar.common.api.proto.TxnAction; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.awaitility.Awaitility; import org.mockito.Mockito; @@ -86,7 +86,7 @@ public class TransactionBufferClientTest extends TransactionMetaStoreTestBase { @Override protected void afterSetup() throws Exception { pulsarAdmins[0].clusters().createCluster("my-cluster", new ClusterDataImpl(pulsarServices[0].getWebServiceAddress())); - pulsarAdmins[0].tenants().createTenant("public", new TenantInfo(Sets.newHashSet(), Sets.newHashSet("my-cluster"))); + pulsarAdmins[0].tenants().createTenant("public", new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("my-cluster"))); pulsarAdmins[0].namespaces().createNamespace(namespace, 10); pulsarAdmins[0].topics().createPartitionedTopic(partitionedTopicName.getPartitionedTopicName(), partitions); pulsarClient.newConsumer() diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java index 8d05b80e4bad1..20d92fb0c7bb7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionLowWaterMarkTest.java @@ -57,7 +57,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.apache.pulsar.transaction.coordinator.TransactionMetadataStore; @@ -88,11 +88,11 @@ protected void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createNonPartitionedTopic(TOPIC); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java index 4d7159311dbc6..3c91884ebd67d 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java @@ -40,7 +40,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -65,11 +65,11 @@ protected void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createNonPartitionedTopic(TOPIC); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java index 021c3b0f6a4f1..5ed73f3c47261 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckInMemoryDeleteTest.java @@ -42,7 +42,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.BitSetRecyclable; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; @@ -82,10 +82,10 @@ protected void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java index d50ab5312f013..3143916963270 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckPersistentTest.java @@ -47,7 +47,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -70,11 +70,11 @@ public void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace("public/txn", 10); admin.topics().createNonPartitionedTopic(PENDING_ACK_REPLAY_TOPIC); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java index e24861a14b0bc..ea99572a8d5ed 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/web/WebServiceTest.java @@ -64,7 +64,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.ConflictException; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.SecurityUtility; import org.apache.pulsar.metadata.impl.ZKMetadataStore; @@ -272,7 +272,7 @@ public void testMaxRequestSize() throws Exception { .setHeader("Content-Type", "application/json"); // HTTP server is configured to reject everything > 10K - TenantInfo info1 = new TenantInfo(); + TenantInfoImpl info1 = new TenantInfoImpl(); info1.setAdminRoles(Collections.singleton(StringUtils.repeat("*", 20 * 1024))); builder.setBody(ObjectMapperFactory.getThreadLocal().writeValueAsBytes(info1)); Response res = builder.execute().get(); @@ -284,7 +284,7 @@ public void testMaxRequestSize() throws Exception { String localCluster = "test"; String clusterPath = PulsarWebResource.path("clusters", localCluster); pulsar.getPulsarResources().getClusterResources().create(clusterPath, new ClusterDataImpl()); - TenantInfo info2 = new TenantInfo(); + TenantInfoImpl info2 = new TenantInfoImpl(); info2.setAdminRoles(Collections.singleton(StringUtils.repeat("*", 1 * 1024))); info2.setAllowedClusters(Sets.newHashSet(localCluster)); builder.setBody(ObjectMapperFactory.getThreadLocal().writeValueAsBytes(info2)); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java index c8a8d84cc365a..86445b626eb67 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java @@ -38,7 +38,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.zookeeper.KeeperException.Code; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -174,7 +174,7 @@ public void testTlsSyncProducerAndConsumer(int batchMessageDelayMs) throws Excep admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); testSyncProducerAndConsumer(batchMessageDelayMs); @@ -192,7 +192,7 @@ public void testBasicCryptSyncProducerAndConsumer(int batchMessageDelayMs) throw admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); testSyncProducerAndConsumer(batchMessageDelayMs); @@ -210,7 +210,7 @@ public void testBasicArp1SyncProducerAndConsumer(int batchMessageDelayMs) throws admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); testSyncProducerAndConsumer(batchMessageDelayMs); @@ -232,7 +232,7 @@ public void testAnonymousSyncProducerAndConsumer(int batchMessageDelayMs) throws admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("anonymousUser"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("anonymousUser"), Sets.newHashSet("test"))); // make a PulsarAdmin instance as "anonymousUser" for http request admin.close(); @@ -301,7 +301,7 @@ public void testInternalServerExceptionOnLookup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); String namespace = "my-property/my-ns"; admin.namespaces().createNamespace(namespace, Sets.newHashSet("test")); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java index 23e73b7c7c620..75ff745ce9f0a 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java @@ -35,7 +35,7 @@ import org.apache.pulsar.common.tls.PublicSuffixMatcher; import org.apache.pulsar.common.tls.TlsHostnameVerifier; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; @@ -120,7 +120,7 @@ protected void setupClient() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java index deb04e4c2100f..47c23bbef8daf 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java @@ -50,7 +50,7 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.NamespaceOperation; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantOperation; import org.apache.pulsar.common.policies.data.TopicOperation; import org.apache.pulsar.common.util.RestException; @@ -132,7 +132,7 @@ public void testProducerAndConsumerAuthorization() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); // (1) Valid Producer and consumer creation @@ -197,7 +197,7 @@ public void testSubscriberPermission() throws Exception { superAdmin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); superAdmin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(tenantRole), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet(tenantRole), Sets.newHashSet("test"))); superAdmin.namespaces().createNamespace(namespace, Sets.newHashSet("test")); tenantAdmin.namespaces().grantPermissionOnNamespace(namespace, subscriptionRole, Collections.singleton(AuthAction.consume)); @@ -294,7 +294,7 @@ public void testSubscriptionPrefixAuthorization() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("prop-prefix", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("prop-prefix/ns", Sets.newHashSet("test")); // (1) Valid subscription name will be approved by authorization service @@ -512,7 +512,7 @@ public CompletableFuture revokeSubscriptionPermissionAsync(NamespaceName n } @Override - public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfo tenantInfo, AuthenticationDataSource authenticationData) { + public CompletableFuture isTenantAdmin(String tenant, String role, TenantInfoImpl tenantInfo, AuthenticationDataSource authenticationData) { return CompletableFuture.completedFuture(true); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java index 2f37a2c57926e..8fa8d45f159d5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java @@ -84,7 +84,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.SecurityUtility; import org.apache.pulsar.discovery.service.DiscoveryService; @@ -273,7 +273,7 @@ public void testMultipleBrokerDifferentClusterLookup() throws Exception { admin.clusters().createCluster(newCluster, new ClusterDataImpl(pulsar.getWebServiceAddress(), null, broker2ServiceUrl, null)); admin.tenants().createTenant(property, - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(newCluster))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(newCluster))); admin.namespaces().createNamespace(property + "/" + newCluster + "/my-ns"); @Cleanup @@ -1087,7 +1087,7 @@ public void testPartitionedMetadataWithDeprecatedVersion() throws Exception { admin.clusters().createCluster(cluster, new ClusterDataImpl(pulsar.getWebServiceAddress(), null, null, null)); admin.tenants().createTenant(property, - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet(cluster))); admin.namespaces().createNamespace(property + "/" + cluster + "/" + namespace); admin.topics().createPartitionedTopic(dest.toString(), totalPartitions); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java index 0e04bb7aa686d..b28c39b88b3fd 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationFailureTest.java @@ -48,7 +48,7 @@ import org.apache.pulsar.client.impl.MessageIdImpl; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.testng.annotations.AfterMethod; @@ -115,7 +115,7 @@ void setup(Method method) throws Exception { ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(pulsar.getBrokerServiceUrl()).maxBackoffInterval(1, TimeUnit.SECONDS); pulsarClient = clientBuilder.build(); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().createTenant(tenant, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java index 3018ed0c4a1ae..a766b40e5cf21 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java @@ -64,7 +64,7 @@ import org.apache.pulsar.common.policies.data.NonPersistentSubscriptionStats; import org.apache.pulsar.common.policies.data.NonPersistentTopicStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble; import org.apache.pulsar.zookeeper.ZookeeperServerTest; import org.slf4j.Logger; @@ -1012,7 +1012,7 @@ void setupReplicationCluster() throws Exception { pulsar1.getBrokerServiceUrlTls())); admin1.clusters().createCluster("global", new ClusterDataImpl("http://global:8080")); - admin1.tenants().createTenant("pulsar", new TenantInfo( + admin1.tenants().createTenant("pulsar", new TenantInfoImpl( Sets.newHashSet("appid1", "appid2", "appid3"), Sets.newHashSet("r1", "r2", "r3"))); admin1.namespaces().createNamespace("pulsar/global/ns"); admin1.namespaces().setNamespaceReplicationClusters("pulsar/global/ns", diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java index 288e4a961c7bb..6bcfcdfb85341 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ProducerConsumerBase.java @@ -26,7 +26,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.BeforeMethod; @@ -41,13 +41,13 @@ public void beforeMethod(Method m) throws Exception { protected void producerBaseSetup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Sets.newHashSet("test")); // so that clients can test short names admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java index 4b0882f1eaa6e..a35475142378c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PulsarMultiListenersWithInternalListenerNameTest.java @@ -45,7 +45,7 @@ import org.apache.pulsar.client.impl.conf.ClientConfigurationData; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -110,7 +110,7 @@ protected void customizeNewPulsarClientBuilder(ClientBuilder clientBuilder) { @Test public void testFindBrokerWithListenerName() throws Exception { admin.clusters().createCluster("localhost", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet("localhost")); this.admin.tenants().createTenant("public", tenantInfo); this.admin.namespaces().createNamespace("public/default"); @@ -150,7 +150,7 @@ private void doFindBrokerWithListenerName(boolean useHttp) throws Exception { @Test public void testHttpLookupRedirect() throws Exception { admin.clusters().createCluster("localhost", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet("localhost")); this.admin.tenants().createTenant("public", tenantInfo); this.admin.namespaces().createNamespace("public/default"); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java index 58245fe954a1e..79a5cd266fe90 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TenantTest.java @@ -22,7 +22,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -48,7 +48,7 @@ public void testMaxTenant() throws Exception { conf.setMaxTenants(2); super.internalSetup(); admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant("testTenant1", tenantInfo); admin.tenants().createTenant("testTenant2", tenantInfo); try { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java index 7230477ab0f86..28870a70e8ac4 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TlsProducerConsumerBase.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.*; import com.google.common.collect.Sets; @@ -105,7 +105,7 @@ protected void internalSetUpForNamespace() throws Exception { admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java index 86bd1cdff5592..7c57768f145c5 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenAuthenticatedProducerConsumerTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.broker.authentication.AuthenticationProviderToken; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -131,7 +131,7 @@ public void testTokenProducerAndConsumer() throws Exception { // test rest by admin admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); // test protocol by producer/consumer diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java index 55b3d2edbeefa..28fa7ddfdda95 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java @@ -36,7 +36,7 @@ import org.apache.pulsar.client.impl.ProducerImpl; import org.apache.pulsar.client.impl.auth.oauth2.AuthenticationFactoryOAuth2; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -153,7 +153,7 @@ public void testTokenProducerAndConsumer() throws Exception { // test rest by admin admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); // test protocol by producer/consumer @@ -170,7 +170,7 @@ public void testOAuth2TokenRefreshedWithoutReconnect() throws Exception { // test rest by admin admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); Consumer consumer = pulsarClient.newConsumer().topic("persistent://my-property/my-ns/my-topic") diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java index 3a57a89dcf43d..67c1ee2a58b09 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/v1/V1_ProducerConsumerBase.java @@ -25,7 +25,7 @@ import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.BeforeMethod; @@ -40,7 +40,7 @@ public void beforeMethod(Method m) throws Exception { public void producerBaseSetup() throws Exception { admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java index 912e172c9eb67..6985c09b9f864 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/AdminApiKeyStoreTlsAuthTest.java @@ -48,7 +48,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.tls.NoopHostnameVerifier; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.keystoretls.KeyStoreSSLContext; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; @@ -179,7 +179,7 @@ public void testSuperUserCanListTenants() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.assertEquals(ImmutableSet.of("tenant1"), admin.tenants().getTenants()); } @@ -190,7 +190,7 @@ public void testSuperUserCantListNamespaces() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); Assert.assertTrue(admin.namespaces().getNamespaces("tenant1").contains("tenant1/ns1")); @@ -202,7 +202,7 @@ public void testAuthorizedUserAsOriginalPrincipal() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy", "user1"), + new TenantInfoImpl(ImmutableSet.of("proxy", "user1"), ImmutableSet.of("test"))); admin.namespaces().createNamespace("tenant1/ns1"); } @@ -221,7 +221,7 @@ public void testPersistentList() throws Exception { try (PulsarAdmin admin = buildAdminClient()) { admin.clusters().createCluster("test", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("foobar"), + new TenantInfoImpl(ImmutableSet.of("foobar"), ImmutableSet.of("test"))); Assert.assertEquals(ImmutableSet.of("tenant1"), admin.tenants().getTenants()); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java index 8958f6ac12643..0b55ec4a4344e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ConsumerConfigurationTest.java @@ -24,7 +24,7 @@ import org.apache.pulsar.client.api.PulsarClientException.InvalidConfigurationException; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -41,7 +41,7 @@ public void setup() throws Exception { admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java index 65bbfa11d43ce..35811dce80177 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithAuthTest.java @@ -40,7 +40,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -158,7 +158,7 @@ protected void internalSetUpForNamespace() throws Exception { admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java index 81487a78ed871..f09f3de02d9b2 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/KeyStoreTlsProducerConsumerTestWithoutAuthTest.java @@ -38,7 +38,7 @@ import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -144,7 +144,7 @@ protected void internalSetUpForNamespace() throws Exception { admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java index 33bc3789a8023..20897cde43c65 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MessageParserTest.java @@ -43,7 +43,7 @@ import org.apache.pulsar.common.api.raw.RawMessage; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; @@ -58,7 +58,7 @@ public void setup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-tenant", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-tenant/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java index f536d7591971e..89a974046bea0 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/MultiTopicsReaderTest.java @@ -51,7 +51,7 @@ import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.Murmur3_32Hash; import org.awaitility.Awaitility; @@ -73,7 +73,7 @@ protected void setup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); Policies policies = new Policies(); policies.replication_clusters = Sets.newHashSet("test"); // infinite retention diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java index bf6edf434c693..b7215f4c89f6b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PatternTopicsConsumerImplTest.java @@ -45,7 +45,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.naming.NamespaceName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -86,7 +86,7 @@ public void testPatternTopicsSubscribeWithBuilderFail() throws Exception { final String patternString = "persistent://my-property/my-ns/pattern-topic.*"; Pattern pattern = Pattern.compile(patternString); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -146,7 +146,7 @@ public void testBinaryProtoToGetTopicsOfNamespacePersistent() throws Exception { Pattern pattern = Pattern.compile("my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -250,7 +250,7 @@ public void testBinaryProtoToGetTopicsOfNamespaceNonPersistent() throws Exceptio Pattern pattern = Pattern.compile("my-property/my-ns/np-pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -341,7 +341,7 @@ public void testBinaryProtoToGetTopicsOfNamespaceAll() throws Exception { Pattern pattern = Pattern.compile("my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -491,7 +491,7 @@ public void testStartEmptyPatternConsumer() throws Exception { Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -579,7 +579,7 @@ public void testAutoSubscribePatternConsumer() throws Exception { Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -688,7 +688,7 @@ public void testAutoUnsubscribePatternConsumer() throws Exception { Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*"); // 1. create partition - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java index 9a49460f05b71..298a46916232e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/PerMessageUnAcknowledgedRedeliveryTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.api.MessageRoutingMode; import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.SubscriptionType; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterMethod; @@ -404,7 +404,7 @@ public void testSharedAckedPartitionedTopic() throws Exception { final String messagePredicate = "my-message-" + key + "-"; final int totalMessages = 15; final int numberOfPartitions = 3; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, numberOfPartitions); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java index 865a76be02541..9e806b8f0984e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/RawReaderTest.java @@ -43,7 +43,7 @@ import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -63,7 +63,7 @@ public void setup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java index 87907dded2de2..55ff8f5174d0c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/ReaderTest.java @@ -52,7 +52,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.Murmur3_32Hash; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -73,7 +73,7 @@ protected void setup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java index 5db0bef2736b5..939c6d7a0ce35 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/SchemaDeleteTest.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -47,7 +47,7 @@ protected void setup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java index 200f4f32320b2..8ad2c0cd77334 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java @@ -41,7 +41,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.awaitility.Awaitility; import org.slf4j.Logger; @@ -102,7 +102,7 @@ public void testDifferentTopicsNameSubscribe() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc3/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -131,7 +131,7 @@ public void testGetConsumersAndGetTopics() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -175,7 +175,7 @@ public void testSyncProducerAndConsumer() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -241,7 +241,7 @@ public void testAsyncConsumer() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -326,7 +326,7 @@ public void testConsumerUnackedRedelivery() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -461,7 +461,7 @@ public void testConsumerUnackedRedelivery() throws Exception { @Test public void testTopicNameValid() throws Exception{ final String topicName = "persistent://prop/use/ns-abc/testTopicNameValid"; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, 3); Consumer consumer = pulsarClient.newConsumer() @@ -492,7 +492,7 @@ public void testSubscribeUnsubscribeSingleTopic() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -654,7 +654,7 @@ public void testTopicsNameSubscribeWithBuilderFail() throws Exception { final String topicName2 = "persistent://prop/use/ns-abc/topic-2-" + key; final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -724,7 +724,7 @@ public void testMultiTopicsMessageListener() throws Exception { final String topicName1 = "persistent://prop/use/ns-abc/topic-1-" + key; List topicNames = Lists.newArrayList(topicName1); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName1, 2); @@ -786,7 +786,7 @@ public void testTopicAutoUpdatePartitions() throws Exception { final String topicName2 = "persistent://my-property/my-ns/topic-2-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName1, 2); admin.topics().createPartitionedTopic(topicName2, 2); @@ -844,7 +844,7 @@ public void testTopicAutoUpdatePartitions() throws Exception { public void testConsumerDistributionInFailoverSubscriptionWhenUpdatePartitions() throws Exception { final String topicName = "persistent://my-property/my-ns/testConsumerDistributionInFailoverSubscriptionWhenUpdatePartitions"; final String subName = "failover-test"; - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName, 2); assertEquals(admin.topics().getPartitionedTopicMetadata(topicName).partitions, 2); @@ -961,7 +961,7 @@ public void testDefaultBacklogTTL() throws Exception { admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); - admin.tenants().createTenant("prop", new TenantInfo(null, Sets.newHashSet("use"))); + admin.tenants().createTenant("prop", new TenantInfoImpl(null, Sets.newHashSet("use"))); admin.namespaces().createNamespace(namespace); Consumer consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName) @@ -1002,7 +1002,7 @@ public void testGetLastMessageId() throws Exception { final String topicName3 = "persistent://prop/use/ns-abc/topic-3-" + key; List topicNames = Lists.newArrayList(topicName1, topicName2, topicName3); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("prop", tenantInfo); admin.topics().createPartitionedTopic(topicName2, 2); admin.topics().createPartitionedTopic(topicName3, 3); @@ -1094,7 +1094,7 @@ public void multiTopicsInDifferentNameSpace() throws PulsarAdminException, Pulsa topics.add("persistent://prop/use/ns-abc/topic-2"); topics.add("persistent://prop/use/ns-abc1/topic-3"); admin.clusters().createCluster("use", new ClusterDataImpl(brokerUrl.toString())); - admin.tenants().createTenant("prop", new TenantInfo(null, Sets.newHashSet("use"))); + admin.tenants().createTenant("prop", new TenantInfoImpl(null, Sets.newHashSet("use"))); admin.namespaces().createNamespace("prop/use/ns-abc"); admin.namespaces().createNamespace("prop/use/ns-abc1"); Consumer consumer = pulsarClient.newConsumer() diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java index 789d9229c4aa7..f6bcbeea65282 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java @@ -67,7 +67,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.transaction.coordinator.TransactionCoordinatorID; import org.apache.pulsar.transaction.coordinator.TransactionMetadataStore; @@ -101,13 +101,13 @@ protected void setup() throws Exception { String webServicePort = brokerServiceUrlArr[brokerServiceUrlArr.length -1]; admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl("http://localhost:" + webServicePort)); admin.tenants().createTenant(TENANT, - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NAMESPACE1); admin.topics().createPartitionedTopic(TOPIC_OUTPUT, TOPIC_PARTITION); admin.topics().createPartitionedTopic(TOPIC_MESSAGE_ACK_TEST, 1); admin.tenants().createTenant(NamespaceName.SYSTEM_NAMESPACE.getTenant(), - new TenantInfo(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); + new TenantInfoImpl(Sets.newHashSet("appid1"), Sets.newHashSet(CLUSTER_NAME))); admin.namespaces().createNamespace(NamespaceName.SYSTEM_NAMESPACE.toString()); admin.topics().createPartitionedTopic(TopicName.TRANSACTION_COORDINATOR_ASSIGN.toString(), 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java index 8f4c6864b0167..ff03e59b7c1b7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactedTopicTest.java @@ -53,7 +53,7 @@ import org.apache.pulsar.client.impl.RawMessageImpl; import org.apache.pulsar.common.api.proto.MessageIdData; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -81,7 +81,7 @@ public void setup() throws Exception { admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java index 34679666e8023..2cb6d9d6aa109 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java @@ -65,7 +65,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -85,7 +85,7 @@ public void setup() throws Exception { admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); compactionScheduler = Executors.newSingleThreadScheduledExecutor( diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java index 060915e0fc2db..438a1bf96c090 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactorTest.java @@ -46,7 +46,7 @@ import org.apache.pulsar.client.impl.RawMessageImpl; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -65,7 +65,7 @@ public void setup() throws Exception { admin.clusters().createCluster("use", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("use"))); admin.namespaces().createNamespace("my-property/use/my-ns"); compactionScheduler = Executors.newSingleThreadScheduledExecutor( diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java index 6b2a24600de00..b055d1b70f8be 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionE2ESecurityTest.java @@ -62,7 +62,7 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -186,7 +186,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add(ADMIN_SUBJECT); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); superUserAdmin.tenants().updateTenant(TENANT, propAdmin); @@ -198,7 +198,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { superUserAdmin.namespaces().setNamespaceReplicationClusters(replNamespace, clusters); // create another test tenant and namespace - propAdmin = new TenantInfo(); + propAdmin = new TenantInfoImpl(); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); superUserAdmin.tenants().createTenant(TENANT2, propAdmin); superUserAdmin.namespaces().createNamespace( TENANT2 + "/" + NAMESPACE); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java index 1e75401b2ea9a..1641022a236d9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionLocalRunTest.java @@ -77,7 +77,7 @@ import org.apache.pulsar.common.policies.data.ConsumerStats; import org.apache.pulsar.common.policies.data.PublisherStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; @@ -268,7 +268,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList(CLUSTER))); admin.tenants().createTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java index a41a7dbb0f45c..887534cae4606 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java @@ -66,7 +66,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; @@ -192,7 +192,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java index cd0f70e0ec417..23ae6ef2eb6a6 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionTlsTest.java @@ -40,7 +40,7 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -165,7 +165,7 @@ void setup() throws Exception { leaderAdmin = pulsarAdmins[0]; Thread.sleep(1000); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Sets.newHashSet(testCluster)); pulsarAdmins[0].tenants().createTenant(testTenant, tenantInfo); pulsarAdmins[0].namespaces().createNamespace(testNamespace, 16); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java index a7461cee1076c..76e5b64d76f7e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarWorkerAssignmentTest.java @@ -45,7 +45,7 @@ import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.proto.Function.Assignment; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; @@ -117,7 +117,7 @@ void setup(Method method) throws Exception { } pulsarClient = clientBuilder.build(); - final TenantInfo propAdmin = new TenantInfo(); + final TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java index 4f9ddafa723b9..a3041977044a7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/AbstractPulsarE2ETest.java @@ -51,7 +51,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; @@ -195,7 +195,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add("superUser"); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java index 074ca66bf84f8..a4ddd66807591 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionAdminTest.java @@ -44,7 +44,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory; import org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactoryConfig; @@ -155,7 +155,7 @@ && isNotBlank(workerConfig.getBrokerClientAuthenticationParameters())) { } pulsarClient = clientBuilder.build(); - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java index da4fb1983b039..b9708bec19312 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java @@ -56,7 +56,7 @@ import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.SubscriptionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.compaction.TwoPhaseCompactor; import org.apache.pulsar.functions.instance.InstanceUtils; @@ -682,7 +682,7 @@ public void testAuthorization(boolean validRoleName) throws Exception { admin.namespaces().setNamespaceReplicationClusters(replNamespace, clusters); String roleName = validRoleName ? "superUser" : "invalid"; - TenantInfo propAdmin = new TenantInfo(); + TenantInfoImpl propAdmin = new TenantInfoImpl(); propAdmin.getAdminRoles().add(roleName); propAdmin.setAllowedClusters(Sets.newHashSet(Lists.newArrayList("use"))); admin.tenants().updateTenant(tenant, propAdmin); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java index ac96b1d6e270f..fcb2a44d23eae 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionTlsTest.java @@ -52,7 +52,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -126,7 +126,7 @@ void setup(Method method) throws Exception { Tenants tenants = mock(Tenants.class); when(admin.tenants()).thenReturn(tenants); Set admins = Sets.newHashSet("superUser", "admin"); - TenantInfo tenantInfo = new TenantInfo(admins, null); + TenantInfoImpl tenantInfo = new TenantInfoImpl(admins, null); when(tenants.getTenantInfo(any())).thenReturn(tenantInfo); Namespaces namespaces = mock(Namespaces.class); when(admin.namespaces()).thenReturn(namespaces); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java index cbfe42fdb936e..61270263126d1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/PartitionedTopicSchemaTest.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.api.schema.GenericRecord; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -53,13 +53,13 @@ protected void setup() throws Exception { admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Sets.newHashSet("test")); // so that clients can test short names admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); admin.topics().createPartitionedTopic(PARTITIONED_TOPIC, TOPIC_PARTITION); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java index d557d616c86bb..ee39f9b8b0167 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java @@ -66,7 +66,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.KeyValue; import org.apache.pulsar.common.schema.KeyValueEncodingType; import org.apache.pulsar.common.schema.SchemaInfo; @@ -90,7 +90,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java index 5f29eaa2ccb66..b4eb3e4622606 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java @@ -40,7 +40,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; import org.apache.pulsar.schema.Schemas; @@ -62,7 +62,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java index afeff0ea7734c..67be4ebbc717b 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaTypeCompatibilityCheckTest.java @@ -31,7 +31,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.schema.Schemas; import org.testng.annotations.AfterClass; @@ -62,7 +62,7 @@ public void setup() throws Exception { // Setup namespaces admin.clusters().createCluster(CLUSTER_NAME, new ClusterDataImpl(pulsar.getBrokerServiceUrl())); - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); tenantInfo.setAllowedClusters(Collections.singleton(CLUSTER_NAME)); admin.tenants().createTenant(PUBLIC_TENANT, tenantInfo); admin.namespaces().createNamespace(namespaceName, Sets.newHashSet(CLUSTER_NAME)); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java index 93903d144fc8d..9e22219a70e41 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java @@ -36,7 +36,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.websocket.WebSocketService; import org.apache.pulsar.websocket.service.WebSocketProxyConfiguration; @@ -88,7 +88,7 @@ public void test() throws Exception { assertFalse(auth.canLookup(TopicName.get("persistent://p1/c1/ns1/ds1"), "my-role", null)); admin.clusters().createCluster(configClusterName, new ClusterDataImpl()); - admin.tenants().createTenant("p1", new TenantInfo(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); + admin.tenants().createTenant("p1", new TenantInfoImpl(Sets.newHashSet("role1"), Sets.newHashSet("c1"))); waitForChange(); admin.namespaces().createNamespace("p1/c1/ns1"); waitForChange(); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java index 79b7a1afccab9..06cd3d6dddb2e 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Properties.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.policies.data.TenantInfoInterface; +import org.apache.pulsar.common.policies.data.TenantInfo; /** * Admin interface for properties management. @@ -67,7 +67,7 @@ public interface Properties { * @throws PulsarAdminException * Unexpected error */ - TenantInfoInterface getPropertyAdmin(String property) throws PulsarAdminException; + TenantInfo getPropertyAdmin(String property) throws PulsarAdminException; /** * Create a new property. @@ -88,7 +88,7 @@ public interface Properties { * @throws PulsarAdminException * Unexpected error */ - void createProperty(String property, TenantInfoInterface config) throws PulsarAdminException; + void createProperty(String property, TenantInfo config) throws PulsarAdminException; /** * Update the admins for a property. @@ -107,7 +107,7 @@ public interface Properties { * @throws PulsarAdminException * Unexpected error */ - void updateProperty(String property, TenantInfoInterface config) throws PulsarAdminException; + void updateProperty(String property, TenantInfo config) throws PulsarAdminException; /** * Delete an existing property. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java index 7b6baca7e7818..0c23ebcc91386 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Tenants.java @@ -24,7 +24,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException; import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException; import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException; -import org.apache.pulsar.common.policies.data.TenantInfoInterface; +import org.apache.pulsar.common.policies.data.TenantInfo; /** * Admin interface for tenants management. @@ -76,7 +76,7 @@ public interface Tenants { * @throws PulsarAdminException * Unexpected error */ - TenantInfoInterface getTenantInfo(String tenant) throws PulsarAdminException; + TenantInfo getTenantInfo(String tenant) throws PulsarAdminException; /** * Get the config of the tenant asynchronously. @@ -87,7 +87,7 @@ public interface Tenants { * Tenant name * @return the tenant configuration */ - CompletableFuture getTenantInfoAsync(String tenant); + CompletableFuture getTenantInfoAsync(String tenant); /** * Create a new tenant. @@ -108,7 +108,7 @@ public interface Tenants { * @throws PulsarAdminException * Unexpected error */ - void createTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException; + void createTenant(String tenant, TenantInfo config) throws PulsarAdminException; /** * Create a new tenant asynchronously. @@ -120,7 +120,7 @@ public interface Tenants { * @param config * Config data */ - CompletableFuture createTenantAsync(String tenant, TenantInfoInterface config); + CompletableFuture createTenantAsync(String tenant, TenantInfo config); /** * Update the admins for a tenant. @@ -139,7 +139,7 @@ public interface Tenants { * @throws PulsarAdminException * Unexpected error */ - void updateTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException; + void updateTenant(String tenant, TenantInfo config) throws PulsarAdminException; /** * Update the admins for a tenant asynchronously. @@ -151,7 +151,7 @@ public interface Tenants { * @param config * Config data */ - CompletableFuture updateTenantAsync(String tenant, TenantInfoInterface config); + CompletableFuture updateTenantAsync(String tenant, TenantInfo config); /** * Delete an existing tenant. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java similarity index 96% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java index 4cca2c9a85799..dc8625e0cb5cd 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java @@ -20,7 +20,7 @@ import java.util.Set; -public interface TenantInfoInterface { +public interface TenantInfo { Set getAdminRoles(); void setAdminRoles(Set adminRoles); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java index 2de5c4c3a38bc..015e2e0ab3e0c 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java @@ -31,8 +31,8 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.client.api.Authentication; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantInfo; -import org.apache.pulsar.common.policies.data.TenantInfoInterface; @SuppressWarnings("deprecation") public class TenantsImpl extends BaseResource implements Tenants, Properties { @@ -76,7 +76,7 @@ public void failed(Throwable throwable) { } @Override - public TenantInfoInterface getTenantInfo(String tenant) throws PulsarAdminException { + public TenantInfo getTenantInfo(String tenant) throws PulsarAdminException { try { return getTenantInfoAsync(tenant).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -90,13 +90,13 @@ public TenantInfoInterface getTenantInfo(String tenant) throws PulsarAdminExcept } @Override - public CompletableFuture getTenantInfoAsync(String tenant) { + public CompletableFuture getTenantInfoAsync(String tenant) { WebTarget path = adminTenants.path(tenant); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, - new InvocationCallback() { + new InvocationCallback() { @Override - public void completed(TenantInfo tenantInfo) { + public void completed(TenantInfoImpl tenantInfo) { future.complete(tenantInfo); } @@ -109,7 +109,7 @@ public void failed(Throwable throwable) { } @Override - public void createTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException { + public void createTenant(String tenant, TenantInfo config) throws PulsarAdminException { try { createTenantAsync(tenant, config) .get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -124,13 +124,13 @@ public void createTenant(String tenant, TenantInfoInterface config) throws Pulsa } @Override - public CompletableFuture createTenantAsync(String tenant, TenantInfoInterface config) { + public CompletableFuture createTenantAsync(String tenant, TenantInfo config) { WebTarget path = adminTenants.path(tenant); - return asyncPutRequest(path, Entity.entity((TenantInfo) config, MediaType.APPLICATION_JSON)); + return asyncPutRequest(path, Entity.entity((TenantInfoImpl) config, MediaType.APPLICATION_JSON)); } @Override - public void updateTenant(String tenant, TenantInfoInterface config) throws PulsarAdminException { + public void updateTenant(String tenant, TenantInfo config) throws PulsarAdminException { try { updateTenantAsync(tenant, config).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { @@ -144,9 +144,9 @@ public void updateTenant(String tenant, TenantInfoInterface config) throws Pulsa } @Override - public CompletableFuture updateTenantAsync(String tenant, TenantInfoInterface config) { + public CompletableFuture updateTenantAsync(String tenant, TenantInfo config) { WebTarget path = adminTenants.path(tenant); - return asyncPostRequest(path, Entity.entity((TenantInfo) config, MediaType.APPLICATION_JSON)); + return asyncPostRequest(path, Entity.entity((TenantInfoImpl) config, MediaType.APPLICATION_JSON)); } @Override @@ -192,12 +192,12 @@ public CompletableFuture deleteTenantAsync(String tenant, boolean force) { // Compat method names @Override - public void createProperty(String tenant, TenantInfoInterface config) throws PulsarAdminException { + public void createProperty(String tenant, TenantInfo config) throws PulsarAdminException { createTenant(tenant, config); } @Override - public void updateProperty(String tenant, TenantInfoInterface config) throws PulsarAdminException { + public void updateProperty(String tenant, TenantInfo config) throws PulsarAdminException { updateTenant(tenant, config); } @@ -212,7 +212,7 @@ public List getProperties() throws PulsarAdminException { } @Override - public TenantInfoInterface getPropertyAdmin(String tenant) throws PulsarAdminException { + public TenantInfo getPropertyAdmin(String tenant) throws PulsarAdminException { return getTenantInfo(tenant); } diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java index 2618fff152b1a..222473ce9d7c2 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java @@ -89,7 +89,7 @@ import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SubscribeRate; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicType; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.mockito.ArgumentMatcher; @@ -263,12 +263,12 @@ public void tenants() throws Exception { tenants.run(split("list")); verify(mockTenants).getTenants(); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use")); tenants.run(split("create my-tenant --admin-roles role1,role2 --allowed-clusters use")); verify(mockTenants).createTenant("my-tenant", tenantInfo); - tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("usw")); + tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("usw")); tenants.run(split("update my-tenant --admin-roles role1,role2 --allowed-clusters usw")); verify(mockTenants).updateTenant("my-tenant", tenantInfo); diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java index a8746479e7641..fcc6810754ebb 100644 --- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java +++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java @@ -32,7 +32,7 @@ import lombok.Cleanup; import org.apache.pulsar.broker.service.BrokerTestBase; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.awaitility.Awaitility; import org.testng.Assert; import org.testng.annotations.AfterMethod; @@ -62,7 +62,7 @@ public void testInitialization() throws InterruptedException, ExecutionException String tenantName = UUID.randomUUID().toString(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant(tenantName, tenantInfo); String topicName = String.format("persistent://%s/ns/topic-scale-ns-0/topic", tenantName); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java index 93616fa09e103..b126d741a3b83 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTenants.java @@ -29,7 +29,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; @Parameters(commandDescription = "Operations about tenants") public class CmdTenants extends CmdBase { @@ -79,7 +79,7 @@ void run() throws PulsarAdminException { allowedClusters = getAdmin().clusters().getClusters(); } - TenantInfo tenantInfo = new TenantInfo(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); getAdmin().tenants().createTenant(tenant, tenantInfo); } } @@ -109,7 +109,7 @@ void run() throws PulsarAdminException { allowedClusters = new ArrayList<>(getAdmin().tenants().getTenantInfo(tenant).getAllowedClusters()); } - TenantInfo tenantInfo = new TenantInfo(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); + TenantInfoImpl tenantInfo = new TenantInfoImpl(new HashSet<>(adminRoles), new HashSet<>(allowedClusters)); getAdmin().tenants().updateTenant(tenant, tenantInfo); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoImpl.java similarity index 93% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoImpl.java index 8471952f75e9b..fc00b86200bd0 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfo.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/TenantInfoImpl.java @@ -29,7 +29,7 @@ */ @Data @ApiModel(value = "TenantInfo", description = "Information of adminRoles and allowedClusters for tenant") -public class TenantInfo implements TenantInfoInterface { +public class TenantInfoImpl implements TenantInfo { /** * List of role enabled as admin for this tenant. */ @@ -48,12 +48,12 @@ public class TenantInfo implements TenantInfoInterface { ) private Set allowedClusters; - public TenantInfo() { + public TenantInfoImpl() { adminRoles = Sets.newHashSet(); allowedClusters = Sets.newHashSet(); } - public TenantInfo(Set adminRoles, Set allowedClusters) { + public TenantInfoImpl(Set adminRoles, Set allowedClusters) { this.adminRoles = adminRoles; this.allowedClusters = allowedClusters; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 9a90e65096020..1c1b8cf062e0a 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -54,8 +54,8 @@ import org.apache.pulsar.common.policies.data.OffloadPolicies; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.policies.data.ResourceQuotaMixIn; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantInfo; -import org.apache.pulsar.common.policies.data.TenantInfoInterface; import org.apache.pulsar.common.stats.Metrics; import org.apache.pulsar.common.stats.MetricsMixIn; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -116,7 +116,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(ClusterData.class, ClusterDataImpl.class); resolver.addMapping(FailureDomain.class, FailureDomainImpl.class); resolver.addMapping(NamespaceIsolationData.class, NamespaceIsolationDataImpl.class); - resolver.addMapping(TenantInfoInterface.class, TenantInfo.class); + resolver.addMapping(TenantInfo.class, TenantInfoImpl.class); resolver.addMapping(OffloadPolicies.class, OffloadPoliciesImpl.class); resolver.addMapping(FunctionStatsInterface.class, FunctionStats.class); resolver.addMapping(FunctionInstanceStats.class, FunctionInstanceStatsImpl.class); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java index ee6b5e7143148..d42a71e9edec0 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/policies/data/PoliciesDataTest.java @@ -60,14 +60,14 @@ public void policies() { @Test public void propertyAdmin() { - TenantInfo pa1 = new TenantInfo(); + TenantInfoImpl pa1 = new TenantInfoImpl(); pa1.setAdminRoles(Sets.newHashSet("role1", "role2")); pa1.setAllowedClusters(Sets.newHashSet("use", "usw")); - assertEquals(pa1, new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw"))); + assertEquals(pa1, new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("use", "usw"))); assertNotEquals(new Object(), pa1); - assertNotEquals(new TenantInfo(), pa1); - assertNotEquals(new TenantInfo(Sets.newHashSet("role1", "role3"), Sets.newHashSet("usc")), pa1); + assertNotEquals(new TenantInfoImpl(), pa1); + assertNotEquals(new TenantInfoImpl(Sets.newHashSet("role1", "role3"), Sets.newHashSet("usc")), pa1); assertEquals(pa1.getAdminRoles(), Lists.newArrayList("role1", "role2")); } diff --git a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java index 4317763aef705..be8abf2e54364 100644 --- a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java +++ b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java @@ -36,7 +36,7 @@ import org.apache.pulsar.broker.PulsarServerException; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.discovery.service.server.ServiceConfig; import org.apache.pulsar.metadata.api.MetadataStoreException.NotFoundException; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; @@ -138,7 +138,7 @@ protected static void checkAuthorization(DiscoveryService service, TopicName top if (!service.getAuthorizationService().canLookup(topicName, role, authenticationData)) { LOG.warn("[{}] Role {} is not allowed to lookup topic", topicName, role); // check namespace authorization - TenantInfo tenantInfo; + TenantInfoImpl tenantInfo; try { tenantInfo = service.getPulsarResources().getTenantResources() .get(path(POLICIES, topicName.getTenant())) diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java index 5abc8d9884e45..a4313b6522219 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/PulsarWorkerService.java @@ -58,7 +58,7 @@ import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.RetentionPolicies; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.path.PolicyPath; import org.apache.pulsar.common.util.SimpleTextOutputStream; import org.apache.pulsar.functions.worker.rest.api.FunctionsImpl; @@ -303,7 +303,7 @@ public void initInBroker(ServiceConfiguration brokerConfig, try { NamedEntity.checkName(property); pulsarResources.getTenantResources().create(PolicyPath.path(POLICIES, property), - new TenantInfo(Sets.newHashSet(workerConfig.getSuperUserRoles()), Sets.newHashSet(cluster))); + new TenantInfoImpl(Sets.newHashSet(workerConfig.getSuperUserRoles()), Sets.newHashSet(cluster))); LOG.info("Created property {} for function worker", property); } catch (AlreadyExistsException e) { LOG.debug("Failed to create already existing property {} for function worker service", cluster, e); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java index 5d10c66330d4f..fe73b74e2f9e2 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java @@ -62,7 +62,7 @@ import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.instance.InstanceUtils; @@ -1447,7 +1447,7 @@ public boolean isAuthorizedRole(String tenant, String namespace, String clientRo if (clientRole != null) { try { - TenantInfo tenantInfo = (TenantInfo) worker().getBrokerAdmin().tenants().getTenantInfo(tenant); + TenantInfoImpl tenantInfo = (TenantInfoImpl) worker().getBrokerAdmin().tenants().getTenantInfo(tenant); if (tenantInfo != null && worker().getAuthorizationService().isTenantAdmin(tenant, clientRole, tenantInfo, authenticationData).get()) { return true; } diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java index b1651f32469af..1ec4cc8991f6a 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.instance.InstanceConfig; import org.apache.pulsar.functions.instance.InstanceUtils; @@ -114,7 +114,7 @@ public String process(String input, Context context) { private PulsarAdmin mockedPulsarAdmin; private Tenants mockedTenants; private Namespaces mockedNamespaces; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -130,7 +130,7 @@ public String process(String input, Context context) { public void setup() throws Exception { this.mockedManager = mock(FunctionMetaDataManager.class); this.mockedFunctionRunTimeManager = mock(FunctionRuntimeManager.class); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedRuntimeFactory = mock(RuntimeFactory.class); this.mockedInputStream = mock(InputStream.class); this.mockedNamespace = mock(Namespace.class); @@ -247,7 +247,7 @@ public void testMetricsEmpty() { @Test public void testIsAuthorizedRole() throws PulsarAdminException, InterruptedException, ExecutionException { - TenantInfo tenantInfo = new TenantInfo(); + TenantInfoImpl tenantInfo = new TenantInfoImpl(); AuthenticationDataSource authenticationDataSource = mock(AuthenticationDataSource.class); FunctionsImpl functionImpl = spy(new FunctionsImpl(() -> mockedWorkerService)); AuthorizationService authorizationService = mock(AuthorizationService.class); @@ -310,7 +310,7 @@ public void testIsAuthorizedRole() throws PulsarAdminException, InterruptedExcep functionImpl = spy(new FunctionsImpl(() -> mockedWorkerService)); doReturn(true).when(functionImpl).allowFunctionOps(any(), any(), any()); tenants = mock(Tenants.class); - when(tenants.getTenantInfo(any())).thenReturn(new TenantInfo()); + when(tenants.getTenantInfo(any())).thenReturn(new TenantInfoImpl()); admin = mock(PulsarAdmin.class); when(admin.tenants()).thenReturn(tenants); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java index 29fb11c618fba..f37d5df1fe9a0 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java @@ -62,7 +62,7 @@ import org.apache.pulsar.client.admin.Namespaces; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.api.Function; @@ -135,7 +135,7 @@ public String process(String input, Context context) { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -152,7 +152,7 @@ public String process(String input, Context context) { public void setup() throws Exception { this.mockedManager = mock(FunctionMetaDataManager.class); this.mockedFunctionRunTimeManager = mock(FunctionRuntimeManager.class); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedRuntimeFactory = mock(RuntimeFactory.class); this.mockedInputStream = mock(InputStream.class); this.mockedNamespace = mock(Namespace.class); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java index 27694db734af0..d2e7aca1cfa87 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionApiV3ResourceTest.java @@ -60,7 +60,7 @@ import org.apache.pulsar.client.admin.Namespaces; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.Context; @@ -142,7 +142,7 @@ public void accept(String s) { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -160,7 +160,7 @@ public void accept(String s) { public void setup() throws Exception { this.mockedManager = mock(FunctionMetaDataManager.class); this.mockedFunctionRunTimeManager = mock(FunctionRuntimeManager.class); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedRuntimeFactory = mock(RuntimeFactory.class); this.mockedInputStream = mock(InputStream.class); this.mockedNamespace = mock(Namespace.class); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java index 97b2d9647858a..b5935781ae3c6 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SinkApiV3ResourceTest.java @@ -60,7 +60,7 @@ import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -124,7 +124,7 @@ public IObjectFactory getObjectFactory() { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -171,7 +171,7 @@ public void setup() throws Exception { this.mockedNamespace = mock(Namespace.class); this.mockedFormData = mock(FormDataContentDisposition.class); when(mockedFormData.getFileName()).thenReturn("test"); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedPulsarAdmin = mock(PulsarAdmin.class); this.mockedTenants = mock(Tenants.class); this.mockedNamespaces = mock(Namespaces.class); diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java index 5bd07da58baa0..b030ed8036b1d 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v3/SourceApiV3ResourceTest.java @@ -59,7 +59,7 @@ import org.apache.pulsar.common.functions.Utils; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.nar.NarClassLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.ClassLoaderUtils; import org.apache.pulsar.common.util.RestException; import org.apache.pulsar.functions.api.utils.IdentityFunction; @@ -122,7 +122,7 @@ public IObjectFactory getObjectFactory() { private Tenants mockedTenants; private Namespaces mockedNamespaces; private Functions mockedFunctions; - private TenantInfo mockedTenantInfo; + private TenantInfoImpl mockedTenantInfo; private List namespaceList = new LinkedList<>(); private FunctionMetaDataManager mockedManager; private FunctionRuntimeManager mockedFunctionRunTimeManager; @@ -160,7 +160,7 @@ public void setup() throws Exception { this.mockedNamespace = mock(Namespace.class); this.mockedFormData = mock(FormDataContentDisposition.class); when(mockedFormData.getFileName()).thenReturn("test"); - this.mockedTenantInfo = mock(TenantInfo.class); + this.mockedTenantInfo = mock(TenantInfoImpl.class); this.mockedPulsarAdmin = mock(PulsarAdmin.class); this.mockedTenants = mock(Tenants.class); this.mockedNamespaces = mock(Namespaces.class); diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java index 8fcc3e06d4e59..ae8e13405bf01 100644 --- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java +++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java @@ -36,7 +36,7 @@ import org.apache.pulsar.broker.resources.PulsarResources; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.partition.PartitionedTopicMetadata; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.zookeeper.KeeperException; import org.slf4j.Logger; @@ -132,7 +132,7 @@ protected static void checkAuthorization(ProxyService service, TopicName topicNa if (!service.getAuthorizationService().canLookup(topicName, role, authenticationData)) { LOG.warn("[{}] Role {} is not allowed to lookup topic", topicName, role); // check namespace authorization - TenantInfo tenantInfo; + TenantInfoImpl tenantInfo; try { tenantInfo = service.getConfigurationCacheService().propertiesCache() .get(path(POLICIES, topicName.getTenant())) diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java index fd79ded3adecb..b21c76a606163 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AuthedAdminProxyHandlerTest.java @@ -35,7 +35,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.pulsar.policies.data.loadbalancer.LoadReport; @@ -160,7 +160,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { brokerAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); brokerAdmin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of(configClusterName))); brokerAdmin.namespaces().createNamespace("tenant1/ns1"); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), brokerAdmin.namespaces().getNamespaces("tenant1")); @@ -171,7 +171,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } brokerAdmin.tenants().updateTenant("tenant1", - new TenantInfo(ImmutableSet.of("proxy"), + new TenantInfoImpl(ImmutableSet.of("proxy"), ImmutableSet.of(configClusterName))); try { user1Admin.namespaces().getNamespaces("tenant1"); @@ -180,7 +180,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } brokerAdmin.tenants().updateTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1", "proxy"), + new TenantInfoImpl(ImmutableSet.of("user1", "proxy"), ImmutableSet.of(configClusterName))); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), user1Admin.namespaces().getNamespaces("tenant1")); } diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java index 14bdf3286c6fb..40f74641fbbde 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java @@ -43,7 +43,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.slf4j.Logger; @@ -170,7 +170,7 @@ public void testTlsSyncProducerAndConsumer() throws Exception { admin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString(), brokerUrlTls.toString(), pulsar.getBrokerServiceUrl(), pulsar.getBrokerServiceUrlTls())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test")); Consumer consumer = proxyClient.newConsumer().topic("persistent://my-property/my-ns/my-topic1") diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java index ec5d45bd1cb77..af76bfaeb2bb4 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithAuth.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.testng.Assert; @@ -176,7 +176,7 @@ public void testPartitions() throws Exception { @Cleanup PulsarClient client = internalSetUpForClient(true, proxyService.getServiceUrlTls()); String topicName = "persistent://sample/test/local/partitioned-topic" + System.currentTimeMillis(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); admin.topics().createPartitionedTopic(topicName, 2); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java index 3e6f7ac5296a0..9b0e9b427e56c 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyKeyStoreTlsTestWithoutAuth.java @@ -38,7 +38,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationKeyStoreTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.testng.Assert; @@ -161,7 +161,7 @@ public void testPartitions() throws Exception { @Cleanup PulsarClient client = internalSetUpForClient(true, proxyService.getServiceUrlTls()); String topicName = "persistent://sample/test/local/partitioned-topic" + System.currentTimeMillis(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); admin.topics().createPartitionedTopic(topicName, 2); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java index 91e8c45eed61b..905ca2066c738 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyParserTest.java @@ -48,7 +48,7 @@ import org.apache.pulsar.common.api.proto.CommandActiveConsumerChange; import org.apache.pulsar.common.api.proto.ProtocolVersion; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.netty.EventLoopUtil; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; @@ -140,7 +140,7 @@ public void testProducerConsumer() throws Exception { @Test public void testPartitions() throws Exception { - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); @Cleanup PulsarClient client = PulsarClient.builder().serviceUrl(proxyService.getServiceUrl()) diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java index 36be34027351b..92f6a63d0f185 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java @@ -54,7 +54,7 @@ import org.apache.pulsar.common.api.proto.ProtocolVersion; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.util.netty.EventLoopUtil; import org.apache.pulsar.metadata.impl.ZKMetadataStore; @@ -159,7 +159,7 @@ public void testProducerConsumer() throws Exception { @Test public void testPartitions() throws Exception { - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); @Cleanup PulsarClient client = PulsarClient.builder().serviceUrl(proxyService.getServiceUrl()) diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java index 686bb95c9e1f3..59beb94712c7d 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java @@ -34,7 +34,7 @@ import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.mockito.Mockito; import org.testng.annotations.AfterClass; @@ -100,7 +100,7 @@ public void testPartitions() throws Exception { PulsarClient client = PulsarClient.builder() .serviceUrl(proxyService.getServiceUrlTls()) .allowTlsInsecureConnection(false).tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).build(); - TenantInfo tenantInfo = createDefaultTenantInfo(); + TenantInfoImpl tenantInfo = createDefaultTenantInfo(); admin.tenants().createTenant("sample", tenantInfo); admin.topics().createPartitionedTopic("persistent://sample/test/local/partitioned-topic", 2); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java index e2a3aa66871e6..eaba9c088d0e8 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationNegTest.java @@ -44,7 +44,7 @@ import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -171,7 +171,7 @@ public void testProxyAuthorization() throws Exception { admin.clusters().createCluster("proxy-authorization-neg", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization-neg"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization-neg"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", Sets.newHashSet(AuthAction.produce)); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java index 93e3bfcca6c41..4a62b99c51fe1 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithAuthorizationTest.java @@ -46,7 +46,7 @@ import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -243,7 +243,7 @@ public void testProxyAuthorization() throws Exception { admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", @@ -297,7 +297,7 @@ public void testTlsHostVerificationProxyToClient(boolean hostnameVerificationEna admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", @@ -349,7 +349,7 @@ public void testTlsHostVerificationProxyToBroker(boolean hostnameVerificationEna admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", @@ -386,7 +386,7 @@ public void tlsCiphersAndProtocols(Set tlsCiphers, Set tlsProtoc admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, "Proxy", diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java index 16d33d23ce5ba..788e914476679 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithJwtAuthorizationTest.java @@ -37,7 +37,7 @@ import org.apache.pulsar.common.policies.data.AuthAction; import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.SubscriptionAuthMode; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -145,7 +145,7 @@ public void testProxyAuthorization() throws Exception { admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); Consumer consumer; @@ -226,7 +226,7 @@ public void testUpdatePartitionNumAndReconnect() throws Exception { admin.clusters().createCluster(clusterName, new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet(), Sets.newHashSet(clusterName))); + new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(clusterName))); admin.namespaces().createNamespace(namespaceName); admin.topics().createPartitionedTopic(topicName, 2); admin.topics().grantPermission(topicName, CLIENT_ROLE, @@ -318,7 +318,7 @@ public void testProxyAuthorizationWithPrefixSubscriptionAuthMode() throws Except admin.clusters().createCluster("proxy-authorization", new ClusterDataImpl(brokerUrl.toString())); admin.tenants().createTenant("my-property", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("proxy-authorization"))); admin.namespaces().createNamespace(namespaceName); admin.namespaces().grantPermissionOnNamespace(namespaceName, CLIENT_ROLE, Sets.newHashSet(AuthAction.produce, AuthAction.consume)); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java index 1988016a9dc05..774a5dbfa7e48 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyWithoutServiceDiscoveryTest.java @@ -42,7 +42,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -163,7 +163,7 @@ public void testDiscoveryService() throws Exception { admin.clusters().createCluster("without-service-discovery", new ClusterDataImpl(brokerUrl.toString())); - admin.tenants().createTenant("my-property", new TenantInfo(Sets.newHashSet("appid1", "appid2"), + admin.tenants().createTenant("my-property", new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("without-service-discovery"))); admin.namespaces().createNamespace("my-property/without-service-discovery/my-ns"); diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java index 6d1e0ac157614..def1bf63dc5c9 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/SuperUserAuthedAdminProxyHandlerTest.java @@ -35,7 +35,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.impl.ZKMetadataStore; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.apache.pulsar.policies.data.loadbalancer.LoadReport; @@ -136,7 +136,7 @@ public void testAuthenticatedProxyAsAdmin() throws Exception { try (PulsarAdmin adminAdmin = getAdminClient("admin")) { adminAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); adminAdmin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("randoUser"), + new TenantInfoImpl(ImmutableSet.of("randoUser"), ImmutableSet.of(configClusterName))); Assert.assertEquals(ImmutableSet.of("tenant1"), adminAdmin.tenants().getTenants()); } @@ -154,7 +154,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { } adminAdmin.clusters().createCluster(configClusterName, new ClusterDataImpl(brokerUrl.toString())); adminAdmin.tenants().createTenant("tenant1", - new TenantInfo(ImmutableSet.of("unknownUser"), + new TenantInfoImpl(ImmutableSet.of("unknownUser"), ImmutableSet.of(configClusterName))); adminAdmin.namespaces().createNamespace("tenant1/ns1"); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), adminAdmin.namespaces().getNamespaces("tenant1")); @@ -165,7 +165,7 @@ public void testAuthenticatedProxyAsNonAdmin() throws Exception { // expected } adminAdmin.tenants().updateTenant("tenant1", - new TenantInfo(ImmutableSet.of("user1"), + new TenantInfoImpl(ImmutableSet.of("user1"), ImmutableSet.of(configClusterName))); Assert.assertEquals(ImmutableSet.of("tenant1/ns1"), user1Admin.namespaces().getNamespaces("tenant1")); } diff --git a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java index 7547e0d10f7f2..c6798b1dc3918 100644 --- a/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java +++ b/pulsar-sql/presto-pulsar/src/test/java/org/apache/pulsar/sql/presto/TestCacheSizeAllocator.java @@ -40,7 +40,7 @@ import org.apache.pulsar.common.api.raw.RawMessageImpl; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.jctools.queues.SpscArrayQueue; import org.testng.Assert; import org.testng.annotations.AfterClass; @@ -65,7 +65,7 @@ protected void setup() throws Exception { // so that clients can test short names admin.tenants().createTenant("public", - new TenantInfo(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); + new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test"))); admin.namespaces().createNamespace("public/default"); admin.namespaces().setNamespaceReplicationClusters("public/default", Sets.newHashSet("test")); } diff --git a/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java b/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java index d6b0d120685fc..698ba19627aa2 100644 --- a/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java +++ b/pulsar-testclient/src/test/java/org/apache/pulsar/testclient/PerformanceProducerTest.java @@ -25,7 +25,7 @@ import org.apache.pulsar.client.api.Message; import org.apache.pulsar.client.api.SubscriptionType; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -57,7 +57,7 @@ protected void setup() throws Exception { }); // Setup namespaces admin.clusters().createCluster("test", new ClusterDataImpl(pulsar.getWebServiceAddress())); - TenantInfo tenantInfo = new TenantInfo(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); + TenantInfoImpl tenantInfo = new TenantInfoImpl(Sets.newHashSet("role1", "role2"), Sets.newHashSet("test")); admin.tenants().createTenant(testTenant, tenantInfo); admin.namespaces().createNamespace(myNamespace, Sets.newHashSet("test")); } diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java index 8b843a268088a..462437f6f2031 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/auth/token/PulsarTokenAuthenticationBaseSuite.java @@ -37,7 +37,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.auth.AuthenticationToken; import org.apache.pulsar.common.policies.data.AuthAction; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.tests.integration.containers.BrokerContainer; import org.apache.pulsar.tests.integration.containers.ProxyContainer; import org.apache.pulsar.tests.integration.containers.PulsarContainer; @@ -150,7 +150,7 @@ public void testPublishWithTokenAuth() throws Exception { try { admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); } catch (Exception e) { @@ -220,7 +220,7 @@ public void testProxyRedirectWithTokenAuth() throws Exception { try { admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); } catch (Exception e) { @@ -273,7 +273,7 @@ public void testExpiringToken(boolean shouldRefreshToken) throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); @@ -338,7 +338,7 @@ public void testExpiringTokenWithRefreshAndProducerRestart() throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.singleton(REGULAR_USER_ROLE), + new TenantInfoImpl(Collections.singleton(REGULAR_USER_ROLE), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java index f965961cd5e30..a60ecc20ef304 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/ClusterMetadataTearDownTest.java @@ -39,7 +39,6 @@ import org.apache.bookkeeper.meta.MetadataBookieDriver; import org.apache.bookkeeper.meta.MetadataDrivers; import org.apache.bookkeeper.stats.NullStatsLogger; -import org.apache.bookkeeper.util.ZkUtils; import org.apache.pulsar.PulsarClusterMetadataTeardown; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.api.Consumer; @@ -49,7 +48,7 @@ import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.api.SubscriptionInitialPosition; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.metadata.api.MetadataStore; import org.apache.pulsar.metadata.api.MetadataStoreConfig; import org.apache.pulsar.metadata.api.MetadataStoreFactory; @@ -57,7 +56,6 @@ import org.apache.pulsar.tests.integration.containers.ChaosContainer; import org.apache.pulsar.tests.integration.topologies.PulsarCluster; import org.apache.pulsar.tests.integration.topologies.PulsarClusterSpec; -import org.apache.zookeeper.ZooKeeper; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -140,7 +138,7 @@ public void testDeleteCluster() throws Exception { final String namespace = tenant + "/my-ns"; admin.tenants().createTenant(tenant, - new TenantInfo(new HashSet<>(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(new HashSet<>(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace); String[] topics = { "topic-1", "topic-2", namespace + "/topic-1" }; diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java index 2dd59242e8450..56dbe38a27fc8 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/io/sources/debezium/PulsarDebeziumSourcesTest.java @@ -23,7 +23,7 @@ import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.common.naming.TopicName; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.tests.integration.containers.DebeziumMongoDbContainer; import org.apache.pulsar.tests.integration.containers.DebeziumMySQLContainer; @@ -191,7 +191,7 @@ private void testDebeziumMongoDbConnect(String converterClassName, boolean jsonW protected void initNamespace(PulsarAdmin admin) { log.info("[initNamespace] start."); try { - admin.tenants().createTenant("debezium", new TenantInfo(Sets.newHashSet(), + admin.tenants().createTenant("debezium", new TenantInfoImpl(Sets.newHashSet(), Sets.newHashSet(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace("debezium/mysql-json"); admin.namespaces().createNamespace("debezium/mysql-avro"); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java index 4970aed5f6402..38a5bb67348ee 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxy.java @@ -26,7 +26,7 @@ import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.Schema; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.tests.integration.suites.PulsarTestSuite; import org.apache.pulsar.tests.integration.topologies.PulsarClusterSpec; @@ -58,7 +58,7 @@ private void testProxy(String serviceUrl, String httpServiceUrl) throws Exceptio .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); @@ -110,7 +110,7 @@ public void testProxyRequestBodyRedirect() throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java index ca4cf51fc7878..0ea9c3c6e3cbb 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/proxy/TestProxyWithWebSocket.java @@ -20,7 +20,7 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.tests.integration.containers.CSContainer; import org.apache.pulsar.tests.integration.containers.ProxyContainer; import org.apache.pulsar.tests.integration.suites.PulsarTestSuite; @@ -43,7 +43,6 @@ import java.util.Queue; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; import static org.apache.pulsar.tests.integration.containers.PulsarContainer.CS_PORT; @@ -75,7 +74,7 @@ public void testWebSocket() throws Exception { .build(); admin.tenants().createTenant(tenant, - new TenantInfo(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); + new TenantInfoImpl(Collections.emptySet(), Collections.singleton(pulsarCluster.getClusterName()))); admin.namespaces().createNamespace(namespace, Collections.singleton(pulsarCluster.getClusterName())); diff --git a/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java index a960951e7f112..b8bb95c438e2e 100644 --- a/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java +++ b/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java @@ -20,7 +20,6 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.*; import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.client.impl.TopicMessageImpl; @@ -30,7 +29,7 @@ import org.apache.pulsar.common.api.proto.SingleMessageMetadata; import org.apache.pulsar.common.compression.CompressionCodec; import org.apache.pulsar.common.compression.CompressionCodecProvider; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.shade.io.netty.buffer.ByteBuf; import org.apache.pulsar.shade.io.netty.buffer.Unpooled; @@ -44,7 +43,6 @@ import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; @@ -83,7 +81,7 @@ public void setup() throws Exception { @Cleanup PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarContainer.getPulsarAdminUrl()).build(); admin.tenants().createTenant("my-property", - new TenantInfo(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); + new TenantInfoImpl(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Collections.singleton("standalone")); } diff --git a/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java index 92c6bfd1f9f1d..5153c56946529 100644 --- a/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java +++ b/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java @@ -20,18 +20,16 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.*; import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.client.impl.TopicMessageImpl; import org.apache.pulsar.client.impl.crypto.MessageCryptoBc; import org.apache.pulsar.common.api.EncryptionContext; -import org.apache.pulsar.common.api.proto.EncryptionKeys; import org.apache.pulsar.common.api.proto.MessageMetadata; import org.apache.pulsar.common.api.proto.SingleMessageMetadata; import org.apache.pulsar.common.compression.CompressionCodec; import org.apache.pulsar.common.compression.CompressionCodecProvider; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.shade.io.netty.buffer.ByteBuf; import org.apache.pulsar.shade.io.netty.buffer.Unpooled; @@ -45,7 +43,6 @@ import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; @@ -78,7 +75,7 @@ public void setup() throws Exception { @Cleanup PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarContainer.getPulsarAdminUrl()).build(); admin.tenants().createTenant("my-property", - new TenantInfo(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); + new TenantInfoImpl(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Collections.singleton("standalone")); } diff --git a/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java index f1a77cd1df55c..51ce5f3e40edf 100644 --- a/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java +++ b/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java @@ -20,7 +20,6 @@ import lombok.Cleanup; import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.*; import org.apache.pulsar.client.impl.MessageImpl; import org.apache.pulsar.client.impl.TopicMessageImpl; @@ -30,7 +29,7 @@ import org.apache.pulsar.common.api.proto.SingleMessageMetadata; import org.apache.pulsar.common.compression.CompressionCodec; import org.apache.pulsar.common.compression.CompressionCodecProvider; -import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.shade.io.netty.buffer.ByteBuf; import org.apache.pulsar.shade.io.netty.buffer.Unpooled; @@ -44,7 +43,6 @@ import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; @@ -81,7 +79,7 @@ public void setup() throws Exception { PulsarAdmin admin = PulsarAdmin.builder().serviceHttpUrl(pulsarContainer.getPulsarAdminUrl()).build(); admin.tenants().createTenant("my-property", - new TenantInfo(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); + new TenantInfoImpl(new HashSet<>(Arrays.asList("appid1", "appid2")), Collections.singleton("standalone"))); admin.namespaces().createNamespace("my-property/my-ns"); admin.namespaces().setNamespaceReplicationClusters("my-property/my-ns", Collections.singleton("standalone")); admin.close(); From bde8f46c251e40fcc5e2ff4a320083047fc5cac9 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:43:10 +0800 Subject: [PATCH 50/51] FunctionStats --- .../pulsar/broker/admin/impl/FunctionsBase.java | 6 +++--- .../worker/PulsarFunctionPublishTest.java | 6 +++--- .../apache/pulsar/io/PulsarFunctionE2ETest.java | 8 ++++---- .../apache/pulsar/client/admin/Functions.java | 6 +++--- ...ionStatsInterface.java => FunctionStats.java} | 4 ++-- .../client/admin/internal/FunctionsImpl.java | 12 ++++++------ ...FunctionStats.java => FunctionStatsImpl.java} | 8 ++++---- .../pulsar/common/util/ObjectMapperFactory.java | 4 ++-- .../functions/worker/FunctionRuntimeManager.java | 6 +++--- .../functions/worker/rest/api/ComponentImpl.java | 16 ++++++++-------- .../rest/api/v3/FunctionsApiV3Resource.java | 10 +++++----- .../functions/worker/service/api/Component.java | 14 +++++++------- .../worker/rest/api/FunctionsImplTest.java | 4 ++-- .../functions/PulsarFunctionsTest.java | 9 ++++----- 14 files changed, 56 insertions(+), 57 deletions(-) rename pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/{FunctionStatsInterface.java => FunctionStats.java} (95%) rename pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/{FunctionStats.java => FunctionStatsImpl.java} (96%) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java index 97721f2b9434a..bb19dae45e76b 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/FunctionsBase.java @@ -45,7 +45,7 @@ import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.functions.worker.service.api.Functions; @@ -404,7 +404,7 @@ public FunctionStatus getFunctionStatus( @GET @ApiOperation( value = "Displays the stats of a Pulsar Function", - response = FunctionStats.class + response = FunctionStatsImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -414,7 +414,7 @@ public FunctionStatus getFunctionStatus( }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/stats") - public FunctionStats getFunctionStats( + public FunctionStatsImpl getFunctionStats( @ApiParam(value = "The tenant of a Pulsar Function") final @PathParam("tenant") String tenant, @ApiParam(value = "The namespace of a Pulsar Function") diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java index 887534cae4606..15805f9beb75c 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/functions/worker/PulsarFunctionPublishTest.java @@ -64,7 +64,7 @@ import org.apache.pulsar.client.impl.auth.AuthenticationTls; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.policies.data.ClusterDataImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.FutureUtil; @@ -333,7 +333,7 @@ public void testPulsarFunctionState() throws Exception { retryStrategically((test) -> { try { - FunctionStats functionStat = (FunctionStats) + FunctionStatsImpl functionStat = (FunctionStatsImpl) admin.functions().getFunctionStats(tenant, namespacePortion, functionName); return functionStat.getProcessedSuccessfullyTotal() == 5; } catch (PulsarAdminException e) { @@ -471,7 +471,7 @@ public void testPulsarFunctionBKCleanup() throws Exception { retryStrategically((test) -> { try { - FunctionStats functionStat = (FunctionStats) + FunctionStatsImpl functionStat = (FunctionStatsImpl) admin.functions().getFunctionStats(tenant, namespacePortion, functionName); return functionStat.getProcessedSuccessfullyTotal() == 5; } catch (PulsarAdminException e) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java index b9708bec19312..ebd034efbc1d3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java @@ -53,7 +53,7 @@ import org.apache.pulsar.common.functions.ConsumerConfig; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.SubscriptionStats; import org.apache.pulsar.common.policies.data.TenantInfoImpl; @@ -291,9 +291,9 @@ public void testPulsarFunctionStats() throws Exception { // validate stats are empty FunctionRuntimeManager functionRuntimeManager = functionsWorkerService.getFunctionRuntimeManager(); - FunctionStats functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, + FunctionStatsImpl functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, functionName, null); - FunctionStats functionStatsFromAdmin = (FunctionStats) admin.functions().getFunctionStats(tenant, + FunctionStatsImpl functionStatsFromAdmin = (FunctionStatsImpl) admin.functions().getFunctionStats(tenant, namespacePortion, functionName); assertEquals(functionStats, functionStatsFromAdmin); @@ -443,7 +443,7 @@ public void testPulsarFunctionStats() throws Exception { functionStats = functionRuntimeManager.getFunctionStats(tenant, namespacePortion, functionName, null); - functionStatsFromAdmin = (FunctionStats) admin.functions().getFunctionStats(tenant, namespacePortion, + functionStatsFromAdmin = (FunctionStatsImpl) admin.functions().getFunctionStats(tenant, namespacePortion, functionName); assertEquals(functionStats, functionStatsFromAdmin); diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java index c402e2b28f706..82c47e5d97ac2 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Functions.java @@ -29,7 +29,7 @@ import org.apache.pulsar.common.functions.UpdateOptions; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; -import org.apache.pulsar.common.policies.data.FunctionStatsInterface; +import org.apache.pulsar.common.policies.data.FunctionStats; import org.apache.pulsar.common.policies.data.FunctionStatus; /** @@ -444,7 +444,7 @@ CompletableFuture getFunctionStatsAsync( * @throws PulsarAdminException */ - FunctionStatsInterface getFunctionStats(String tenant, String namespace, String function) + FunctionStats getFunctionStats(String tenant, String namespace, String function) throws PulsarAdminException; /** @@ -459,7 +459,7 @@ FunctionStatsInterface getFunctionStats(String tenant, String namespace, String * @return */ - CompletableFuture getFunctionStatsAsync(String tenant, String namespace, String function); + CompletableFuture getFunctionStatsAsync(String tenant, String namespace, String function); /** * Restart function instance. diff --git a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java similarity index 95% rename from pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java rename to pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java index 831e980ce1034..bf07d53e02600 100644 --- a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsInterface.java +++ b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java @@ -20,10 +20,10 @@ import java.util.List; -public interface FunctionStatsInterface { +public interface FunctionStats { void addInstance(FunctionInstanceStats functionInstanceStats); - FunctionStatsInterface calculateOverall(); + FunctionStats calculateOverall(); long getReceivedTotal(); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java index 110394fdca3bb..ede01ae343d86 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java @@ -52,8 +52,8 @@ import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.asynchttpclient.AsyncHandler; @@ -283,7 +283,7 @@ public void failed(Throwable throwable) { } @Override - public FunctionStatsInterface getFunctionStats(String tenant, String namespace, String function) + public FunctionStats getFunctionStats(String tenant, String namespace, String function) throws PulsarAdminException { try { return getFunctionStatsAsync(tenant, namespace, function).get(this.readTimeoutMs, TimeUnit.MILLISECONDS); @@ -299,10 +299,10 @@ public FunctionStatsInterface getFunctionStats(String tenant, String namespace, } @Override - public CompletableFuture getFunctionStatsAsync(String tenant, - String namespace, String function) { + public CompletableFuture getFunctionStatsAsync(String tenant, + String namespace, String function) { WebTarget path = functions.path(tenant).path(namespace).path(function).path("stats"); - final CompletableFuture future = new CompletableFuture<>(); + final CompletableFuture future = new CompletableFuture<>(); asyncGetRequest(path, new InvocationCallback() { @Override @@ -310,7 +310,7 @@ public void completed(Response response) { if (!response.getStatusInfo().equals(Response.Status.OK)) { future.completeExceptionally(getApiException(response)); } else { - future.complete(response.readEntity(FunctionStats.class)); + future.complete(response.readEntity(FunctionStatsImpl.class)); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsImpl.java similarity index 96% rename from pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java rename to pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsImpl.java index 071d4143d0637..099622d76c632 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStats.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/FunctionStatsImpl.java @@ -35,7 +35,7 @@ @JsonInclude(JsonInclude.Include.ALWAYS) @JsonPropertyOrder({"receivedTotal", "processedSuccessfullyTotal", "systemExceptionsTotal", "userExceptionsTotal", "avgProcessLatency", "1min", "lastInvocation", "instances"}) -public class FunctionStats implements FunctionStatsInterface { +public class FunctionStatsImpl implements FunctionStats { /** * Overall total number of records function received from source. @@ -79,7 +79,7 @@ public void addInstance(FunctionInstanceStats functionInstanceStats) { } @Override - public FunctionStats calculateOverall() { + public FunctionStatsImpl calculateOverall() { int nonNullInstances = 0; int nonNullInstancesOneMin = 0; @@ -138,7 +138,7 @@ public FunctionStats calculateOverall() { return this; } - public static FunctionStats decode (String json) throws IOException { - return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStats.class); + public static FunctionStatsImpl decode (String json) throws IOException { + return ObjectMapperFactory.getThreadLocal().readValue(json, FunctionStatsImpl.class); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java index 1c1b8cf062e0a..c37a0b18c2ea0 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/ObjectMapperFactory.java @@ -46,8 +46,8 @@ import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataBase; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; import org.apache.pulsar.common.policies.data.FunctionInstanceStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStats; -import org.apache.pulsar.common.policies.data.FunctionStatsInterface; import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; @@ -118,7 +118,7 @@ private static void setAnnotationsModule(ObjectMapper mapper) { resolver.addMapping(NamespaceIsolationData.class, NamespaceIsolationDataImpl.class); resolver.addMapping(TenantInfo.class, TenantInfoImpl.class); resolver.addMapping(OffloadPolicies.class, OffloadPoliciesImpl.class); - resolver.addMapping(FunctionStatsInterface.class, FunctionStats.class); + resolver.addMapping(FunctionStats.class, FunctionStatsImpl.class); resolver.addMapping(FunctionInstanceStats.class, FunctionInstanceStatsImpl.class); resolver.addMapping(FunctionInstanceStatsData.class, FunctionInstanceStatsDataImpl.class); resolver.addMapping(FunctionInstanceStatsDataBase.class, FunctionInstanceStatsDataBaseImpl.class); diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java index c380ad79ba97d..5b896f936f846 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java @@ -53,7 +53,7 @@ import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.apache.pulsar.common.util.Reflections; import org.apache.pulsar.functions.auth.FunctionAuthProvider; @@ -593,10 +593,10 @@ public FunctionInstanceStatsDataImpl getFunctionInstanceStats(String tenant, Str * @return a list of function statuses * @throws PulsarAdminException */ - public FunctionStats getFunctionStats(String tenant, String namespace, String functionName, URI uri) throws PulsarAdminException { + public FunctionStatsImpl getFunctionStats(String tenant, String namespace, String functionName, URI uri) throws PulsarAdminException { Collection assignments = this.findFunctionAssignments(tenant, namespace, functionName); - FunctionStats functionStats = new FunctionStats(); + FunctionStatsImpl functionStats = new FunctionStatsImpl(); if (assignments.isEmpty()) { return functionStats; } diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java index fe73b74e2f9e2..907c975a4e5b4 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java @@ -61,7 +61,7 @@ import org.apache.pulsar.common.naming.NamespaceName; import org.apache.pulsar.common.naming.TopicName; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.util.Codec; import org.apache.pulsar.common.util.RestException; @@ -723,12 +723,12 @@ public void restartFunctionInstances(final String tenant, } } - public FunctionStats getFunctionStats(final String tenant, - final String namespace, - final String componentName, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps) { + public FunctionStatsImpl getFunctionStats(final String tenant, + final String namespace, + final String componentName, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps) { if (!isWorkerServiceAvailable()) { throwUnavailableException(); } @@ -765,7 +765,7 @@ public FunctionStats getFunctionStats(final String tenant, } FunctionRuntimeManager functionRuntimeManager = worker().getFunctionRuntimeManager(); - FunctionStats functionStats; + FunctionStatsImpl functionStats; try { functionStats = functionRuntimeManager.getFunctionStats(tenant, namespace, componentName, uri); } catch (WebApplicationException we) { diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java index 92dbee3a50315..5044eb6a893a4 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/v3/FunctionsApiV3Resource.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.functions.worker.WorkerService; import org.apache.pulsar.functions.worker.rest.FunctionApiResource; @@ -164,7 +164,7 @@ public FunctionStatus getFunctionStatus( @GET @ApiOperation( value = "Displays the stats of a Pulsar Function", - response = FunctionStats.class + response = FunctionStatsImpl.class ) @ApiResponses(value = { @ApiResponse(code = 307, message = "Current broker doesn't serve the namespace of this function"), @@ -174,9 +174,9 @@ public FunctionStatus getFunctionStatus( }) @Produces(MediaType.APPLICATION_JSON) @Path("/{tenant}/{namespace}/{functionName}/stats") - public FunctionStats getFunctionStats(final @PathParam("tenant") String tenant, - final @PathParam("namespace") String namespace, - final @PathParam("functionName") String functionName) throws IOException { + public FunctionStatsImpl getFunctionStats(final @PathParam("tenant") String tenant, + final @PathParam("namespace") String namespace, + final @PathParam("functionName") String functionName) throws IOException { return functions().getFunctionStats(tenant, namespace, functionName, uri.getRequestUri(), clientAppId(), clientAuthData()); } diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java index fa3f5495ad8c5..5f0c1a9670396 100644 --- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java +++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/service/api/Component.java @@ -28,7 +28,7 @@ import org.apache.pulsar.common.functions.FunctionState; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.functions.worker.WorkerService; /** @@ -93,12 +93,12 @@ void restartFunctionInstances(final String tenant, final String clientRole, final AuthenticationDataSource clientAuthenticationDataHttps); - FunctionStats getFunctionStats(final String tenant, - final String namespace, - final String componentName, - final URI uri, - final String clientRole, - final AuthenticationDataSource clientAuthenticationDataHttps); + FunctionStatsImpl getFunctionStats(final String tenant, + final String namespace, + final String componentName, + final URI uri, + final String clientRole, + final AuthenticationDataSource clientAuthenticationDataHttps); FunctionInstanceStatsDataImpl getFunctionsInstanceStats(final String tenant, final String namespace, diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java index 1ec4cc8991f6a..3ea7fd3f8ffd6 100644 --- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java +++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImplTest.java @@ -27,7 +27,7 @@ import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsImpl; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.instance.InstanceConfig; @@ -237,7 +237,7 @@ public void testMetricsEmpty() { FunctionInstanceStatsImpl instanceStats2 = WorkerUtils .getFunctionInstanceStats("public/default/test", functionRuntimeInfo, 1); - FunctionStats functionStats = new FunctionStats(); + FunctionStatsImpl functionStats = new FunctionStatsImpl(); functionStats.addInstance(instanceStats1); functionStats.addInstance(instanceStats2); diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java index d77009ef7bc6b..453d4bcd567ec 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java @@ -58,10 +58,9 @@ import org.apache.pulsar.client.api.schema.GenericRecord; import org.apache.pulsar.client.impl.PulsarClientImpl; import org.apache.pulsar.client.impl.schema.generic.GenericJsonRecord; -import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.policies.data.FunctionStatusUtil; -import org.apache.pulsar.common.policies.data.RetentionPolicies; import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy; import org.apache.pulsar.common.policies.data.TopicStats; import org.apache.pulsar.common.schema.KeyValue; @@ -491,7 +490,7 @@ protected void testFunctionNegAck(Runtime runtime) throws Exception { log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStatsImpl functionStats = FunctionStatsImpl.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages + 2); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); @@ -958,7 +957,7 @@ protected void getFunctionStatsEmpty(String functionName) throws Exception { ); log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStatsImpl functionStats = FunctionStatsImpl.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), 0); assertEquals(functionStats.getProcessedSuccessfullyTotal(), 0); @@ -999,7 +998,7 @@ private void getFunctionStats(String functionName, int numMessages) throws Excep log.info("FUNCTION STATS: {}", result.getStdout()); - FunctionStats functionStats = FunctionStats.decode(result.getStdout()); + FunctionStatsImpl functionStats = FunctionStatsImpl.decode(result.getStdout()); assertEquals(functionStats.getReceivedTotal(), numMessages); assertEquals(functionStats.getProcessedSuccessfullyTotal(), numMessages); assertEquals(functionStats.getSystemExceptionsTotal(), 0); From 23cbaab8e42eb0de796488c052b5fec83dbef621 Mon Sep 17 00:00:00 2001 From: Rui Fu Date: Mon, 31 May 2021 17:52:33 +0800 Subject: [PATCH 51/51] fix stylecheck --- .../apache/pulsar/PulsarClusterMetadataSetup.java | 5 +++-- .../java/org/apache/pulsar/PulsarStandalone.java | 3 ++- .../pulsar/broker/admin/impl/NamespacesBase.java | 12 ++++++++---- .../broker/admin/impl/PersistentTopicsBase.java | 3 ++- .../apache/pulsar/broker/web/PulsarWebResource.java | 6 ++++-- .../pulsar/client/admin/internal/ClustersImpl.java | 8 ++++---- .../pulsar/client/admin/internal/FunctionsImpl.java | 6 +++--- .../pulsar/client/admin/internal/NamespacesImpl.java | 2 +- .../pulsar/client/admin/internal/SinksImpl.java | 2 +- .../pulsar/client/admin/internal/SourcesImpl.java | 2 +- .../pulsar/client/admin/internal/TenantsImpl.java | 2 +- .../pulsar/client/admin/internal/TopicsImpl.java | 2 +- 12 files changed, 31 insertions(+), 22 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java index 0495e0195a83f..6eb415394ab2a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java @@ -236,8 +236,9 @@ public static void main(String[] args) throws Exception { createMetadataNode(configStore, "/admin/clusters", new byte[0]); - ClusterDataImpl clusterData = new ClusterDataImpl(arguments.clusterWebServiceUrl, arguments.clusterWebServiceUrlTls, - arguments.clusterBrokerServiceUrl, arguments.clusterBrokerServiceUrlTls); + ClusterDataImpl clusterData = new ClusterDataImpl(arguments.clusterWebServiceUrl, + arguments.clusterWebServiceUrlTls, arguments.clusterBrokerServiceUrl, + arguments.clusterBrokerServiceUrlTls); byte[] clusterDataJson = ObjectMapperFactory.getThreadLocal().writeValueAsBytes(clusterData); createMetadataNode(configStore, "/admin/clusters/" + arguments.cluster, clusterDataJson); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java index 8c810f5d860ae..dfaafd2366001 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java @@ -333,7 +333,8 @@ public void start() throws Exception { } admin = builder.build(); - ClusterDataImpl clusterData = new ClusterDataImpl(null, webServiceUrlTls.toString(), null, brokerServiceUrlTls); + ClusterDataImpl clusterData = new ClusterDataImpl(null, webServiceUrlTls.toString(), + null, brokerServiceUrlTls); createSampleNameSpace(clusterData, cluster); } 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 c6c09e46e0f30..6bae8f89b92ea 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 @@ -192,7 +192,8 @@ protected void internalDeleteNamespace(AsyncResponse asyncResponse, boolean auth && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = clusterResources().get( + AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -355,7 +356,8 @@ protected void internalDeleteNamespaceForcefully(AsyncResponse asyncResponse, bo && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = + clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -507,7 +509,8 @@ protected void internalDeleteNamespaceBundle(String bundleRange, boolean authori && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = + clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; @@ -580,7 +583,8 @@ protected void internalDeleteNamespaceBundleForcefully(String bundleRange, boole && !policies.replication_clusters.contains(config().getClusterName())) { // the only replication cluster is other cluster, redirect String replCluster = Lists.newArrayList(policies.replication_clusters).get(0); - ClusterDataImpl replClusterData = clusterResources().get(AdminResource.path("clusters", replCluster)) + ClusterDataImpl replClusterData = + clusterResources().get(AdminResource.path("clusters", replCluster)) .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Cluster " + replCluster + " does not exist")); URL replClusterUrl; 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 05ae53889ecef..dfa8e16f3d2bf 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 @@ -773,7 +773,8 @@ protected CompletableFuture internalGetOffloadPolicies(bool OffloadPoliciesImpl offloadPolicies = getTopicPolicies(topicName).map(TopicPolicies::getOffloadPolicies).orElse(null); if (applied) { - OffloadPoliciesImpl namespacePolicy = (OffloadPoliciesImpl) getNamespacePolicies(namespaceName).offload_policies; + OffloadPoliciesImpl namespacePolicy = + (OffloadPoliciesImpl) getNamespacePolicies(namespaceName).offload_policies; offloadPolicies = OffloadPoliciesImpl.mergeConfiguration(offloadPolicies , namespacePolicy, pulsar().getConfiguration().getProperties()); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java index aeaa59c62d97a..78526a94f9dd8 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java @@ -352,7 +352,8 @@ protected void validateClusterForTenant(String tenant, String cluster) { */ protected void validateClusterOwnership(String cluster) throws WebApplicationException { try { - ClusterDataImpl differentClusterData = getClusterDataIfDifferentCluster(pulsar(), cluster, clientAppId()).get(); + ClusterDataImpl differentClusterData = + getClusterDataIfDifferentCluster(pulsar(), cluster, clientAppId()).get(); if (differentClusterData != null) { URI redirect = getRedirectionUrl(differentClusterData); // redirect to the cluster requested @@ -390,7 +391,8 @@ private URI getRedirectionUrl(ClusterDataImpl differentClusterData) throws Malfo } protected static CompletableFuture getClusterDataIfDifferentCluster(PulsarService pulsar, - String cluster, String clientAppId) { + String cluster, + String clientAppId) { CompletableFuture clusterDataFuture = new CompletableFuture<>(); diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java index c908061f6463f..71babf2292a55 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java @@ -35,14 +35,14 @@ import org.apache.pulsar.client.admin.Clusters; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.api.Authentication; -import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationData; -import org.apache.pulsar.common.policies.data.ClusterDataImpl; +import org.apache.pulsar.common.policies.data.BrokerNamespaceIsolationDataImpl; import org.apache.pulsar.common.policies.data.ClusterData; -import org.apache.pulsar.common.policies.data.FailureDomainImpl; +import org.apache.pulsar.common.policies.data.ClusterDataImpl; import org.apache.pulsar.common.policies.data.FailureDomain; -import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; +import org.apache.pulsar.common.policies.data.FailureDomainImpl; import org.apache.pulsar.common.policies.data.NamespaceIsolationData; +import org.apache.pulsar.common.policies.data.NamespaceIsolationDataImpl; public class ClustersImpl extends BaseResource implements Clusters { diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java index ede01ae343d86..806ef79e033a1 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java @@ -46,14 +46,14 @@ import org.apache.pulsar.client.api.Authentication; import org.apache.pulsar.common.functions.FunctionConfig; import org.apache.pulsar.common.functions.FunctionState; -import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.WorkerInfo; import org.apache.pulsar.common.io.ConnectorDefinition; -import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionInstanceStatsData; -import org.apache.pulsar.common.policies.data.FunctionStatsImpl; +import org.apache.pulsar.common.policies.data.FunctionInstanceStatsDataImpl; import org.apache.pulsar.common.policies.data.FunctionStats; +import org.apache.pulsar.common.policies.data.FunctionStatsImpl; import org.apache.pulsar.common.policies.data.FunctionStatus; import org.apache.pulsar.common.util.ObjectMapperFactory; import org.asynchttpclient.AsyncHandler; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java index 3bf290c8fca11..f5f9e4994fcac 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java @@ -47,8 +47,8 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PersistencePolicies; import org.apache.pulsar.common.policies.data.Policies; import org.apache.pulsar.common.policies.data.PublishRate; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java index 9ab8bc1ab02f9..6a318237dc4f3 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SinksImpl.java @@ -39,8 +39,8 @@ import org.apache.pulsar.client.admin.Sink; import org.apache.pulsar.client.admin.Sinks; import org.apache.pulsar.client.api.Authentication; -import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SinkConfig; import org.apache.pulsar.common.policies.data.SinkStatus; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java index 7088ba5821784..51392024cc7b1 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/SourcesImpl.java @@ -38,8 +38,8 @@ import org.apache.pulsar.client.admin.Source; import org.apache.pulsar.client.admin.Sources; import org.apache.pulsar.client.api.Authentication; -import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.functions.UpdateOptions; +import org.apache.pulsar.common.functions.UpdateOptionsImpl; import org.apache.pulsar.common.io.ConnectorDefinition; import org.apache.pulsar.common.io.SourceConfig; import org.apache.pulsar.common.policies.data.SourceStatus; diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java index 015e2e0ab3e0c..6ad108890e3c7 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TenantsImpl.java @@ -31,8 +31,8 @@ import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.Tenants; import org.apache.pulsar.client.api.Authentication; -import org.apache.pulsar.common.policies.data.TenantInfoImpl; import org.apache.pulsar.common.policies.data.TenantInfo; +import org.apache.pulsar.common.policies.data.TenantInfoImpl; @SuppressWarnings("deprecation") public class TenantsImpl extends BaseResource implements Tenants, Properties { diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java index 8d62073313015..c38bbc0eefcd4 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java @@ -72,8 +72,8 @@ import org.apache.pulsar.common.policies.data.DispatchRate; import org.apache.pulsar.common.policies.data.ErrorData; import org.apache.pulsar.common.policies.data.InactiveTopicPolicies; -import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.OffloadPolicies; +import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl; import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats; import org.apache.pulsar.common.policies.data.PartitionedTopicStats; import org.apache.pulsar.common.policies.data.PersistencePolicies;