You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by si...@apache.org on 2020/12/09 17:18:50 UTC

[pulsar] branch master updated: [CheckStyle] Make module `pulsar-broker` conform checkstyle. (#8878)

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

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new cc64889  [CheckStyle] Make module `pulsar-broker` conform checkstyle. (#8878)
cc64889 is described below

commit cc64889abe94d47f048e2f8e8fb10d6c37e695ec
Author: Renkai Ge <ga...@gmail.com>
AuthorDate: Thu Dec 10 01:18:31 2020 +0800

    [CheckStyle] Make module `pulsar-broker` conform checkstyle. (#8878)
    
    Fix issue: https://github.com/streamnative/pulsar/issues/1768
    
    This PR contains code style changes only, it will be the final patch to make module `pulsar-broker` conform checkstyle.
---
 .../src/main/resources/pulsar/checkstyle.xml       |   6 +
 .../src/main/resources/pulsar/suppressions.xml     |  14 --
 .../broker/service/AbstractBaseDispatcher.java     |   7 +-
 .../AbstractDispatcherMultipleConsumers.java       |  26 ++-
 .../AbstractDispatcherSingleActiveConsumer.java    |   8 +-
 .../pulsar/broker/service/AbstractReplicator.java  |  17 +-
 .../pulsar/broker/service/AbstractTopic.java       |  39 ++--
 .../pulsar/broker/service/BacklogQuotaManager.java |  18 +-
 .../pulsar/broker/service/BrokerService.java       | 175 ++++++++------
 .../broker/service/BrokerServiceException.java     |   4 +-
 .../org/apache/pulsar/broker/service/Consumer.java |  28 ++-
 .../apache/pulsar/broker/service/Dispatcher.java   |  10 +-
 ...ashRangeAutoSplitStickyKeyConsumerSelector.java |   4 +-
 ...ashRangeExclusiveStickyKeyConsumerSelector.java |   9 +-
 .../broker/service/InMemoryRedeliveryTracker.java  |   2 +-
 .../broker/service/PrecisPublishLimiter.java       |   7 +-
 .../org/apache/pulsar/broker/service/Producer.java |  21 +-
 .../pulsar/broker/service/PublishRateLimiter.java  |   5 +-
 .../pulsar/broker/service/PulsarCommandSender.java |   5 +-
 .../broker/service/PulsarCommandSenderImpl.java    |  12 +-
 .../apache/pulsar/broker/service/PulsarStats.java  |  17 +-
 .../apache/pulsar/broker/service/ServerCnx.java    | 244 ++++++++++++--------
 .../broker/service/StickyKeyConsumerSelector.java  |   9 +-
 .../apache/pulsar/broker/service/Subscription.java |   2 +-
 .../SystemTopicBasedTopicPoliciesService.java      |  62 ++---
 .../org/apache/pulsar/broker/service/Topic.java    |  17 +-
 .../broker/service/TopicPoliciesService.java       |  15 +-
 .../apache/pulsar/broker/service/TransportCnx.java |   3 +-
 .../nonpersistent/NonPersistentDispatcher.java     |   4 +-
 .../NonPersistentDispatcherMultipleConsumers.java  |   3 +-
 ...onPersistentDispatcherSingleActiveConsumer.java |   9 +-
 .../nonpersistent/NonPersistentReplicator.java     |   3 +-
 ...istentStickyKeyDispatcherMultipleConsumers.java |  13 +-
 .../nonpersistent/NonPersistentSubscription.java   |  20 +-
 .../service/nonpersistent/NonPersistentTopic.java  |  31 +--
 .../service/persistent/CompactorSubscription.java  |   2 +-
 .../service/persistent/DispatchRateLimiter.java    |   4 +-
 .../service/persistent/MessageDeduplication.java   |  44 ++--
 .../PersistentDispatcherMultipleConsumers.java     |  65 ++++--
 .../PersistentDispatcherSingleActiveConsumer.java  |  41 ++--
 .../persistent/PersistentMessageExpiryMonitor.java |   6 +-
 .../persistent/PersistentMessageFinder.java        |   8 +-
 .../service/persistent/PersistentReplicator.java   |  66 ++++--
 ...istentStickyKeyDispatcherMultipleConsumers.java |  51 +++--
 .../service/persistent/PersistentSubscription.java |  54 +++--
 .../broker/service/persistent/PersistentTopic.java | 251 ++++++++++++---------
 .../ReplicatedSubscriptionSnapshotCache.java       |   2 +-
 .../ReplicatedSubscriptionsController.java         |   5 +-
 .../service/persistent/SubscribeRateLimiter.java   |  33 ++-
 .../broker/service/persistent/SystemTopic.java     |   3 +-
 .../service/schema/AlwaysSchemaValidator.java      |   2 +-
 .../schema/AvroSchemaBasedCompatibilityCheck.java  |   8 +-
 .../service/schema/BookkeeperSchemaStorage.java    |  45 ++--
 .../schema/JsonSchemaCompatibilityCheck.java       |   3 +-
 .../schema/KeyValueSchemaCompatibilityCheck.java   |  20 +-
 .../service/schema/NeverSchemaValidator.java       |   2 +-
 .../ProtobufNativeSchemaCompatibilityCheck.java    |   6 +-
 .../service/schema/SchemaCompatibilityCheck.java   |  23 +-
 .../broker/service/schema/SchemaRegistry.java      |   6 +-
 .../service/schema/SchemaRegistryService.java      |   4 +-
 .../service/schema/SchemaRegistryServiceImpl.java  |  60 ++---
 .../ProtobufNativeSchemaDataValidator.java         |   4 +-
 ...hemaRegistryServiceWithSchemaDataValidator.java |   3 +-
 .../pulsar/broker/stats/MBeanStatsGenerator.java   |   2 +-
 .../apache/pulsar/broker/stats/NamespaceStats.java |   6 +-
 .../broker/stats/metrics/AbstractMetrics.java      |  19 +-
 .../broker/stats/metrics/ManagedLedgerMetrics.java |  29 ++-
 .../stats/prometheus/AggregatedNamespaceStats.java |   2 +-
 .../prometheus/AggregatedReplicationStats.java     |   4 +-
 .../stats/prometheus/NamespaceStatsAggregator.java |  25 +-
 .../prometheus/PrometheusMetricsGenerator.java     |  18 +-
 .../stats/prometheus/PrometheusMetricsServlet.java |   3 +-
 .../pulsar/broker/stats/prometheus/TopicStats.java | 109 +++++----
 .../metrics/PrometheusMetricsProvider.java         |   5 +-
 .../metrics/PrometheusTextFormatUtil.java          |  70 +++---
 .../pulsar/broker/systopic/SystemTopicClient.java  |  25 +-
 .../systopic/TopicPoliciesSystemTopicClient.java   |   8 +-
 .../broker/transaction/buffer/TransactionMeta.java |   2 +-
 .../buffer/impl/TransactionBufferClientImpl.java   |  25 +-
 .../buffer/impl/TransactionBufferHandlerImpl.java  |  27 ++-
 .../transaction/pendingack/PendingAckHandle.java   |  12 +-
 .../pendingack/impl/PendingAckHandleImpl.java      |  34 +--
 .../pulsar/broker/web/PreInterceptFilter.java      |   7 +-
 .../pulsar/broker/web/PulsarWebResource.java       |  65 +++---
 .../pulsar/broker/web/ResponseHandlerFilter.java   |   2 +-
 .../org/apache/pulsar/broker/web/WebService.java   |  15 +-
 .../apache/pulsar/client/impl/RawReaderImpl.java   |  20 +-
 .../apache/pulsar/broker/admin/AdminApiTest.java   |  17 +-
 .../apache/pulsar/broker/admin/AdminApiTest2.java  |  12 +-
 .../broker/admin/CreateSubscriptionTest.java       |   7 +-
 .../broker/admin/IncrementPartitionsTest.java      |  16 +-
 .../pulsar/broker/admin/PersistentTopicsTest.java  |  46 ++--
 .../BrokerServiceAutoSubscriptionCreationTest.java |   7 +-
 .../BrokerServiceAutoTopicCreationTest.java        |   4 +-
 .../broker/service/ConsumedLedgersTrimTest.java    |   7 +-
 .../broker/service/SubscriptionSeekTest.java       |   3 -
 .../broker/service/TopicTerminationTest.java       |   2 -
 .../api/AuthorizationProducerConsumerTest.java     |   2 -
 .../client/api/ClientDeduplicationFailureTest.java |   7 +-
 .../api/SimpleTypedProducerConsumerTest.java       |  12 +-
 .../apache/pulsar/client/api/TopicReaderTest.java  |  31 ++-
 .../pulsar/client/impl/MultiTopicsReaderTest.java  |  14 +-
 .../apache/pulsar/client/impl/RawReaderTest.java   |   5 +-
 .../org/apache/pulsar/client/impl/ReaderTest.java  |  34 ++-
 .../apache/pulsar/compaction/CompactionTest.java   |   5 +-
 .../pulsar/client/admin/OffloadProcessStatus.java  |   2 +-
 .../pulsar/client/admin/internal/TopicsImpl.java   |   6 +-
 .../pulsar/admin/cli/PulsarAdminToolTest.java      |   9 +-
 .../pulsar/admin/cli/CmdPersistentTopics.java      |  23 +-
 .../org/apache/pulsar/admin/cli/CmdTopics.java     |   4 -
 .../apache/pulsar/client/impl/ConsumerImpl.java    |  11 +-
 .../client/impl/MultiTopicsConsumerImpl.java       |  42 ++--
 .../PersistentAcknowledgmentsGroupingTracker.java  |   7 +-
 .../pulsar/client/impl/ReaderBuilderImpl.java      |   5 +-
 .../apache/pulsar/client/impl/BuildersTest.java    |   5 +-
 .../functions/worker/FunctionAssignmentTailer.java |  11 +-
 .../functions/worker/FunctionMetaDataManager.java  |  23 +-
 .../functions/worker/FunctionRuntimeManager.java   |  52 ++---
 .../pulsar/functions/worker/SchedulerManager.java  |  51 ++---
 .../pulsar/functions/worker/WorkerService.java     |  13 +-
 .../worker/FunctionMetaDataTopicTailerTest.java    |   6 +-
 .../functions/worker/SchedulerManagerTest.java     |  28 ++-
 .../pulsar/io/debezium/PulsarDatabaseHistory.java  |   9 +-
 .../io/kafka/connect/PulsarOffsetBackingStore.java |   5 +-
 .../pulsar/testclient/PerformanceReader.java       |  17 +-
 .../org/apache/pulsar/websocket/ReaderHandler.java |   1 -
 .../integration/functions/PulsarFunctionsTest.java |  30 ++-
 .../pulsar/tests/integration/proxy/TestProxy.java  |   6 +-
 128 files changed, 1568 insertions(+), 1253 deletions(-)

diff --git a/buildtools/src/main/resources/pulsar/checkstyle.xml b/buildtools/src/main/resources/pulsar/checkstyle.xml
index 1d01c81..82dd052 100644
--- a/buildtools/src/main/resources/pulsar/checkstyle.xml
+++ b/buildtools/src/main/resources/pulsar/checkstyle.xml
@@ -92,6 +92,12 @@ page at http://checkstyle.sourceforge.net/config.html -->
     <!-- All Java AST specific tests live under TreeWalker module. -->
     <module name="TreeWalker">
 
+        <module name="SuppressionCommentFilter">
+            <property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
+            <property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
+            <property name="checkFormat" value="$1"/>
+        </module>
+
         <module name="SuppressWarningsHolder" />
 
         <module name="TodoComment">
diff --git a/buildtools/src/main/resources/pulsar/suppressions.xml b/buildtools/src/main/resources/pulsar/suppressions.xml
index 082a8ca..f7d34ab 100644
--- a/buildtools/src/main/resources/pulsar/suppressions.xml
+++ b/buildtools/src/main/resources/pulsar/suppressions.xml
@@ -39,20 +39,6 @@
     <!-- suppress all checks in the copied code -->
     <suppress checks=".*" files=".+[\\/]com[\\/]scurrilous[\\/]circe[\\/].+\.java"/>
 
-    <!-- TODO: gradually delete below lines to make the whole project conform the checkstyle rule  -->
     <suppress checks=".*" files="MLDataFormats.java"/>
     <suppress checks=".*" files="BitSetRecyclable.java"/>
-    <suppress checks=".*" files="Schema.java"/>
-    <suppress checks="StaticVariableName" files="AuthData.java"/>
-    <suppress checks="MethodName" files="AuthenticationFactory.java"/>
-    <suppress checks="ConstantName" files="MessageId.java"/>
-    <suppress checks="MethodName" files="TopicsImpl.java"/>
-    <suppress checks="MemberName" files="TopicsImpl.java"/>
-    <suppress checks=".*" files="src/main/java/org/apache/pulsar/broker/protocol/.*.java"/>
-    <suppress checks=".*" files="src/main/java/org/apache/pulsar/broker/service/.*.java"/>
-    <suppress checks=".*" files="src/main/java/org/apache/pulsar/broker/stats/.*.java"/>
-    <suppress checks=".*" files="src/main/java/org/apache/pulsar/broker/systopic/.*.java"/>
-    <suppress checks=".*" files="src/main/java/org/apache/pulsar/broker/tools/.*.java"/>
-    <suppress checks=".*" files="src/main/java/org/apache/pulsar/broker/transaction/.*.java"/>
-    <suppress checks=".*" files="src/main/java/org/apache/pulsar/broker/web/.*.java"/>
 </suppressions>
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractBaseDispatcher.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractBaseDispatcher.java
index d0e2880..878a026 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractBaseDispatcher.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractBaseDispatcher.java
@@ -131,14 +131,15 @@ public abstract class AbstractBaseDispatcher implements Dispatcher {
                 int batchSize = msgMetadata.getNumMessagesInBatch();
                 totalMessages += batchSize;
                 totalBytes += metadataAndPayload.readableBytes();
-                totalChunkedMessages += msgMetadata.hasChunkId() ? 1: 0;
+                totalChunkedMessages += msgMetadata.hasChunkId() ? 1 : 0;
                 batchSizes.setBatchSize(i, batchSize);
                 if (indexesAcks != null && cursor != null) {
-                    long[] ackSet = cursor.getDeletedBatchIndexesAsLongArray(PositionImpl.get(entry.getLedgerId(), entry.getEntryId()));
+                    long[] ackSet = cursor.getDeletedBatchIndexesAsLongArray(
+                            PositionImpl.get(entry.getLedgerId(), entry.getEntryId()));
                     if (ackSet != null) {
                         indexesAcks.setIndexesAcks(i, Pair.of(batchSize, ackSet));
                     } else {
-                        indexesAcks.setIndexesAcks(i,null);
+                        indexesAcks.setIndexesAcks(i, null);
                     }
                 }
             } finally {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherMultipleConsumers.java
index 23b835e..c7ce59f 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherMultipleConsumers.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherMultipleConsumers.java
@@ -29,6 +29,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
+ *
  */
 public abstract class AbstractDispatcherMultipleConsumers extends AbstractBaseDispatcher {
 
@@ -38,8 +39,9 @@ public abstract class AbstractDispatcherMultipleConsumers extends AbstractBaseDi
 
     protected static final int FALSE = 0;
     protected static final int TRUE = 1;
-    protected static final AtomicIntegerFieldUpdater<AbstractDispatcherMultipleConsumers> IS_CLOSED_UPDATER = AtomicIntegerFieldUpdater
-            .newUpdater(AbstractDispatcherMultipleConsumers.class, "isClosed");
+    protected static final AtomicIntegerFieldUpdater<AbstractDispatcherMultipleConsumers> IS_CLOSED_UPDATER =
+            AtomicIntegerFieldUpdater
+                    .newUpdater(AbstractDispatcherMultipleConsumers.class, "isClosed");
     private volatile int isClosed = FALSE;
 
     private Random random = new Random(42);
@@ -79,7 +81,8 @@ public abstract class AbstractDispatcherMultipleConsumers extends AbstractBaseDi
      * have permits, else broker will consider next priority level consumers.
      * Also on the same priority-level, it selects consumer in round-robin manner.
      * <p>
-     * If subscription has consumer-A with  priorityLevel 1 and Consumer-B with priorityLevel 2 then broker will dispatch
+     * If subscription has consumer-A with  priorityLevel 1 and Consumer-B with priorityLevel 2
+     * then broker will dispatch
      * messages to only consumer-A until it runs out permit and then broker starts dispatching messages to Consumer-B.
      * <p>
      * Consumer PriorityLevel Permits
@@ -98,8 +101,10 @@ public abstract class AbstractDispatcherMultipleConsumers extends AbstractBaseDi
      *
      * Each time getNextConsumer() is called:<p>
      * 1. It always starts to traverse from the max-priority consumer (first element) from sorted-list
-     * 2. Consumers on same priority-level will be treated equally and it tries to pick one of them in round-robin manner
-     * 3. If consumer is not available on given priority-level then only it will go to the next lower priority-level consumers
+     * 2. Consumers on same priority-level will be treated equally and it tries to pick one of them in
+     *    round-robin manner
+     * 3. If consumer is not available on given priority-level then only it will go to the next lower priority-level
+     *    consumers
      * 4. Returns null in case it doesn't find any available consumer
      * </pre>
      *
@@ -154,7 +159,7 @@ public abstract class AbstractDispatcherMultipleConsumers extends AbstractBaseDi
 
 
     /**
-     * Finds index of first available consumer which has higher priority then given targetPriority
+     * Finds index of first available consumer which has higher priority then given targetPriority.
      *
      * @param targetPriority
      * @return -1 if couldn't find any available consumer
@@ -174,9 +179,10 @@ public abstract class AbstractDispatcherMultipleConsumers extends AbstractBaseDi
     }
 
     /**
-     * Finds index of round-robin available consumer that present on same level as consumer on currentRoundRobinIndex if
-     * doesn't find consumer on same level then it finds first available consumer on lower priority level else returns
-     * index=-1 if couldn't find any available consumer in the list
+     * Finds index of round-robin available consumer that present on same level as consumer on
+     * currentRoundRobinIndex if doesn't find consumer on same level then it finds first available consumer on lower
+     * priority level else returns
+     * index=-1 if couldn't find any available consumer in the list.
      *
      * @param currentRoundRobinIndex
      * @return
@@ -214,7 +220,7 @@ public abstract class AbstractDispatcherMultipleConsumers extends AbstractBaseDi
     }
 
     /**
-     * Finds index of first consumer in list which has same priority as given targetPriority
+     * Finds index of first consumer in list which has same priority as given targetPriority.
      *
      * @param targetPriority
      * @return
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherSingleActiveConsumer.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherSingleActiveConsumer.java
index 48eae73..aab4b14 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherSingleActiveConsumer.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractDispatcherSingleActiveConsumer.java
@@ -35,8 +35,9 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractDispatcherSingleActiveConsumer extends AbstractBaseDispatcher {
 
     protected final String topicName;
-    protected static final AtomicReferenceFieldUpdater<AbstractDispatcherSingleActiveConsumer, Consumer> ACTIVE_CONSUMER_UPDATER =
-            AtomicReferenceFieldUpdater.newUpdater(AbstractDispatcherSingleActiveConsumer.class, Consumer.class, "activeConsumer");
+    protected static final AtomicReferenceFieldUpdater<AbstractDispatcherSingleActiveConsumer, Consumer>
+            ACTIVE_CONSUMER_UPDATER = AtomicReferenceFieldUpdater.newUpdater(
+            AbstractDispatcherSingleActiveConsumer.class, Consumer.class, "activeConsumer");
     private volatile Consumer activeConsumer = null;
     protected final CopyOnWriteArrayList<Consumer> consumers;
     protected StickyKeyConsumerSelector stickyKeyConsumerSelector;
@@ -142,7 +143,8 @@ public abstract class AbstractDispatcherSingleActiveConsumer extends AbstractBas
         }
 
         if (subscriptionType == SubType.Failover && isConsumersExceededOnSubscription()) {
-            log.warn("[{}] Attempting to add consumer to subscription which reached max consumers limit", this.topicName);
+            log.warn("[{}] Attempting to add consumer to subscription which reached max consumers limit",
+                    this.topicName);
             throw new ConsumerBusyException("Subscription reached max consumers limit");
         }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractReplicator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractReplicator.java
index ff957cc..ad03784 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractReplicator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractReplicator.java
@@ -49,12 +49,13 @@ public abstract class AbstractReplicator {
     protected final int producerQueueSize;
     protected final ProducerBuilder<byte[]> producerBuilder;
 
-    protected final Backoff backOff = new Backoff(100, TimeUnit.MILLISECONDS, 1, TimeUnit.MINUTES, 0 ,TimeUnit.MILLISECONDS);
+    protected final Backoff backOff = new Backoff(100, TimeUnit.MILLISECONDS, 1, TimeUnit.MINUTES, 0,
+            TimeUnit.MILLISECONDS);
 
     protected final String replicatorPrefix;
 
-    protected static final AtomicReferenceFieldUpdater<AbstractReplicator, State> STATE_UPDATER = AtomicReferenceFieldUpdater
-            .newUpdater(AbstractReplicator.class, State.class, "state");
+    protected static final AtomicReferenceFieldUpdater<AbstractReplicator, State> STATE_UPDATER =
+            AtomicReferenceFieldUpdater.newUpdater(AbstractReplicator.class, State.class, "state");
     private volatile State state = State.Stopped;
 
     protected enum State {
@@ -62,7 +63,7 @@ public abstract class AbstractReplicator {
     }
 
     public AbstractReplicator(String topicName, String replicatorPrefix, String localCluster, String remoteCluster,
-            BrokerService brokerService) throws NamingException {
+                              BrokerService brokerService) throws NamingException {
         validatePartitionedTopic(topicName, brokerService);
         this.brokerService = brokerService;
         this.topicName = topicName;
@@ -166,7 +167,8 @@ public abstract class AbstractReplicator {
         }).exceptionally(ex -> {
             long waitTimeMs = backOff.next();
             log.warn(
-                    "[{}][{} -> {}] Exception: '{}' occurred while trying to close the producer. retrying again in {} s",
+                    "[{}][{} -> {}] Exception: '{}' occurred while trying to close the producer."
+                            + " retrying again in {} s",
                     topicName, localCluster, remoteCluster, ex.getMessage(), waitTimeMs / 1000.0);
             // BackOff before retrying
             brokerService.executor().schedule(this::closeProducerAsync, waitTimeMs, TimeUnit.MILLISECONDS);
@@ -234,8 +236,9 @@ public abstract class AbstractReplicator {
      * if topic : persistent://prop/cluster/ns/my-topic is a partitioned topic with 2 partitions then
      * broker explicitly creates replicator producer for: "my-topic-partition-1" and "my-topic-partition-2".
      *
-     * However, if broker tries to start producer with root topic "my-topic" then client-lib internally creates individual
-     * producers for "my-topic-partition-1" and "my-topic-partition-2" which creates conflict with existing
+     * However, if broker tries to start producer with root topic "my-topic" then client-lib internally
+     * creates individual producers for "my-topic-partition-1" and "my-topic-partition-2" which creates
+     * conflict with existing
      * replicator producers.
      * </pre>
      *
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractTopic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractTopic.java
index ce56216..1b4a068 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractTopic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractTopic.java
@@ -22,7 +22,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static org.apache.bookkeeper.mledger.impl.ManagedLedgerMBeanImpl.ENTRY_LATENCY_BUCKETS_USEC;
 import static org.apache.pulsar.broker.cache.ConfigurationCacheService.POLICIES;
 import com.google.common.base.MoreObjects;
-
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
@@ -34,7 +33,6 @@ import java.util.concurrent.atomic.AtomicLongFieldUpdater;
 import java.util.concurrent.atomic.LongAdder;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
-
 import org.apache.bookkeeper.mledger.util.StatsBuckets;
 import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.broker.admin.AdminResource;
@@ -122,9 +120,12 @@ public abstract class AbstractTopic implements Topic {
         this.producers = new ConcurrentHashMap<>();
         this.isFenced = false;
         this.replicatorPrefix = brokerService.pulsar().getConfiguration().getReplicatorPrefix();
-        this.inactiveTopicPolicies.setDeleteWhileInactive(brokerService.pulsar().getConfiguration().isBrokerDeleteInactiveTopicsEnabled());
-        this.inactiveTopicPolicies.setMaxInactiveDurationSeconds(brokerService.pulsar().getConfiguration().getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds());
-        this.inactiveTopicPolicies.setInactiveTopicDeleteMode(brokerService.pulsar().getConfiguration().getBrokerDeleteInactiveTopicsMode());
+        this.inactiveTopicPolicies.setDeleteWhileInactive(brokerService.pulsar().getConfiguration()
+                .isBrokerDeleteInactiveTopicsEnabled());
+        this.inactiveTopicPolicies.setMaxInactiveDurationSeconds(brokerService.pulsar().getConfiguration()
+                .getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds());
+        this.inactiveTopicPolicies.setInactiveTopicDeleteMode(brokerService.pulsar().getConfiguration()
+                .getBrokerDeleteInactiveTopicsMode());
         this.lastActive = System.nanoTime();
         Policies policies = null;
         try {
@@ -157,7 +158,8 @@ public abstract class AbstractTopic implements Topic {
             }
             maxProducers = policies.max_producers_per_topic;
         }
-        maxProducers = maxProducers > 0 ? maxProducers : brokerService.pulsar().getConfiguration().getMaxProducersPerTopic();
+        maxProducers = maxProducers > 0 ? maxProducers : brokerService.pulsar()
+                .getConfiguration().getMaxProducersPerTopic();
         if (maxProducers > 0 && maxProducers <= producers.size()) {
             return true;
         }
@@ -311,7 +313,8 @@ public abstract class AbstractTopic implements Topic {
         return schemaRegistryService.getSchema(id)
                 .thenCompose(schema -> {
                     if (schema != null) {
-                        // It's different from `SchemasResource.deleteSchema` because when we delete a topic, the schema
+                        // It's different from `SchemasResource.deleteSchema`
+                        // because when we delete a topic, the schema
                         // history is meaningless. But when we delete a schema of a topic, a new schema could be
                         // registered in the future.
                         log.info("Delete schema storage of id: {}", id);
@@ -489,7 +492,7 @@ public abstract class AbstractTopic implements Topic {
     }
 
     /**
-     * it sets cnx auto-readable if producer's cnx is disabled due to publish-throttling
+     * it sets cnx auto-readable if producer's cnx is disabled due to publish-throttling.
      */
     protected void enableProducerReadForPublishRateLimiting() {
         if (producers != null) {
@@ -547,7 +550,7 @@ public abstract class AbstractTopic implements Topic {
             canOverwrite = true;
         }
         if (canOverwrite) {
-            if(!producers.replace(newProducer.getProducerName(), oldProducer, newProducer)) {
+            if (!producers.replace(newProducer.getProducerName(), oldProducer, newProducer)) {
                 // Met concurrent update, throw exception here so that client can try reconnect later.
                 throw new BrokerServiceException.NamingException("Producer with name '" + newProducer.getProducerName()
                         + "' replace concurrency error");
@@ -607,8 +610,8 @@ public abstract class AbstractTopic implements Topic {
     @Override
     public boolean isPublishRateExceeded() {
         // either topic or broker publish rate exceeded.
-        return this.topicPublishRateLimiter.isPublishRateExceeded() ||
-            getBrokerPublishRateLimiter().isPublishRateExceeded();
+        return this.topicPublishRateLimiter.isPublishRateExceeded()
+                || getBrokerPublishRateLimiter().isPublishRateExceeded();
     }
 
     @Override
@@ -639,7 +642,8 @@ public abstract class AbstractTopic implements Topic {
         //if topic-level policy exists, try to use topic-level publish rate policy
         TopicPolicies topicPolicies = getTopicPolicies(TopicName.get(topic));
         if (topicPolicies != null && topicPolicies.isPublishRateSet()) {
-            log.info("Using topic policy publish rate instead of namespace level topic publish rate on topic {}", this.topic);
+            log.info("Using topic policy publish rate instead of namespace level topic publish rate on topic {}",
+                    this.topic);
             updatePublishDispatcher(topicPolicies.getPublishRate());
             return;
         }
@@ -662,7 +666,9 @@ public abstract class AbstractTopic implements Topic {
         updatePublishDispatcher(publishRate);
     }
 
-    public long getMsgInCounter() { return this.msgInCounter.longValue(); }
+    public long getMsgInCounter() {
+        return this.msgInCounter.longValue();
+    }
 
     public long getBytesInCounter() {
         return this.bytesInCounter.longValue();
@@ -719,8 +725,8 @@ public abstract class AbstractTopic implements Topic {
             log.warn("Topic {} policies cache have not init.", topicName.getPartitionedTopicName());
             return null;
         } catch (NullPointerException e) {
-            log.warn("Topic level policies are not enabled. " +
-                    "Please refer to systemTopicEnabled and topicLevelPoliciesEnabled on broker.conf");
+            log.warn("Topic level policies are not enabled. "
+                    + "Please refer to systemTopicEnabled and topicLevelPoliciesEnabled on broker.conf");
             return null;
         }
     }
@@ -755,7 +761,8 @@ public abstract class AbstractTopic implements Topic {
                     || this.topicPublishRateLimiter == PublishRateLimiter.DISABLED_RATE_LIMITER) {
                 // create new rateLimiter if rate-limiter is disabled
                 if (preciseTopicPublishRateLimitingEnable) {
-                    this.topicPublishRateLimiter = new PrecisPublishLimiter(publishRate, ()-> this.enableCnxAutoRead());
+                    this.topicPublishRateLimiter = new PrecisPublishLimiter(publishRate,
+                            () -> this.enableCnxAutoRead());
                 } else {
                     this.topicPublishRateLimiter = new PublishRateLimiterImpl(publishRate);
                 }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java
index 5b5e6ab..c3f2281 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java
@@ -75,18 +75,19 @@ public class BacklogQuotaManager {
     public BacklogQuota getBacklogQuota(TopicName topicName) {
         String policyPath = AdminResource.path(POLICIES, topicName.getNamespace());
         if (!isTopicLevelPoliciesEnable) {
-            return getBacklogQuota(topicName.getNamespace(),policyPath);
+            return getBacklogQuota(topicName.getNamespace(), policyPath);
         }
 
         try {
             return Optional.ofNullable(pulsar.getTopicPoliciesService().getTopicPolicies(topicName))
                     .map(TopicPolicies::getBackLogQuotaMap)
                     .map(map -> map.get(BacklogQuotaType.destination_storage.name()))
-                    .orElseGet(() -> getBacklogQuota(topicName.getNamespace(),policyPath));
+                    .orElseGet(() -> getBacklogQuota(topicName.getNamespace(), policyPath));
         } catch (Exception e) {
-            log.warn("Failed to read topic policies data, will apply the namespace backlog quota: topicName={}", topicName, e);
+            log.warn("Failed to read topic policies data, will apply the namespace backlog quota: topicName={}",
+                    topicName, e);
         }
-        return getBacklogQuota(topicName.getNamespace(),policyPath);
+        return getBacklogQuota(topicName.getNamespace(), policyPath);
     }
 
     public long getBacklogQuotaLimit(TopicName topicName) {
@@ -94,10 +95,9 @@ public class BacklogQuotaManager {
     }
 
     /**
-     * Handle exceeded backlog by using policies set in the zookeeper for given topic
+     * Handle exceeded backlog by using policies set in the zookeeper for given topic.
      *
-     * @param persistentTopic
-     *            Topic on which backlog has been exceeded
+     * @param persistentTopic Topic on which backlog has been exceeded
      */
     public void handleExceededBacklogQuota(PersistentTopic persistentTopic) {
         TopicName topicName = TopicName.get(persistentTopic.getName());
@@ -118,7 +118,7 @@ public class BacklogQuotaManager {
     }
 
     /**
-     * Drop the backlog on the topic
+     * Drop the backlog on the topic.
      *
      * @param persistentTopic
      *            The topic from which backlog should be dropped
@@ -192,7 +192,7 @@ public class BacklogQuotaManager {
     }
 
     /**
-     * Disconnect producers on given topic
+     * Disconnect producers on given topic.
      *
      * @param persistentTopic
      *            The topic on which all producers should be disconnected
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 b43ec4d..77993d1 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
@@ -182,7 +182,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
 
     // Multi-layer topics map:
     // Namespace --> Bundle --> topicName --> topic
-    private final ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, Topic>>> multiLayerTopicsMap;
+    private final ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, Topic>>>
+            multiLayerTopicsMap;
     private int numberOfNamespaceBundles = 0;
 
     private final EventLoopGroup acceptorGroup;
@@ -190,7 +191,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     private final OrderedExecutor topicOrderedExecutor;
     // offline topic backlog cache
     private final ConcurrentOpenHashMap<TopicName, PersistentOfflineTopicStats> offlineTopicStatCache;
-    private static final ConcurrentOpenHashMap<String, ConfigField> dynamicConfigurationMap = prepareDynamicConfigurationMap();
+    private static final ConcurrentOpenHashMap<String, ConfigField> dynamicConfigurationMap =
+            prepareDynamicConfigurationMap();
     private final ConcurrentOpenHashMap<String, Consumer<?>> configRegisteredListeners;
 
     private final ConcurrentLinkedQueue<Pair<String, CompletableFuture<Optional<Topic>>>> pendingTopicLoadingQueue;
@@ -218,7 +220,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
 
     private DistributedIdGenerator producerNameGenerator;
 
-    public final static String producerNameGeneratorPath = "/counters/producer-name";
+    public final static String PRODUCER_NAME_GENERATOR_PATH = "/counters/producer-name";
 
     private final BacklogQuotaManager backlogQuotaManager;
 
@@ -251,10 +253,11 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
 
     public BrokerService(PulsarService pulsar) throws Exception {
         this.pulsar = pulsar;
-        this.maxMessagePublishBufferBytes = pulsar.getConfiguration().getMaxMessagePublishBufferSizeInMB() > 0 ?
-            pulsar.getConfiguration().getMaxMessagePublishBufferSizeInMB() * 1024L * 1024L : -1;
+        this.maxMessagePublishBufferBytes = pulsar.getConfiguration().getMaxMessagePublishBufferSizeInMB() > 0
+                ? pulsar.getConfiguration().getMaxMessagePublishBufferSizeInMB() * 1024L * 1024L : -1;
         this.resumeProducerReadMessagePublishBufferBytes = this.maxMessagePublishBufferBytes / 2;
-        this.preciseTopicPublishRateLimitingEnable = pulsar.getConfiguration().isPreciseTopicPublishRateLimiterEnable();
+        this.preciseTopicPublishRateLimitingEnable =
+                pulsar.getConfiguration().isPreciseTopicPublishRateLimiterEnable();
         this.managedLedgerFactory = pulsar.getManagedLedgerFactory();
         this.topics = new ConcurrentOpenHashMap<>();
         this.replicationClients = new ConcurrentOpenHashMap<>();
@@ -279,7 +282,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         this.workerGroup = EventLoopUtil.newEventLoopGroup(numThreads, workersThreadFactory);
         this.statsUpdater = Executors
                 .newSingleThreadScheduledExecutor(new DefaultThreadFactory("pulsar-stats-updater"));
-        this.authorizationService = new AuthorizationService(pulsar.getConfiguration(), pulsar.getConfigurationCache());
+        this.authorizationService = new AuthorizationService(
+                pulsar.getConfiguration(), pulsar.getConfigurationCache());
 
         if (pulsar.getConfigurationCache() != null) {
             pulsar.getConfigurationCache().policiesCache().registerListener(this);
@@ -290,9 +294,11 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         this.messageExpiryMonitor = Executors
                 .newSingleThreadScheduledExecutor(new DefaultThreadFactory("pulsar-msg-expiry-monitor"));
         this.compactionMonitor =
-            Executors.newSingleThreadScheduledExecutor(new DefaultThreadFactory("pulsar-compaction-monitor"));
+                Executors.newSingleThreadScheduledExecutor(
+                        new DefaultThreadFactory("pulsar-compaction-monitor"));
         this.messagePublishBufferMonitor =
-            Executors.newSingleThreadScheduledExecutor(new DefaultThreadFactory("pulsar-publish-buffer-monitor"));
+                Executors.newSingleThreadScheduledExecutor(
+                        new DefaultThreadFactory("pulsar-publish-buffer-monitor"));
         this.consumedLedgersMonitor = Executors
                 .newSingleThreadScheduledExecutor(new DefaultThreadFactory("consumed-Ledgers-monitor"));
         this.ledgerFullMonitor =
@@ -323,12 +329,14 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
             log.info("Enabling per-broker unack-message limit {} and dispatcher-limit {} on blocked-broker",
                     maxUnackedMessages, maxUnackedMsgsPerDispatcher);
             // block misbehaving dispatcher by checking periodically
-            pulsar.getExecutor().scheduleAtFixedRate(() -> checkUnAckMessageDispatching(), 600, 30, TimeUnit.SECONDS);
+            pulsar.getExecutor().scheduleAtFixedRate(() -> checkUnAckMessageDispatching(),
+                    600, 30, TimeUnit.SECONDS);
         } else {
             this.maxUnackedMessages = 0;
             this.maxUnackedMsgsPerDispatcher = 0;
             log.info(
-                    "Disabling per broker unack-msg blocking due invalid unAckMsgSubscriptionPercentageLimitOnBrokerBlocked {} ",
+                    "Disabling per broker unack-msg blocking due invalid"
+                            + " unAckMsgSubscriptionPercentageLimitOnBrokerBlocked {} ",
                     pulsar.getConfiguration().getMaxUnackedMessagesPerSubscriptionOnBrokerBlocked());
         }
 
@@ -345,7 +353,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
                         - lookupRequestSemaphore.get().availablePermits())
                 .register();
 
-        this.pendingTopicLoadRequests = ObserverGauge.build("pulsar_broker_topic_load_pending_requests", "-")
+        this.pendingTopicLoadRequests = ObserverGauge.build(
+                "pulsar_broker_topic_load_pending_requests", "-")
                 .supplier(() -> pulsar.getConfig().getMaxConcurrentTopicLoadRequest()
                         - topicLoadRequestSemaphore.get().availablePermits())
                 .register();
@@ -393,7 +402,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     }
 
     public void start() throws Exception {
-        this.producerNameGenerator = new DistributedIdGenerator(pulsar.getZkClient(), producerNameGeneratorPath,
+        this.producerNameGenerator = new DistributedIdGenerator(pulsar.getZkClient(), PRODUCER_NAME_GENERATOR_PATH,
                 pulsar.getConfiguration().getClusterName());
 
         ServerBootstrap bootstrap = defaultServerBootstrap.clone();
@@ -419,7 +428,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
             ServerBootstrap tlsBootstrap = bootstrap.clone();
             tlsBootstrap.childHandler(new PulsarChannelInitializer(pulsar, true));
             try {
-                listenChannelTls = tlsBootstrap.bind(new InetSocketAddress(pulsar.getBindAddress(), tlsPort.get())).sync()
+                listenChannelTls = tlsBootstrap.bind(new InetSocketAddress(
+                        pulsar.getBindAddress(), tlsPort.get())).sync()
                         .channel();
                 log.info("Started Pulsar Broker TLS service on {} - TLS provider: {}", listenChannelTls.localAddress(),
                         SslContext.defaultServerProvider());
@@ -460,8 +470,10 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         int interval = pulsar().getConfiguration().getBrokerDeduplicationSnapshotFrequencyInSeconds();
         if (interval > 0 && pulsar().getConfiguration().isBrokerDeduplicationEnabled()) {
             this.deduplicationSnapshotMonitor =
-                    Executors.newSingleThreadScheduledExecutor(new DefaultThreadFactory("deduplication-snapshot-monitor"));
-            deduplicationSnapshotMonitor.scheduleAtFixedRate(safeRun(() -> forEachTopic(Topic::checkDeduplicationSnapshot))
+                    Executors.newSingleThreadScheduledExecutor(new DefaultThreadFactory(
+                            "deduplication-snapshot-monitor"));
+            deduplicationSnapshotMonitor.scheduleAtFixedRate(safeRun(() -> forEachTopic(
+                    Topic::checkDeduplicationSnapshot))
                     , interval, interval, TimeUnit.SECONDS);
         }
     }
@@ -476,15 +488,18 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         // Deduplication info checker
         long duplicationCheckerIntervalInSeconds = TimeUnit.MINUTES
                 .toSeconds(pulsar().getConfiguration().getBrokerDeduplicationProducerInactivityTimeoutMinutes()) / 3;
-        inactivityMonitor.scheduleAtFixedRate(safeRun(this::checkMessageDeduplicationInfo), duplicationCheckerIntervalInSeconds,
+        inactivityMonitor.scheduleAtFixedRate(safeRun(this::checkMessageDeduplicationInfo),
+                duplicationCheckerIntervalInSeconds,
                 duplicationCheckerIntervalInSeconds, TimeUnit.SECONDS);
 
         // Inactive subscriber checker
         if (pulsar().getConfiguration().getSubscriptionExpiryCheckIntervalInMinutes() > 0) {
             long subscriptionExpiryCheckIntervalInSeconds =
-                    TimeUnit.MINUTES.toSeconds(pulsar().getConfiguration().getSubscriptionExpiryCheckIntervalInMinutes());
+                    TimeUnit.MINUTES.toSeconds(pulsar().getConfiguration()
+                            .getSubscriptionExpiryCheckIntervalInMinutes());
             inactivityMonitor.scheduleAtFixedRate(safeRun(this::checkInactiveSubscriptions),
-                    subscriptionExpiryCheckIntervalInSeconds, subscriptionExpiryCheckIntervalInSeconds, TimeUnit.SECONDS);
+                    subscriptionExpiryCheckIntervalInSeconds,
+                    subscriptionExpiryCheckIntervalInSeconds, TimeUnit.SECONDS);
         }
     }
 
@@ -700,8 +715,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
      * requests.</li>
      * <li>Second it starts unloading namespace bundle one by one without closing the connection in order to avoid
      * disruption for other namespacebundles which are sharing the same connection from the same client.</li>
-     * <ul>
-     *
+     * </ul>
      */
     public void unloadNamespaceBundlesGracefully() {
         try {
@@ -898,7 +912,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     }
 
     private <T> CompletableFuture<T> futureWithDeadline() {
-        return futureWithDeadline(60000L, TimeUnit.MILLISECONDS, new TimeoutException("Future didn't finish within deadline"));
+        return futureWithDeadline(60000L, TimeUnit.MILLISECONDS,
+                new TimeoutException("Future didn't finish within deadline"));
     }
 
     public PulsarClient getReplicationClient(String cluster) {
@@ -1009,13 +1024,15 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
      */
     protected CompletableFuture<Optional<Topic>> loadOrCreatePersistentTopic(final String topic,
             boolean createIfMissing) throws RuntimeException {
-        final CompletableFuture<Optional<Topic>> topicFuture = futureWithDeadline(pulsar.getConfiguration().getTopicLoadTimeoutSeconds(),
+        final CompletableFuture<Optional<Topic>> topicFuture = futureWithDeadline(
+                pulsar.getConfiguration().getTopicLoadTimeoutSeconds(),
                 TimeUnit.SECONDS, new TimeoutException("Failed to load topic within timeout"));
         if (!pulsar.getConfiguration().isEnablePersistentTopics()) {
             if (log.isDebugEnabled()) {
                 log.debug("Broker is unable to load persistent topic {}", topic);
             }
-            topicFuture.completeExceptionally(new NotAllowedException("Broker is not unable to load persistent topic"));
+            topicFuture.completeExceptionally(new NotAllowedException(
+                    "Broker is not unable to load persistent topic"));
             return topicFuture;
         }
 
@@ -1036,7 +1053,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
                     return null;
                 });
             } else {
-                pendingTopicLoadingQueue.add(new ImmutablePair<String, CompletableFuture<Optional<Topic>>>(topic, topicFuture));
+                pendingTopicLoadingQueue.add(new ImmutablePair<>(topic, topicFuture));
                 if (log.isDebugEnabled()) {
                     log.debug("topic-loading for {} added into pending queue", topic);
                 }
@@ -1046,7 +1063,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         return topicFuture;
     }
 
-    private void createPersistentTopic(final String topic, boolean createIfMissing, CompletableFuture<Optional<Topic>> topicFuture) {
+    private void createPersistentTopic(final String topic, boolean createIfMissing,
+                                       CompletableFuture<Optional<Topic>> topicFuture) {
 
         final long topicCreateTimeMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime());
         TopicName topicName = TopicName.get(topic);
@@ -1085,7 +1103,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
                                     topicFuture.complete(Optional.of(persistentTopic));
                                 }).exceptionally((ex) -> {
                                     log.warn(
-                                            "Replication or dedup check failed. Removing topic from topics list {}, {}",
+                                            "Replication or dedup check failed."
+                                                    + " Removing topic from topics list {}, {}",
                                             topic, ex);
                                     persistentTopic.stopReplProducers().whenComplete((v, exception) -> {
                                         topics.remove(topic, topicFuture);
@@ -1203,7 +1222,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
             managedLedgerConfig.setPassword(serviceConfig.getManagedLedgerPassword());
 
             managedLedgerConfig.setMaxUnackedRangesToPersist(serviceConfig.getManagedLedgerMaxUnackedRangesToPersist());
-            managedLedgerConfig.setMaxUnackedRangesToPersistInZk(serviceConfig.getManagedLedgerMaxUnackedRangesToPersistInZooKeeper());
+            managedLedgerConfig.setMaxUnackedRangesToPersistInZk(
+                    serviceConfig.getManagedLedgerMaxUnackedRangesToPersistInZooKeeper());
             managedLedgerConfig.setMaxEntriesPerLedger(serviceConfig.getManagedLedgerMaxEntriesPerLedger());
             managedLedgerConfig.setMinimumRolloverTime(serviceConfig.getManagedLedgerMinLedgerRolloverTimeMinutes(),
                     TimeUnit.MINUTES);
@@ -1247,8 +1267,10 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
                 managedLedgerConfig.setLedgerOffloader(pulsar.getManagedLedgerOffloader(namespace, offloadPolicies));
             }
 
-            managedLedgerConfig.setDeletionAtBatchIndexLevelEnabled(serviceConfig.isAcknowledgmentAtBatchIndexLevelEnabled());
-            managedLedgerConfig.setNewEntriesCheckDelayInMillis(serviceConfig.getManagedLedgerNewEntriesCheckDelayInMillis());
+            managedLedgerConfig.setDeletionAtBatchIndexLevelEnabled(
+                    serviceConfig.isAcknowledgmentAtBatchIndexLevelEnabled());
+            managedLedgerConfig.setNewEntriesCheckDelayInMillis(
+                    serviceConfig.getManagedLedgerNewEntriesCheckDelayInMillis());
 
 
             future.complete(managedLedgerConfig);
@@ -1424,7 +1446,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     }
 
     /**
-     * Iterates over all loaded topics in the broker
+     * Iterates over all loaded topics in the broker.
      */
     public void forEachTopic(Consumer<Topic> consumer) {
         topics.forEach((n, t) -> {
@@ -1509,13 +1531,15 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     }
 
     /**
-     * Unload all the topic served by the broker service under the given service unit
+     * Unload all the topic served by the broker service under the given service unit.
      *
      * @param serviceUnit
-     * @param closeWithoutWaitingClientDisconnect don't wait for clients to disconnect and forcefully close managed-ledger
+     * @param closeWithoutWaitingClientDisconnect don't wait for clients to disconnect
+     *                                           and forcefully close managed-ledger
      * @return
      */
-    private CompletableFuture<Integer> unloadServiceUnit(NamespaceBundle serviceUnit, boolean closeWithoutWaitingClientDisconnect) {
+    private CompletableFuture<Integer> unloadServiceUnit(NamespaceBundle serviceUnit,
+                                                         boolean closeWithoutWaitingClientDisconnect) {
         List<CompletableFuture<Void>> closeFutures = Lists.newArrayList();
         topics.forEach((name, topicFuture) -> {
             TopicName topicName = TopicName.get(name);
@@ -1523,7 +1547,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
                 // Topic needs to be unloaded
                 log.info("[{}] Unloading topic", topicName);
                 closeFutures.add(topicFuture
-                        .thenCompose(t -> t.isPresent() ? t.get().close(closeWithoutWaitingClientDisconnect) : CompletableFuture.completedFuture(null)));
+                        .thenCompose(t -> t.isPresent() ? t.get().close(closeWithoutWaitingClientDisconnect)
+                                : CompletableFuture.completedFuture(null)));
             }
         });
 
@@ -1725,10 +1750,12 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         // (3) Listener Registration
         // add listener on "maxConcurrentLookupRequest" value change
         registerConfigurationListener("maxConcurrentLookupRequest",
-                (maxConcurrentLookupRequest) -> lookupRequestSemaphore.set(new Semaphore((int) maxConcurrentLookupRequest, false)));
+                (maxConcurrentLookupRequest) -> lookupRequestSemaphore.set(
+                        new Semaphore((int) maxConcurrentLookupRequest, false)));
         // add listener on "maxConcurrentTopicLoadRequest" value change
         registerConfigurationListener("maxConcurrentTopicLoadRequest",
-                (maxConcurrentTopicLoadRequest) -> topicLoadRequestSemaphore.set(new Semaphore((int) maxConcurrentTopicLoadRequest, false)));
+                (maxConcurrentTopicLoadRequest) -> topicLoadRequestSemaphore.set(
+                        new Semaphore((int) maxConcurrentTopicLoadRequest, false)));
         registerConfigurationListener("loadManagerClassName", className -> {
             try {
                 final LoadManager newLoadManager = LoadManager.create(pulsar);
@@ -1762,31 +1789,35 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         });
 
         // add listener to update message-dispatch-rate in msg for replicator
-        registerConfigurationListener("dispatchThrottlingRatePerReplicatorInMsg", (dispatchRatePerTopicInMsg) -> {
-            updateReplicatorMessageDispatchRate();
-        });
+        registerConfigurationListener("dispatchThrottlingRatePerReplicatorInMsg",
+                (dispatchRatePerTopicInMsg) -> {
+                    updateReplicatorMessageDispatchRate();
+                });
         // add listener to update message-dispatch-rate in byte for replicator
-        registerConfigurationListener("dispatchThrottlingRatePerReplicatorInByte", (dispatchRatePerTopicInByte) -> {
-            updateReplicatorMessageDispatchRate();
-        });
+        registerConfigurationListener("dispatchThrottlingRatePerReplicatorInByte",
+                (dispatchRatePerTopicInByte) -> {
+                    updateReplicatorMessageDispatchRate();
+                });
 
         // add listener to notify broker publish-rate monitoring
-        registerConfigurationListener("brokerPublisherThrottlingTickTimeMillis", (publisherThrottlingTickTimeMillis) -> {
-            setupBrokerPublishRateLimiterMonitor();
-        });
+        registerConfigurationListener("brokerPublisherThrottlingTickTimeMillis",
+                (publisherThrottlingTickTimeMillis) -> {
+                    setupBrokerPublishRateLimiterMonitor();
+                });
         // add listener to notify broker publish-rate dynamic config
         registerConfigurationListener("brokerPublisherThrottlingMaxMessageRate",
-            (brokerPublisherThrottlingMaxMessageRate) ->
-                updateBrokerPublisherThrottlingMaxRate());
+                (brokerPublisherThrottlingMaxMessageRate) ->
+                        updateBrokerPublisherThrottlingMaxRate());
         registerConfigurationListener("brokerPublisherThrottlingMaxByteRate",
-            (brokerPublisherThrottlingMaxByteRate) ->
-                updateBrokerPublisherThrottlingMaxRate());
+                (brokerPublisherThrottlingMaxByteRate) ->
+                        updateBrokerPublisherThrottlingMaxRate());
 
         // add listener to notify topic publish-rate monitoring
         if (!preciseTopicPublishRateLimitingEnable) {
-            registerConfigurationListener("topicPublisherThrottlingTickTimeMillis", (publisherThrottlingTickTimeMillis) -> {
-                setupTopicPublishRateLimiterMonitor();
-            });
+            registerConfigurationListener("topicPublisherThrottlingTickTimeMillis",
+                    (publisherThrottlingTickTimeMillis) -> {
+                        setupTopicPublishRateLimiterMonitor();
+                    });
         }
 
         // add more listeners here
@@ -1879,7 +1910,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     /**
      * Allows a listener to listen on update of {@link ServiceConfiguration} change, so listener can take appropriate
      * action if any specific config-field value has been changed.
-     * </p>
+     *
      * On notification, listener should first check if config value has been changed and after taking appropriate
      * action, listener should update config value with new value if it has been changed (so, next time listener can
      * compare values on configMap change).
@@ -2081,8 +2112,9 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
 
     }
 
-    public CompletableFuture<PartitionedTopicMetadata> fetchPartitionedTopicMetadataCheckAllowAutoCreationAsync(TopicName topicName) {
-        if(pulsar.getNamespaceService() == null){
+    public CompletableFuture<PartitionedTopicMetadata> fetchPartitionedTopicMetadataCheckAllowAutoCreationAsync(
+            TopicName topicName) {
+        if (pulsar.getNamespaceService() == null) {
             return FutureUtil.failedFuture(new NamingException("namespace service is not ready"));
         }
         return pulsar.getNamespaceService().checkTopicExists(topicName)
@@ -2107,8 +2139,10 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     private CompletableFuture<PartitionedTopicMetadata> createDefaultPartitionedTopicAsync(TopicName topicName) {
         final int defaultNumPartitions = pulsar.getBrokerService().getDefaultNumPartitions(topicName);
         final int maxPartitions = pulsar().getConfig().getMaxNumPartitionsPerPartitionedTopic();
-        checkArgument(defaultNumPartitions > 0, "Default number of partitions should be more than 0");
-        checkArgument(maxPartitions <= 0 || defaultNumPartitions <= maxPartitions, "Number of partitions should be less than or equal to " + maxPartitions);
+        checkArgument(defaultNumPartitions > 0,
+                "Default number of partitions should be more than 0");
+        checkArgument(maxPartitions <= 0 || defaultNumPartitions <= maxPartitions,
+                "Number of partitions should be less than or equal to " + maxPartitions);
 
         PartitionedTopicMetadata configMetadata = new PartitionedTopicMetadata(defaultNumPartitions);
         CompletableFuture<PartitionedTopicMetadata> partitionedTopicFuture = futureWithDeadline();
@@ -2164,13 +2198,14 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         return topicOrderedExecutor;
     }
 
-    public ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, Topic>>> getMultiLayerTopicMap() {
+    public ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, Topic>>>
+    getMultiLayerTopicMap() {
         return multiLayerTopicsMap;
     }
 
     /**
      * If per-broker unacked message reached to limit then it blocks dispatcher if its unacked message limit has been
-     * reached to {@link #maxUnackedMsgsPerDispatcher}
+     * reached to {@link #maxUnackedMsgsPerDispatcher}.
      *
      * @param dispatcher
      * @param numberOfMessages
@@ -2235,8 +2270,9 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
             forEachTopic(topic -> {
                 topic.getSubscriptions().forEach((subName, persistentSubscription) -> {
                     if (persistentSubscription.getDispatcher() instanceof PersistentDispatcherMultipleConsumers) {
-                        PersistentDispatcherMultipleConsumers dispatcher = (PersistentDispatcherMultipleConsumers) persistentSubscription
-                                .getDispatcher();
+                        PersistentDispatcherMultipleConsumers dispatcher =
+                                (PersistentDispatcherMultipleConsumers) persistentSubscription
+                                        .getDispatcher();
                         int dispatcherUnAckMsgs = dispatcher.getTotalUnackedMessages();
                         if (dispatcherUnAckMsgs > maxUnackedMsgsPerDispatcher) {
                             log.info("[{}] Blocking dispatcher due to reached max broker limit {}",
@@ -2253,7 +2289,7 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     }
 
     /**
-     * Unblocks the dispatchers and removes it from the {@link #blockedDispatchers} list
+     * Unblocks the dispatchers and removes it from the {@link #blockedDispatchers} list.
      *
      * @param dispatcherList
      */
@@ -2386,7 +2422,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
             }
         } catch (Throwable t) {
             // Ignoring since if we don't have policies, we fallback on the default
-            log.warn("Got exception when reading autoTopicCreateOverride policy for {}: {};", topicName, t.getMessage(), t);
+            log.warn("Got exception when reading autoTopicCreateOverride policy for {}: {};",
+                    topicName, t.getMessage(), t);
             return null;
         }
         log.debug("No autoTopicCreateOverride policy found for {}", topicName);
@@ -2399,7 +2436,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
     }
 
     public boolean isAllowAutoSubscriptionCreation(final TopicName topicName) {
-        AutoSubscriptionCreationOverride autoSubscriptionCreationOverride = getAutoSubscriptionCreationOverride(topicName);
+        AutoSubscriptionCreationOverride autoSubscriptionCreationOverride =
+                getAutoSubscriptionCreationOverride(topicName);
         if (autoSubscriptionCreationOverride != null) {
             return autoSubscriptionCreationOverride.allowAutoSubscriptionCreation;
         } else {
@@ -2417,7 +2455,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
             }
         } catch (Throwable t) {
             // Ignoring since if we don't have policies, we fallback on the default
-            log.warn("Got exception when reading autoSubscriptionCreateOverride policy for {}: {};", topicName, t.getMessage(), t);
+            log.warn("Got exception when reading autoSubscriptionCreateOverride policy for {}: {};",
+                    topicName, t.getMessage(), t);
             return null;
         }
         log.debug("No autoSubscriptionCreateOverride policy found for {}", topicName);
@@ -2444,8 +2483,8 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
             log.warn("Topic {} policies cache have not init.", topicName.getPartitionedTopicName());
             return null;
         } catch (RestException | NullPointerException e) {
-            log.warn("Topic level policies are not enabled. " +
-                    "Please refer to systemTopicEnabled and topicLevelPoliciesEnabled on broker.conf");
+            log.warn("Topic level policies are not enabled. "
+                    + "Please refer to systemTopicEnabled and topicLevelPoliciesEnabled on broker.conf");
             return null;
         }
     }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java
index 75d8b39..8c391ef 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java
@@ -26,9 +26,7 @@ import org.apache.pulsar.transaction.common.exception.TransactionConflictExcepti
 import org.apache.pulsar.transaction.coordinator.exceptions.CoordinatorException;
 
 /**
- * Base type of exception thrown by Pulsar Broker Service
- *
- *
+ * Base type of exception thrown by Pulsar Broker Service.
  */
 @SuppressWarnings("serial")
 public class BrokerServiceException extends Exception {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java
index 2762748..cb25716 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java
@@ -60,7 +60,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * A Consumer is a consumer currently connected and associated with a Subscription
+ * A Consumer is a consumer currently connected and associated with a Subscription.
  */
 public class Consumer {
     private final Subscription subscription;
@@ -207,8 +207,10 @@ public class Consumer {
      *
      * @return a SendMessageInfo object that contains the detail of what was sent to consumer
      */
-    public Future<Void> sendMessages(final List<Entry> entries, EntryBatchSizes batchSizes, EntryBatchIndexesAcks batchIndexesAcks,
-               int totalMessages, long totalBytes, long totalChunkedMessages, RedeliveryTracker redeliveryTracker) {
+    public Future<Void> sendMessages(final List<Entry> entries, EntryBatchSizes batchSizes,
+                                     EntryBatchIndexesAcks batchIndexesAcks,
+                                     int totalMessages, long totalBytes, long totalChunkedMessages,
+                                     RedeliveryTracker redeliveryTracker) {
         this.lastConsumedTimestamp = System.currentTimeMillis();
 
         if (entries.isEmpty() || totalMessages == 0) {
@@ -240,8 +242,8 @@ public class Consumer {
 
         // calculate avg message per entry
         int tmpAvgMessagesPerEntry = AVG_MESSAGES_PER_ENTRY.get(this);
-        tmpAvgMessagesPerEntry = (int) Math.round(tmpAvgMessagesPerEntry * avgPercent +
-                    (1 - avgPercent) * totalMessages / entries.size());
+        tmpAvgMessagesPerEntry = (int) Math.round(tmpAvgMessagesPerEntry * avgPercent
+                + (1 - avgPercent) * totalMessages / entries.size());
         AVG_MESSAGES_PER_ENTRY.set(this, tmpAvgMessagesPerEntry);
 
         // reduce permit and increment unackedMsg count with total number of messages in batch-msgs
@@ -311,7 +313,7 @@ public class Consumer {
 
     public CompletableFuture<Void> messageAcked(CommandAck ack) {
         this.lastAckedTimestamp = System.currentTimeMillis();
-        Map<String,Long> properties = Collections.emptyMap();
+        Map<String, Long> properties = Collections.emptyMap();
         if (ack.getPropertiesCount() > 0) {
             properties = ack.getPropertiesList().stream()
                 .collect(Collectors.toMap(PulsarApi.KeyLongValue::getKey,
@@ -324,20 +326,23 @@ public class Consumer {
             }
 
             if (Subscription.isIndividualAckMode(subType)) {
-                log.warn("[{}] [{}] Received cumulative ack on shared subscription, ignoring", subscription, consumerId);
+                log.warn("[{}] [{}] Received cumulative ack on shared subscription, ignoring",
+                        subscription, consumerId);
             }
             PositionImpl position = PositionImpl.earliest;
             if (ack.getMessageIdCount() == 1) {
                 MessageIdData msgId = ack.getMessageId(0);
                 if (msgId.getAckSetCount() > 0) {
-                    position = PositionImpl.get(msgId.getLedgerId(), msgId.getEntryId(), SafeCollectionUtils.longListToArray(msgId.getAckSetList()));
+                    position = PositionImpl.get(msgId.getLedgerId(), msgId.getEntryId(),
+                            SafeCollectionUtils.longListToArray(msgId.getAckSetList()));
                 } else {
                     position = PositionImpl.get(msgId.getLedgerId(), msgId.getEntryId());
                 }
             }
             if (ack.hasTxnidMostBits() && ack.hasTxnidLeastBits()) {
                 List<PositionImpl> positionsAcked = Collections.singletonList(position);
-                return transactionCumulativeAcknowledge(ack.getTxnidMostBits(), ack.getTxnidLeastBits(), positionsAcked);
+                return transactionCumulativeAcknowledge(ack.getTxnidMostBits(),
+                        ack.getTxnidLeastBits(), positionsAcked);
             } else {
                 List<Position> positionsAcked = Collections.singletonList(position);
                 subscription.acknowledgeMessage(positionsAcked, AckType.Cumulative, properties);
@@ -353,7 +358,7 @@ public class Consumer {
     }
 
     //this method is for individual ack not carry the transaction
-    private CompletableFuture<Void> individualAckNormal(CommandAck ack, Map<String,Long> properties) {
+    private CompletableFuture<Void> individualAckNormal(CommandAck ack, Map<String, Long> properties) {
         List<Position> positionsAcked = new ArrayList<>();
         List<PositionImpl> checkBatchPositions = null;
         for (int i = 0; i < ack.getMessageIdCount(); i++) {
@@ -640,7 +645,8 @@ public class Consumer {
         Consumer ackOwnedConsumer = null;
         if (pendingAcks.get(position.getLedgerId(), position.getEntryId()) == null) {
             for (Consumer consumer : subscription.getConsumers()) {
-                if (!consumer.equals(this) && consumer.getPendingAcks().containsKey(position.getLedgerId(), position.getEntryId())) {
+                if (!consumer.equals(this) && consumer.getPendingAcks().containsKey(position.getLedgerId(),
+                        position.getEntryId())) {
                     ackOwnedConsumer = consumer;
                     break;
                 }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Dispatcher.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Dispatcher.java
index 9db773a..b3f3406 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Dispatcher.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Dispatcher.java
@@ -33,7 +33,7 @@ public interface Dispatcher {
     void removeConsumer(Consumer consumer) throws BrokerServiceException;
 
     /**
-     * Indicates that this consumer is now ready to receive more messages
+     * Indicates that this consumer is now ready to receive more messages.
      *
      * @param consumer
      */
@@ -46,7 +46,7 @@ public interface Dispatcher {
     boolean canUnsubscribe(Consumer consumer);
 
     /**
-     * mark dispatcher closed to stop new incoming requests and disconnect all consumers
+     * mark dispatcher closed to stop new incoming requests and disconnect all consumers.
      *
      * @return
      */
@@ -55,12 +55,12 @@ public interface Dispatcher {
     boolean isClosed();
 
     /**
-     * Disconnect active consumers
+     * Disconnect active consumers.
      */
     CompletableFuture<Void> disconnectActiveConsumers(boolean isResetCursor);
 
     /**
-     * disconnect all consumers
+     * disconnect all consumers.
      *
      * @return
      */
@@ -73,7 +73,7 @@ public interface Dispatcher {
     void resetCloseFuture();
 
     /**
-     * mark dispatcher open to serve new incoming requests
+     * mark dispatcher open to serve new incoming requests.
      */
     void reset();
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeAutoSplitStickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeAutoSplitStickyKeyConsumerSelector.java
index 4f5afba..e1cc2b8 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeAutoSplitStickyKeyConsumerSelector.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeAutoSplitStickyKeyConsumerSelector.java
@@ -156,7 +156,9 @@ public class HashRangeAutoSplitStickyKeyConsumerSelector implements StickyKeyCon
     }
 
     private boolean is2Power(int num) {
-        if(num < 2) return false;
+        if (num < 2) {
+            return false;
+        }
         return (num & num - 1) == 0;
     }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeExclusiveStickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeExclusiveStickyKeyConsumerSelector.java
index 87a4c5b..bec93cc 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeExclusiveStickyKeyConsumerSelector.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeExclusiveStickyKeyConsumerSelector.java
@@ -122,11 +122,13 @@ public class HashRangeExclusiveStickyKeyConsumerSelector implements StickyKeyCon
             Map.Entry<Integer, Consumer> floorEntry = rangeMap.floorEntry(intRange.getEnd());
 
             if (floorEntry != null && floorEntry.getKey() >= intRange.getStart()) {
-                throw new BrokerServiceException.ConsumerAssignException("Range conflict with consumer " + floorEntry.getValue());
+                throw new BrokerServiceException.ConsumerAssignException("Range conflict with consumer "
+                        + floorEntry.getValue());
             }
 
             if (ceilingEntry != null && ceilingEntry.getKey() <= intRange.getEnd()) {
-                throw new BrokerServiceException.ConsumerAssignException("Range conflict with consumer " + ceilingEntry.getValue());
+                throw new BrokerServiceException.ConsumerAssignException("Range conflict with consumer "
+                        + ceilingEntry.getValue());
             }
 
             if (ceilingEntry != null && floorEntry != null && ceilingEntry.getValue().equals(floorEntry.getValue())) {
@@ -135,7 +137,8 @@ public class HashRangeExclusiveStickyKeyConsumerSelector implements StickyKeyCon
                     int start = Math.max(intRange.getStart(), range.getStart());
                     int end = Math.min(intRange.getEnd(), range.getEnd());
                     if (end >= start) {
-                        throw new BrokerServiceException.ConsumerAssignException("Range conflict with consumer " + ceilingEntry.getValue());
+                        throw new BrokerServiceException.ConsumerAssignException("Range conflict with consumer "
+                                + ceilingEntry.getValue());
                     }
                 }
             }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/InMemoryRedeliveryTracker.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/InMemoryRedeliveryTracker.java
index c851576..92df7b3 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/InMemoryRedeliveryTracker.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/InMemoryRedeliveryTracker.java
@@ -41,7 +41,7 @@ public class InMemoryRedeliveryTracker implements RedeliveryTracker {
     public int getRedeliveryCount(Position position) {
         PositionImpl positionImpl = (PositionImpl) position;
         LongPair count = trackerCache.get(positionImpl.getLedgerId(), positionImpl.getEntryId());
-        return (int) (count!=null ? count.first : 0);
+        return (int) (count != null ? count.first : 0);
     }
 
     @Override
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PrecisPublishLimiter.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PrecisPublishLimiter.java
index 6e8b3de..4db6bf2 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PrecisPublishLimiter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PrecisPublishLimiter.java
@@ -78,7 +78,8 @@ public class PrecisPublishLimiter implements PublishRateLimiter {
             this.publishMaxMessageRate = Math.max(maxPublishRate.publishThrottlingRateInMsg, 0);
             this.publishMaxByteRate = Math.max(maxPublishRate.publishThrottlingRateInByte, 0);
             if (this.publishMaxMessageRate > 0) {
-                topicPublishRateLimiterOnMessage = new RateLimiter(publishMaxMessageRate, 1, TimeUnit.SECONDS, rateLimitFunction);
+                topicPublishRateLimiterOnMessage =
+                        new RateLimiter(publishMaxMessageRate, 1, TimeUnit.SECONDS, rateLimitFunction);
             }
             if (this.publishMaxByteRate > 0) {
                 topicPublishRateLimiterOnByte = new RateLimiter(publishMaxByteRate, 1, TimeUnit.SECONDS);
@@ -94,7 +95,7 @@ public class PrecisPublishLimiter implements PublishRateLimiter {
 
     @Override
     public boolean tryAcquire(int numbers, long bytes) {
-        return (topicPublishRateLimiterOnMessage == null || topicPublishRateLimiterOnMessage.tryAcquire(numbers)) &&
-                (topicPublishRateLimiterOnByte == null || topicPublishRateLimiterOnByte.tryAcquire(bytes));
+        return (topicPublishRateLimiterOnMessage == null || topicPublishRateLimiterOnMessage.tryAcquire(numbers))
+                && (topicPublishRateLimiterOnByte == null || topicPublishRateLimiterOnByte.tryAcquire(bytes));
     }
 }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Producer.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Producer.java
index 21a9cd1..c69f9ba 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Producer.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Producer.java
@@ -56,7 +56,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Represents a currently connected producer
+ * Represents a currently connected producer.
  */
 public class Producer {
     private final Topic topic;
@@ -185,7 +185,8 @@ public class Producer {
 
         if (!verifyChecksum(headersAndPayload)) {
             cnx.execute(() -> {
-                cnx.getCommandSender().sendSendError(producerId, sequenceId, ServerError.ChecksumError, "Checksum failed on the broker");
+                cnx.getCommandSender().sendSendError(producerId, sequenceId, ServerError.ChecksumError,
+                        "Checksum failed on the broker");
                 cnx.completedSendOperation(isNonPersistentTopic, headersAndPayload.readableBytes());
             });
             return false;
@@ -216,13 +217,16 @@ public class Producer {
 
     private void publishMessageToTopic(ByteBuf headersAndPayload, long sequenceId, long batchSize, boolean isChunked) {
         topic.publishMessage(headersAndPayload,
-                MessagePublishContext.get(this, sequenceId, msgIn, headersAndPayload.readableBytes(), batchSize,
+                MessagePublishContext.get(this, sequenceId, msgIn,
+                        headersAndPayload.readableBytes(), batchSize,
                         isChunked, System.nanoTime()));
     }
 
-    private void publishMessageToTopic(ByteBuf headersAndPayload, long lowestSequenceId, long highestSequenceId, long batchSize, boolean isChunked) {
+    private void publishMessageToTopic(ByteBuf headersAndPayload, long lowestSequenceId, long highestSequenceId,
+                                       long batchSize, boolean isChunked) {
         topic.publishMessage(headersAndPayload,
-                MessagePublishContext.get(this, lowestSequenceId, highestSequenceId, msgIn, headersAndPayload.readableBytes(), batchSize,
+                MessagePublishContext.get(this, lowestSequenceId,
+                        highestSequenceId, msgIn, headersAndPayload.readableBytes(), batchSize,
                         isChunked, System.nanoTime()));
     }
 
@@ -280,7 +284,8 @@ public class Producer {
     }
 
     /**
-     * Return the sequence id of
+     * Return the sequence id of.
+     *
      * @return the sequence id
      */
     public long getLastSequenceId() {
@@ -361,7 +366,7 @@ public class Producer {
         }
 
         /**
-         * Executed from managed ledger thread when the message is persisted
+         * Executed from managed ledger thread when the message is persisted.
          */
         @Override
         public void completed(Exception exception, long ledgerId, long entryId) {
@@ -405,7 +410,7 @@ public class Producer {
         }
 
         /**
-         * Executed from I/O thread when sending receipt back to client
+         * Executed from I/O thread when sending receipt back to client.
          */
         @Override
         public void run() {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PublishRateLimiter.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PublishRateLimiter.java
index b121cda..ec23b26 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PublishRateLimiter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PublishRateLimiter.java
@@ -65,9 +65,10 @@ public interface PublishRateLimiter {
     void update(PublishRate maxPublishRate);
 
     /**
-     * try to acquire permit
+     * try to acquire permit.
+     *
      * @param numbers
      * @param bytes
-     * */
+     */
     boolean tryAcquire(int numbers, long bytes);
 }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSender.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSender.java
index d1ad3d3..fd841ad 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSender.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSender.java
@@ -19,10 +19,8 @@
 package org.apache.pulsar.broker.service;
 
 import io.netty.util.concurrent.Future;
-
 import java.util.List;
 import java.util.Optional;
-
 import org.apache.bookkeeper.mledger.Entry;
 import org.apache.pulsar.common.api.proto.PulsarApi;
 import org.apache.pulsar.common.protocol.schema.SchemaVersion;
@@ -61,7 +59,8 @@ public interface PulsarCommandSender {
     void sendConnectedResponse(int clientProtocolVersion, int maxMessageSize);
 
     void sendLookupResponse(String brokerServiceUrl, String brokerServiceUrlTls, boolean authoritative,
-                            PulsarApi.CommandLookupTopicResponse.LookupType response, long requestId, boolean proxyThroughServiceUrl);
+                            PulsarApi.CommandLookupTopicResponse.LookupType response, long requestId,
+                            boolean proxyThroughServiceUrl);
 
     void sendLookupResponse(PulsarApi.ServerError error, String errorMsg, long requestId);
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSenderImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSenderImpl.java
index ad0b828..49352f2 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSenderImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarCommandSenderImpl.java
@@ -22,12 +22,9 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelPromise;
-
 import java.util.List;
 import java.util.Optional;
-
 import lombok.extern.slf4j.Slf4j;
-
 import org.apache.bookkeeper.mledger.Entry;
 import org.apache.bookkeeper.mledger.impl.PositionImpl;
 import org.apache.pulsar.broker.intercept.BrokerInterceptor;
@@ -176,7 +173,8 @@ public class PulsarCommandSenderImpl implements PulsarCommandSender {
 
     @Override
     public void sendGetOrCreateSchemaErrorResponse(long requestId, PulsarApi.ServerError error, String errorMessage) {
-        PulsarApi.BaseCommand command = Commands.newGetOrCreateSchemaResponseErrorCommand(requestId, error, errorMessage);
+        PulsarApi.BaseCommand command =
+                Commands.newGetOrCreateSchemaResponseErrorCommand(requestId, error, errorMessage);
         safeIntercept(command, cnx);
         ByteBuf outBuf = Commands.serializeWithSize(command);
         command.getGetOrCreateSchemaResponse().recycle();
@@ -196,7 +194,8 @@ public class PulsarCommandSenderImpl implements PulsarCommandSender {
 
     @Override
     public void sendLookupResponse(String brokerServiceUrl, String brokerServiceUrlTls, boolean authoritative,
-                                   PulsarApi.CommandLookupTopicResponse.LookupType response, long requestId, boolean proxyThroughServiceUrl) {
+                                   PulsarApi.CommandLookupTopicResponse.LookupType response,
+                                   long requestId, boolean proxyThroughServiceUrl) {
         PulsarApi.BaseCommand command = Commands.newLookupResponseCommand(brokerServiceUrl, brokerServiceUrlTls,
                 authoritative, response, requestId, proxyThroughServiceUrl);
         safeIntercept(command, cnx);
@@ -279,7 +278,8 @@ public class PulsarCommandSenderImpl implements PulsarCommandSender {
                         .build();
 
                 ByteBuf metadataAndPayload = entry.getDataBuffer();
-                // increment ref-count of data and release at the end of process: so, we can get chance to call entry.release
+                // increment ref-count of data and release at the end of process:
+                // so, we can get chance to call entry.release
                 metadataAndPayload.retain();
                 // skip checksum by incrementing reader-index if consumer-client doesn't support checksum verification
                 if (cnx.getRemoteEndpointProtocolVersion() < ProtocolVersion.v11.getNumber()) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarStats.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarStats.java
index 5b350d2..5ebabb5 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarStats.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/PulsarStats.java
@@ -92,7 +92,8 @@ public class PulsarStats implements Closeable {
     }
 
     public synchronized void updateStats(
-            ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, Topic>>> topicsMap) {
+            ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, ConcurrentOpenHashMap<String, Topic>>>
+                    topicsMap) {
 
         StatsOutputStream topicStatsStream = new StatsOutputStream(tempTopicStatsBuf);
 
@@ -131,12 +132,13 @@ public class PulsarStats implements Closeable {
                                     topic.updateRates(nsStats, currentBundleStats, topicStatsStream,
                                             clusterReplicationMetrics, namespaceName, exposePublisherStats);
                                 } catch (Exception e) {
-                                    log.error("Failed to generate topic stats for topic {}: {}", name, e.getMessage(), e);
+                                    log.error("Failed to generate topic stats for topic {}: {}",
+                                            name, e.getMessage(), e);
                                 }
                                 // this task: helps to activate inactive-backlog-cursors which have caught up and
                                 // connected, also deactivate active-backlog-cursors which has backlog
-                                ((PersistentTopic) topic).checkBackloggedCursors();
-                            }else if (topic instanceof NonPersistentTopic) {
+                                topic.checkBackloggedCursors();
+                            } else if (topic instanceof NonPersistentTopic) {
                                 tempNonPersistentTopics.add((NonPersistentTopic) topic);
                             } else {
                                 log.warn("Unsupported type of topic {}", topic.getClass().getName());
@@ -145,15 +147,16 @@ public class PulsarStats implements Closeable {
                         // end persistent topics section
                         topicStatsStream.endObject();
 
-                        if(!tempNonPersistentTopics.isEmpty()) {
-                         // start non-persistent topic
+                        if (!tempNonPersistentTopics.isEmpty()) {
+                            // start non-persistent topic
                             topicStatsStream.startObject("non-persistent");
                             tempNonPersistentTopics.forEach(topic -> {
                                 try {
                                     topic.updateRates(nsStats, currentBundleStats, topicStatsStream,
                                             clusterReplicationMetrics, namespaceName, exposePublisherStats);
                                 } catch (Exception e) {
-                                    log.error("Failed to generate topic stats for topic {}: {}", topic.getName(), e.getMessage(), e);
+                                    log.error("Failed to generate topic stats for topic {}: {}",
+                                            topic.getName(), e.getMessage(), e);
                                 }
                             });
                             // end non-persistent topics section
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java
index ed8c445..125a801 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java
@@ -156,7 +156,7 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
     private final String replicatorPrefix;
     private String clientVersion = null;
     private int nonPersistentPendingMessages = 0;
-    private final int MaxNonPersistentPendingMessages;
+    private final int maxNonPersistentPendingMessages;
     private String originalPrincipal = null;
     private Set<String> proxyRoles;
     private boolean authenticateOriginalAuthData;
@@ -192,7 +192,7 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         this.producers = new ConcurrentLongHashMap<>(8, 1);
         this.consumers = new ConcurrentLongHashMap<>(8, 1);
         this.replicatorPrefix = service.pulsar().getConfiguration().getReplicatorPrefix();
-        this.MaxNonPersistentPendingMessages = service.pulsar().getConfiguration()
+        this.maxNonPersistentPendingMessages = service.pulsar().getConfiguration()
                 .getMaxConcurrentNonPersistentMessagePerConnection();
         this.proxyRoles = service.pulsar().getConfiguration().getProxyRoles();
         this.authenticateOriginalAuthData = service.pulsar().getConfiguration().isAuthenticateOriginalAuthData();
@@ -271,14 +271,16 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
     }
 
     /*
-     * If authentication and authorization is enabled(and not sasl) and if the authRole is one of proxyRoles we want to enforce
+     * If authentication and authorization is enabled(and not sasl) and
+     *  if the authRole is one of proxyRoles we want to enforce
      * - the originalPrincipal is given while connecting
      * - originalPrincipal is not blank
      * - originalPrincipal is not a proxy principal
      */
     private boolean invalidOriginalPrincipal(String originalPrincipal) {
         return (service.isAuthenticationEnabled() && service.isAuthorizationEnabled()
-            && proxyRoles.contains(authRole) && (StringUtils.isBlank(originalPrincipal) || proxyRoles.contains(originalPrincipal)));
+                && proxyRoles.contains(authRole) && (StringUtils.isBlank(originalPrincipal)
+                || proxyRoles.contains(originalPrincipal)));
     }
 
     // ////
@@ -304,17 +306,18 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         return isProxyAuthorizedFuture.thenCombine(isAuthorizedFuture, (isProxyAuthorized, isAuthorized) -> {
             if (!isProxyAuthorized) {
                 log.warn("OriginalRole {} is not authorized to perform operation {} on topic {}",
-                    originalPrincipal, operation, topicName);
+                        originalPrincipal, operation, topicName);
             }
             if (!isAuthorized) {
                 log.warn("Role {} is not authorized to perform operation {} on topic {}",
-                    authRole, operation, topicName);
+                        authRole, operation, topicName);
             }
             return isProxyAuthorized && isAuthorized;
         });
     }
 
-    private CompletableFuture<Boolean> isTopicOperationAllowed(TopicName topicName, String subscriptionName, TopicOperation operation) {
+    private CompletableFuture<Boolean> isTopicOperationAllowed(TopicName topicName, String subscriptionName,
+                                                               TopicOperation operation) {
         CompletableFuture<Boolean> isProxyAuthorizedFuture;
         CompletableFuture<Boolean> isAuthorizedFuture;
         if (service.isAuthorizationEnabled()) {
@@ -442,7 +445,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                                     if (ex instanceof PulsarClientException) {
                                         log.warn("Failed to authorize {} at [{}] on topic {} : {}", getRole(),
                                                 remoteAddress, topicName, ex.getMessage());
-                                        commandSender.sendPartitionMetadataResponse(ServerError.AuthorizationError, ex.getMessage(), requestId);
+                                        commandSender.sendPartitionMetadataResponse(ServerError.AuthorizationError,
+                                                ex.getMessage(), requestId);
                                     } else {
                                         log.warn("Failed to get Partitioned Metadata [{}] {}: {}", remoteAddress,
                                                 topicName, ex.getMessage(), ex);
@@ -467,7 +471,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
             }).exceptionally(ex -> {
                 final String msg = "Exception occurred while trying to authorize get Partition Metadata";
                 log.warn("[{}] {} with role {} on topic {}", remoteAddress, msg, getPrincipal(), topicName);
-                ctx.writeAndFlush(Commands.newPartitionMetadataResponse(ServerError.AuthorizationError, msg, requestId));
+                ctx.writeAndFlush(Commands.newPartitionMetadataResponse(ServerError.AuthorizationError, msg,
+                        requestId));
                 lookupSemaphore.release();
                 return null;
             });
@@ -495,7 +500,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
 
         if (consumer == null) {
             log.error(
-                    "Failed to get consumer-stats response - Consumer not found for CommandConsumerStats[remoteAddress = {}, requestId = {}, consumerId = {}]",
+                    "Failed to get consumer-stats response - Consumer not found for"
+                            + " CommandConsumerStats[remoteAddress = {}, requestId = {}, consumerId = {}]",
                     remoteAddress, requestId, consumerId);
             msg = Commands.newConsumerStatsResponse(ServerError.ConsumerNotFound,
                     "Consumer " + consumerId + " not found", requestId);
@@ -619,22 +625,26 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
             return;
         } else if (originalPrincipal != null && originalAuthState == null) {
             log.info(
-                    "[{}] Cannot revalidate user credential when using proxy and not forwarding the credentials. Closing connection",
+                    "[{}] Cannot revalidate user credential when using proxy and"
+                            + " not forwarding the credentials. Closing connection",
                     remoteAddress);
             return;
         }
 
         ctx.executor().execute(SafeRun.safeRun(() -> {
-            log.info("[{}] Refreshing authentication credentials for originalPrincipal {} and authRole {}", remoteAddress, originalPrincipal, this.authRole);
+            log.info("[{}] Refreshing authentication credentials for originalPrincipal {} and authRole {}",
+                    remoteAddress, originalPrincipal, this.authRole);
 
             if (!supportsAuthenticationRefresh()) {
-                log.warn("[{}] Closing connection because client doesn't support auth credentials refresh", remoteAddress);
+                log.warn("[{}] Closing connection because client doesn't support auth credentials refresh",
+                        remoteAddress);
                 ctx.close();
                 return;
             }
 
             if (pendingAuthChallengeResponse) {
-                log.warn("[{}] Closing connection after timeout on refreshing auth credentials", remoteAddress);
+                log.warn("[{}] Closing connection after timeout on refreshing auth credentials",
+                        remoteAddress);
                 ctx.close();
                 return;
             }
@@ -741,8 +751,9 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                         .getAuthenticationProvider(originalAuthMethod);
 
                 if (originalAuthenticationProvider == null) {
-                    throw new AuthenticationException(String.format("Can't find AuthenticationProvider for original role" +
-                            " using auth method [%s] is not available", originalAuthMethod));
+                    throw new AuthenticationException(
+                            String.format("Can't find AuthenticationProvider for original role"
+                                    + " using auth method [%s] is not available", originalAuthMethod));
                 }
 
                 originalAuthState = originalAuthenticationProvider.newAuthState(
@@ -840,20 +851,23 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                 ? subscribe.getStartMessageRollbackDurationSec()
                 : -1;
         final SchemaData schema = subscribe.hasSchema() ? getSchema(subscribe.getSchema()) : null;
-        final boolean isReplicated = subscribe.hasReplicateSubscriptionState() && subscribe.getReplicateSubscriptionState();
+        final boolean isReplicated = subscribe.hasReplicateSubscriptionState()
+                && subscribe.getReplicateSubscriptionState();
         final boolean forceTopicCreation = subscribe.getForceTopicCreation();
-        final PulsarApi.KeySharedMeta keySharedMeta = subscribe.hasKeySharedMeta() ? subscribe.getKeySharedMeta() : null;
+        final PulsarApi.KeySharedMeta keySharedMeta = subscribe.hasKeySharedMeta()
+                ? subscribe.getKeySharedMeta() : null;
 
         CompletableFuture<Boolean> isAuthorizedFuture = isTopicOperationAllowed(
-            topicName,
-            subscriptionName,
-            TopicOperation.CONSUME
+                topicName,
+                subscriptionName,
+                TopicOperation.CONSUME
         );
         isAuthorizedFuture.thenApply(isAuthorized -> {
-                    if (isAuthorized) {
-                        if (log.isDebugEnabled()) {
-                            log.debug("[{}] Client is authorized to subscribe with role {}", remoteAddress, getPrincipal());
-                        }
+            if (isAuthorized) {
+                if (log.isDebugEnabled()) {
+                    log.debug("[{}] Client is authorized to subscribe with role {}",
+                            remoteAddress, getPrincipal());
+                }
 
                         log.info("[{}] Subscribing on topic {} / {}", remoteAddress, topicName, subscriptionName);
                         try {
@@ -880,12 +894,12 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                                 // client timeout is lower the broker timeouts. We need to wait until the previous
                                 // consumer
                                 // creation request either complete or fails.
-                                log.warn("[{}][{}][{}] Consumer with id {} is already present on the connection", remoteAddress,
-                                        topicName, subscriptionName, consumerId);
+                                log.warn("[{}][{}][{}] Consumer with id {} is already present on the connection",
+                                        remoteAddress, topicName, subscriptionName, consumerId);
                                 ServerError error = null;
-                                if(!existingConsumerFuture.isDone()) {
+                                if (!existingConsumerFuture.isDone()) {
                                     error = ServerError.ServiceNotReady;
-                                }else {
+                                } else {
                                     error = getErrorCode(existingConsumerFuture);
                                     consumers.remove(consumerId);
                                 }
@@ -913,15 +927,19 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
 
                                     if (rejectSubscriptionIfDoesNotExist) {
                                         return FutureUtil
-                                            .failedFuture(new SubscriptionNotFoundException("Subscription does not exist"));
+                                                .failedFuture(
+                                                        new SubscriptionNotFoundException(
+                                                                "Subscription does not exist"));
                                     }
 
                                     if (schema != null) {
                                         return topic.addSchemaIfIdleOrCheckCompatible(schema)
-                                            .thenCompose(v -> topic.subscribe(ServerCnx.this, subscriptionName, consumerId,
-                                                    subType, priorityLevel, consumerName, isDurable,
-                                                    startMessageId, metadata,
-                                                    readCompacted, initialPosition, startMessageRollbackDurationSec, isReplicated, keySharedMeta));
+                                                .thenCompose(v -> topic.subscribe(
+                                                        ServerCnx.this, subscriptionName, consumerId,
+                                                        subType, priorityLevel, consumerName, isDurable,
+                                                        startMessageId, metadata,
+                                                        readCompacted, initialPosition, startMessageRollbackDurationSec,
+                                                        isReplicated, keySharedMeta));
                                     } else {
                                         return topic.subscribe(ServerCnx.this, subscriptionName, consumerId,
                                             subType, priorityLevel, consumerName, isDurable,
@@ -931,8 +949,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                                 })
                                 .thenAccept(consumer -> {
                                     if (consumerFuture.complete(consumer)) {
-                                        log.info("[{}] Created subscription on topic {} / {}", remoteAddress, topicName,
-                                                subscriptionName);
+                                        log.info("[{}] Created subscription on topic {} / {}",
+                                                remoteAddress, topicName, subscriptionName);
                                         commandSender.sendSuccessResponse(requestId);
                                     } else {
                                         // The consumer future was completed before by a close command
@@ -942,7 +960,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                                                     remoteAddress, consumer);
                                         } catch (BrokerServiceException e) {
                                             log.warn(
-                                                    "[{}] Error closing consumer created after timeout on client side {}: {}",
+                                                    "[{}] Error closing consumer created"
+                                                            + " after timeout on client side {}: {}",
                                                     remoteAddress, consumer, e.getMessage());
                                         }
                                         consumers.remove(consumerId, consumerFuture);
@@ -953,7 +972,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                                     if (exception.getCause() instanceof ConsumerBusyException) {
                                         if (log.isDebugEnabled()) {
                                             log.debug(
-                                                    "[{}][{}][{}] Failed to create consumer because exclusive consumer is already connected: {}",
+                                                    "[{}][{}][{}] Failed to create consumer because exclusive consumer"
+                                                            + " is already connected: {}",
                                                     remoteAddress, topicName, subscriptionName,
                                                     exception.getCause().getMessage());
                                         }
@@ -1026,7 +1046,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         final SchemaData schema = cmdProducer.hasSchema() ? getSchema(cmdProducer.getSchema()) : null;
 
         final ProducerAccessMode producerAccessMode = cmdProducer.getProducerAccessMode();
-        final Optional<Long> topicEpoch = cmdProducer.hasTopicEpoch() ? Optional.of(cmdProducer.getTopicEpoch()) : Optional.empty();
+        final Optional<Long> topicEpoch = cmdProducer.hasTopicEpoch()
+                ? Optional.of(cmdProducer.getTopicEpoch()) : Optional.empty();
 
         TopicName topicName = validateTopicName(cmdProducer.getTopic(), requestId, cmdProducer);
         if (topicName == null) {
@@ -1047,7 +1068,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         isAuthorizedFuture.thenApply(isAuthorized -> {
                     if (isAuthorized) {
                         if (log.isDebugEnabled()) {
-                            log.debug("[{}] Client is authorized to Produce with role {}", remoteAddress, getPrincipal());
+                            log.debug("[{}] Client is authorized to Produce with role {}",
+                                    remoteAddress, getPrincipal());
                         }
                         CompletableFuture<Producer> producerFuture = new CompletableFuture<>();
                         CompletableFuture<Producer> existingProducerFuture = producers.putIfAbsent(producerId,
@@ -1070,15 +1092,15 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                                 // request
                                 // either complete or fails.
                                 ServerError error = null;
-                                if(!existingProducerFuture.isDone()) {
+                                if (!existingProducerFuture.isDone()) {
                                     error = ServerError.ServiceNotReady;
                                 } else {
                                     error = getErrorCode(existingProducerFuture);
                                     // remove producer with producerId as it's already completed with exception
                                     producers.remove(producerId);
                                 }
-                                log.warn("[{}][{}] Producer with id {} is already present on the connection", remoteAddress,
-                                        producerId, topicName);
+                                log.warn("[{}][{}] Producer with id {} is already present on the connection",
+                                        remoteAddress, producerId, topicName);
                                 commandSender.sendErrorResponse(requestId, error,
                                         "Producer is already present on the connection");
                                 return null;
@@ -1095,7 +1117,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                                         "Cannot create producer on topic with backlog quota exceeded");
                                 BacklogQuota.RetentionPolicy retentionPolicy = topic.getBacklogQuota().getPolicy();
                                 if (retentionPolicy == BacklogQuota.RetentionPolicy.producer_request_hold) {
-                                    commandSender.sendErrorResponse(requestId, ServerError.ProducerBlockedQuotaExceededError,
+                                    commandSender.sendErrorResponse(requestId,
+                                            ServerError.ProducerBlockedQuotaExceededError,
                                             illegalStateException.getMessage());
                                 } else if (retentionPolicy == BacklogQuota.RetentionPolicy.producer_exception) {
                                     commandSender.sendErrorResponse(requestId,
@@ -1129,34 +1152,39 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                             });
 
                             schemaVersionFuture.thenAccept(schemaVersion -> {
-                                Producer producer = new Producer(topic, ServerCnx.this, producerId, producerName, getPrincipal(),
-                                    isEncrypted, metadata, schemaVersion, epoch, userProvidedProducerName, producerAccessMode, topicEpoch);
-
-                                    topic.addProducer(producer).thenAccept(newTopicEpoch -> {
-                                        if (isActive()) {
-                                            if (producerFuture.complete(producer)) {
-                                                log.info("[{}] Created new producer: {}", remoteAddress, producer);
-                                                commandSender.sendProducerSuccessResponse(requestId, producerName,
-                                                        producer.getLastSequenceId(), producer.getSchemaVersion(), newTopicEpoch);
-                                                return;
-                                            } else {
-                                                // The producer's future was completed before by
-                                                // a close command
-                                                producer.closeNow(true);
-                                                log.info("[{}] Cleared producer created after timeout on client side {}",
+                                Producer producer = new Producer(topic, ServerCnx.this, producerId, producerName,
+                                        getPrincipal(), isEncrypted, metadata, schemaVersion, epoch,
+                                        userProvidedProducerName, producerAccessMode, topicEpoch);
+
+                                topic.addProducer(producer).thenAccept(newTopicEpoch -> {
+                                    if (isActive()) {
+                                        if (producerFuture.complete(producer)) {
+                                            log.info("[{}] Created new producer: {}", remoteAddress, producer);
+                                            commandSender.sendProducerSuccessResponse(requestId, producerName,
+                                                    producer.getLastSequenceId(), producer.getSchemaVersion(),
+                                                    newTopicEpoch);
+                                            return;
+                                        } else {
+                                            // The producer's future was completed before by
+                                            // a close command
+                                            producer.closeNow(true);
+                                            log.info("[{}] Cleared producer created after"
+                                                            + " timeout on client side {}",
                                                     remoteAddress, producer);
-                                            }
+                                        }
                                         } else {
                                             producer.closeNow(true);
-                                            log.info("[{}] Cleared producer created after connection was closed: {}",
+                                        log.info("[{}] Cleared producer created after connection was closed: {}",
                                                 remoteAddress, producer);
-                                            producerFuture.completeExceptionally(
-                                                new IllegalStateException("Producer created after connection was closed"));
+                                        producerFuture.completeExceptionally(
+                                                new IllegalStateException(
+                                                        "Producer created after connection was closed"));
                                         }
 
                                         producers.remove(producerId, producerFuture);
                                 }).exceptionally(ex -> {
-                                    log.warn("[{}] Failed to add producer {}: {}", remoteAddress, producer, ex.getMessage());
+                                    log.warn("[{}] Failed to add producer {}: {}",
+                                            remoteAddress, producer, ex.getMessage());
                                     producer.closeNow(true);
                                     if (producerFuture.completeExceptionally(ex)) {
                                         commandSender.sendErrorResponse(requestId,
@@ -1220,7 +1248,7 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
 
         if (producer.isNonPersistentTopic()) {
             // avoid processing non-persist message if reached max concurrent-message limit
-            if (nonPersistentPendingMessages > MaxNonPersistentPendingMessages) {
+            if (nonPersistentPendingMessages > maxNonPersistentPendingMessages) {
                 final long producerId = send.getProducerId();
                 final long sequenceId = send.getSequenceId();
                 final long highestSequenceId = send.getHighestSequenceId();
@@ -1258,9 +1286,11 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         MessageMetadata msgMetadata = Commands.parseMessageMetadata(headersAndPayload);
         headersAndPayload.resetReaderIndex();
         if (log.isDebugEnabled()) {
-            log.debug("[{}] Received send message request. producer: {}:{} {}:{} size: {}, partition key is: {}, ordering key is {}",
-                    remoteAddress, send.getProducerId(), send.getSequenceId(), msgMetadata.getProducerName(), msgMetadata.getSequenceId(),
-                    headersAndPayload.readableBytes(), msgMetadata.getPartitionKey(), msgMetadata.getOrderingKey());
+            log.debug("[{}] Received send message request. producer: {}:{} {}:{} size: {},"
+                            + " partition key is: {}, ordering key is {}",
+                    remoteAddress, send.getProducerId(), send.getSequenceId(), msgMetadata.getProducerName(),
+                    msgMetadata.getSequenceId(), headersAndPayload.readableBytes(), msgMetadata.getPartitionKey(),
+                    msgMetadata.getOrderingKey());
         }
         msgMetadata.recycle();
     }
@@ -1338,7 +1368,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         if (consumerFuture != null && consumerFuture.isDone() && !consumerFuture.isCompletedExceptionally()) {
             consumerFuture.getNow(null).doUnsubscribe(unsubscribe.getRequestId());
         } else {
-            commandSender.sendErrorResponse(unsubscribe.getRequestId(), ServerError.MetadataError, "Consumer not found");
+            commandSender.sendErrorResponse(unsubscribe.getRequestId(), ServerError.MetadataError,
+                    "Consumer not found");
         }
     }
 
@@ -1349,11 +1380,13 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         CompletableFuture<Consumer> consumerFuture = consumers.get(seek.getConsumerId());
 
         if (!seek.hasMessageId() && !seek.hasMessagePublishTime()) {
-            commandSender.sendErrorResponse(requestId, ServerError.MetadataError, "Message id and message publish time were not present");
+            commandSender.sendErrorResponse(requestId, ServerError.MetadataError,
+                    "Message id and message publish time were not present");
             return;
         }
 
-        boolean consumerCreated = consumerFuture != null && consumerFuture.isDone() && !consumerFuture.isCompletedExceptionally();
+        boolean consumerCreated = consumerFuture != null
+                && consumerFuture.isDone() && !consumerFuture.isCompletedExceptionally();
 
         if (consumerCreated && seek.hasMessageId()) {
             Consumer consumer = consumerFuture.getNow(null);
@@ -1374,7 +1407,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                         subscription.getTopic().getName(), subscription.getName(), position);
                 commandSender.sendSuccessResponse(requestId);
             }).exceptionally(ex -> {
-                log.warn("[{}][{}] Failed to reset subscription: {}", remoteAddress, subscription, ex.getMessage(), ex);
+                log.warn("[{}][{}] Failed to reset subscription: {}",
+                        remoteAddress, subscription, ex.getMessage(), ex);
                 commandSender.sendErrorResponse(requestId, ServerError.UnknownError,
                         "Error when resetting subscription: " + ex.getCause().getMessage());
                 return null;
@@ -1389,7 +1423,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                         subscription.getTopic().getName(), subscription.getName(), timestamp);
                 commandSender.sendSuccessResponse(requestId);
             }).exceptionally(ex -> {
-                log.warn("[{}][{}] Failed to reset subscription: {}", remoteAddress, subscription, ex.getMessage(), ex);
+                log.warn("[{}][{}] Failed to reset subscription: {}", remoteAddress,
+                        subscription, ex.getMessage(), ex);
                 commandSender.sendErrorResponse(requestId, ServerError.UnknownError,
                         "Reset subscription to publish time error: " + ex.getCause().getMessage());
                 return null;
@@ -1507,7 +1542,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                     consumer.getSubscription().getName());
 
         } else {
-            ctx.writeAndFlush(Commands.newError(getLastMessageId.getRequestId(), ServerError.MetadataError, "Consumer not found"));
+            ctx.writeAndFlush(Commands.newError(getLastMessageId.getRequestId(),
+                    ServerError.MetadataError, "Consumer not found"));
         }
     }
 
@@ -1556,7 +1592,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         batchSizeFuture.whenComplete((batchSize, e) -> {
             if (e != null) {
                 ctx.writeAndFlush(Commands.newError(
-                        requestId, ServerError.MetadataError, "Failed to get batch size for entry " + e.getMessage()));
+                        requestId, ServerError.MetadataError,
+                        "Failed to get batch size for entry " + e.getMessage()));
             } else {
                 int largestBatchIndex = batchSize > 0 ? batchSize - 1 : -1;
 
@@ -1659,7 +1696,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                     commandSender.sendGetOrCreateSchemaResponse(requestId, schemaVersion);
                 });
             } else {
-                commandSender.sendGetOrCreateSchemaErrorResponse(requestId, ServerError.TopicNotFound, "Topic not found");
+                commandSender.sendGetOrCreateSchemaErrorResponse(requestId, ServerError.TopicNotFound,
+                        "Topic not found");
             }
         }).exceptionally(ex -> {
             ServerError errorCode = BrokerServiceException.getClientErrorCode(ex);
@@ -1673,7 +1711,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         final long requestId = command.getRequestId();
         final TransactionCoordinatorID tcId = TransactionCoordinatorID.get(command.getTcId());
         if (log.isDebugEnabled()) {
-            log.debug("Receive new txn request {} to transaction meta store {} from {}.", requestId, tcId, remoteAddress);
+            log.debug("Receive new txn request {} to transaction meta store {} from {}.",
+                    requestId, tcId, remoteAddress);
         }
         service.pulsar().getTransactionMetadataStoreService().newTransaction(tcId, command.getTxnTtlSeconds())
             .whenComplete(((txnID, ex) -> {
@@ -1681,12 +1720,14 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                     if (log.isDebugEnabled()) {
                         log.debug("Send response {} for new txn request {}", tcId.getId(), requestId);
                     }
-                    ctx.writeAndFlush(Commands.newTxnResponse(requestId, txnID.getLeastSigBits(), txnID.getMostSigBits()));
+                    ctx.writeAndFlush(Commands.newTxnResponse(requestId, txnID.getLeastSigBits(),
+                            txnID.getMostSigBits()));
                 } else {
                     if (log.isDebugEnabled()) {
                         log.debug("Send response error for new txn request {}", requestId, ex);
                     }
-                    ctx.writeAndFlush(Commands.newTxnResponse(requestId, tcId.getId(), BrokerServiceException.getClientErrorCode(ex), ex.getMessage()));
+                    ctx.writeAndFlush(Commands.newTxnResponse(requestId, tcId.getId(),
+                            BrokerServiceException.getClientErrorCode(ex), ex.getMessage()));
                 }
             }));
     }
@@ -1696,19 +1737,22 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         final TxnID txnID = new TxnID(command.getTxnidMostBits(), command.getTxnidLeastBits());
         final long requestId = command.getRequestId();
         if (log.isDebugEnabled()) {
-            log.debug("Receive add published partition to txn request {} from {} with txnId {}", requestId, remoteAddress, txnID);
+            log.debug("Receive add published partition to txn request {} from {} with txnId {}",
+                    requestId, remoteAddress, txnID);
         }
-        service.pulsar().getTransactionMetadataStoreService().addProducedPartitionToTxn(txnID, command.getPartitionsList())
-            .whenComplete(((v, ex) -> {
-                if (ex == null) {
-                    if (log.isDebugEnabled()) {
-                        log.debug("Send response success for add published partition to txn request {}",  requestId);
-                    }
-                    ctx.writeAndFlush(Commands.newAddPartitionToTxnResponse(requestId,
-                            txnID.getLeastSigBits(), txnID.getMostSigBits()));
-                } else {
-                    if (log.isDebugEnabled()) {
-                        log.debug("Send response error for add published partition to txn request {}",  requestId, ex);
+        service.pulsar().getTransactionMetadataStoreService().addProducedPartitionToTxn(txnID,
+                command.getPartitionsList())
+                .whenComplete(((v, ex) -> {
+                    if (ex == null) {
+                        if (log.isDebugEnabled()) {
+                            log.debug("Send response success for add published partition to txn request {}", requestId);
+                        }
+                        ctx.writeAndFlush(Commands.newAddPartitionToTxnResponse(requestId,
+                                txnID.getLeastSigBits(), txnID.getMostSigBits()));
+                    } else {
+                        if (log.isDebugEnabled()) {
+                            log.debug("Send response error for add published partition to txn request {}", requestId,
+                                    ex);
                     }
                     ctx.writeAndFlush(Commands.newAddPartitionToTxnResponse(requestId, txnID.getMostSigBits(),
                             BrokerServiceException.getClientErrorCode(ex), ex.getMessage()));
@@ -1789,7 +1833,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
                     ctx.writeAndFlush(Commands.newEndTxnOnSubscriptionResponse(
                             requestId, txnidLeastBits, txnidMostBits,
                             ServerError.UnknownError,
-                            "Topic " + optionalTopic.get().getName() + " subscription " + subName + " is not exist."));
+                            "Topic " + optionalTopic.get().getName()
+                                    + " subscription " + subName + " is not exist."));
                     return;
                 }
 
@@ -1909,7 +1954,7 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
 
     /**
      * It closes the connection with client which triggers {@code channelInactive()} which clears all producers and
-     * consumers from connection-map
+     * consumers from connection-map.
      */
     protected void close() {
         ctx.close();
@@ -1952,7 +1997,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         MSG_PUBLISH_BUFFER_SIZE_UPDATER.getAndAdd(this, msgSize);
         boolean isPublishRateExceeded = false;
         if (preciseTopicPublishRateLimitingEnable) {
-            boolean isPreciseTopicPublishRateExceeded = producer.getTopic().isTopicPublishRateExceeded(numMessages, msgSize);
+            boolean isPreciseTopicPublishRateExceeded =
+                    producer.getTopic().isTopicPublishRateExceeded(numMessages, msgSize);
             if (isPreciseTopicPublishRateExceeded) {
                 producer.getTopic().disableCnxAutoRead();
                 return;
@@ -1994,8 +2040,8 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         // we can add check (&& pendingSendRequest < MaxPendingSendRequests) here but then it requires
         // pendingSendRequest to be volatile and it can be expensive while writing. also this will be called on if
         // throttling is enable on the topic. so, avoid pendingSendRequest check will be fine.
-        if (ctx != null && !ctx.channel().config().isAutoRead() &&
-                !autoReadDisabledRateLimiting && !autoReadDisabledPublishBufferLimiting) {
+        if (ctx != null && !ctx.channel().config().isAutoRead()
+                && !autoReadDisabledRateLimiting && !autoReadDisabledPublishBufferLimiting) {
             // Resume reading from socket if pending-request is not reached to threshold
             ctx.channel().config().setAutoRead(true);
             // triggers channel read
@@ -2005,7 +2051,7 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
 
     @Override
     public void disableCnxAutoRead() {
-        if (ctx != null && ctx.channel().config().isAutoRead() ) {
+        if (ctx != null && ctx.channel().config().isAutoRead()) {
             ctx.channel().config().setAutoRead(false);
         }
     }
@@ -2040,7 +2086,7 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
         if (producerName != null && producerName.startsWith(replicatorPrefix)) {
             // Re-enable nagle algorithm on connections used for replication purposes
             try {
-                if (ctx.channel().config().getOption(ChannelOption.TCP_NODELAY).booleanValue() == true) {
+                if (ctx.channel().config().getOption(ChannelOption.TCP_NODELAY)) {
                     ctx.channel().config().setOption(ChannelOption.TCP_NODELAY, false);
                 }
             } catch (Throwable t) {
@@ -2091,7 +2137,7 @@ public class ServerCnx extends PulsarHandler implements TransportCnx {
     private static final Logger log = LoggerFactory.getLogger(ServerCnx.class);
 
     /**
-     * Helper method for testability
+     * Helper method for testability.
      *
      * @return the connection state
      */
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java
index fc500c5..7197261 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java
@@ -27,19 +27,20 @@ public interface StickyKeyConsumerSelector {
     int DEFAULT_RANGE_SIZE =  2 << 15;
 
     /**
-     * Add a new consumer
+     * Add a new consumer.
+     *
      * @param consumer new consumer
      */
     void addConsumer(Consumer consumer) throws ConsumerAssignException;
 
     /**
-     * Remove the consumer
+     * Remove the consumer.
      * @param consumer consumer to be removed
      */
     void removeConsumer(Consumer consumer);
 
     /**
-     * Select a consumer by sticky key
+     * Select a consumer by sticky key.
      *
      * @param stickyKey sticky key
      * @return consumer
@@ -47,7 +48,7 @@ public interface StickyKeyConsumerSelector {
     Consumer select(byte[] stickyKey);
 
     /**
-     * Get key hash ranges handled by each consumer
+     * Get key hash ranges handled by each consumer.
      * @return A map where key is a consumer name and value is list of hash range it receiving message for.
      */
     Map<String, List<String>> getConsumerKeyHashRanges();
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Subscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Subscription.java
index 8a0bd06..7ad8a90 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Subscription.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Subscription.java
@@ -44,7 +44,7 @@ public interface Subscription {
 
     void consumerFlow(Consumer consumer, int additionalNumberOfMessages);
 
-    void acknowledgeMessage(List<Position> positions, AckType ackType, Map<String,Long> properties);
+    void acknowledgeMessage(List<Position> positions, AckType ackType, Map<String, Long> properties);
 
     String getTopicName();
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java
index a224bcd..b5461b6 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java
@@ -57,7 +57,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
 
     private final Map<NamespaceName, AtomicInteger> ownedBundlesCountPerNamespace = new ConcurrentHashMap<>();
 
-    private final Map<NamespaceName, CompletableFuture<SystemTopicClient.Reader>> readerCaches = new ConcurrentHashMap<>();
+    private final Map<NamespaceName, CompletableFuture<SystemTopicClient.Reader>>
+            readerCaches = new ConcurrentHashMap<>();
 
     private final Map<NamespaceName, Boolean> policyCacheInitMap = new ConcurrentHashMap<>();
 
@@ -70,8 +71,9 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
         CompletableFuture<Void> result = new CompletableFuture<>();
 
         createSystemTopicFactoryIfNeeded();
-        SystemTopicClient systemTopicClient = namespaceEventsSystemTopicFactory.createSystemTopic(topicName.getNamespaceObject(),
-                EventType.TOPIC_POLICY);
+        SystemTopicClient systemTopicClient =
+                namespaceEventsSystemTopicFactory.createSystemTopic(topicName.getNamespaceObject(),
+                        EventType.TOPIC_POLICY);
 
         CompletableFuture<SystemTopicClient.Writer> writerFuture = systemTopicClient.newWriterAsync();
         writerFuture.whenComplete((writer, ex) -> {
@@ -79,8 +81,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
                 result.completeExceptionally(ex);
             } else {
                 writer.writeAsync(
-                    PulsarEvent.builder()
-                        .actionType(ActionType.UPDATE)
+                        PulsarEvent.builder()
+                                .actionType(ActionType.UPDATE)
                         .eventType(EventType.TOPIC_POLICY)
                         .topicPoliciesEvent(
                             TopicPoliciesEvent.builder()
@@ -121,10 +123,11 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
             return;
         }
         TopicPoliciesEvent event = msg.getValue().getTopicPoliciesEvent();
-        TopicName topicName = TopicName.get(event.getDomain(), event.getTenant(), event.getNamespace(), event.getTopic());
-        if (listeners.get(topicName) != null) {
+        TopicName topicName = TopicName.get(event.getDomain(), event.getTenant(),
+                event.getNamespace(), event.getTopic());
+        if (LISTENERS.get(topicName) != null) {
             TopicPolicies policies = event.getPolicies();
-            for (TopicPolicyListener<TopicPolicies> listener : listeners.get(topicName)) {
+            for (TopicPolicyListener<TopicPolicies> listener : LISTENERS.get(topicName)) {
                 listener.onUpdate(policies);
             }
         }
@@ -153,8 +156,9 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
             result.complete(null);
             return result;
         }
-        SystemTopicClient systemTopicClient = namespaceEventsSystemTopicFactory.createSystemTopic(topicName.getNamespaceObject()
-                , EventType.TOPIC_POLICY);
+        SystemTopicClient systemTopicClient = namespaceEventsSystemTopicFactory
+                .createSystemTopic(topicName.getNamespaceObject()
+                        , EventType.TOPIC_POLICY);
         systemTopicClient.newReaderAsync().thenAccept(r ->
                 fetchTopicPoliciesAsyncAndCloseReader(r, topicName, null, result));
         return result;
@@ -174,7 +178,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
                         , EventType.TOPIC_POLICY);
                 ownedBundlesCountPerNamespace.putIfAbsent(namespace, new AtomicInteger(1));
                 policyCacheInitMap.put(namespace, false);
-                CompletableFuture<SystemTopicClient.Reader> readerCompletableFuture = systemTopicClient.newReaderAsync();
+                CompletableFuture<SystemTopicClient.Reader> readerCompletableFuture =
+                        systemTopicClient.newReaderAsync();
                 readerCaches.put(namespace, readerCompletableFuture);
                 readerCompletableFuture.whenComplete((reader, ex) -> {
                     if (ex != null) {
@@ -208,17 +213,18 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
     @Override
     public void start() {
 
-        pulsarService.getNamespaceService().addNamespaceBundleOwnershipListener(new NamespaceBundleOwnershipListener() {
+        pulsarService.getNamespaceService().addNamespaceBundleOwnershipListener(
+                new NamespaceBundleOwnershipListener() {
 
-            @Override
-            public void onLoad(NamespaceBundle bundle) {
-                addOwnedNamespaceBundleAsync(bundle);
-            }
+                    @Override
+                    public void onLoad(NamespaceBundle bundle) {
+                        addOwnedNamespaceBundleAsync(bundle);
+                    }
 
-            @Override
-            public void unLoad(NamespaceBundle bundle) {
-                removeOwnedNamespaceBundleAsync(bundle);
-            }
+                    @Override
+                    public void unLoad(NamespaceBundle bundle) {
+                        removeOwnedNamespaceBundleAsync(bundle);
+                    }
 
             @Override
             public boolean test(NamespaceBundle namespaceBundle) {
@@ -245,7 +251,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
                 });
             } else {
                 future.complete(null);
-                policyCacheInitMap.computeIfPresent(reader.getSystemTopic().getTopicName().getNamespaceObject(), (k, v) -> true);
+                policyCacheInitMap.computeIfPresent(
+                        reader.getSystemTopic().getTopicName().getNamespaceObject(), (k, v) -> true);
             }
         });
     }
@@ -284,7 +291,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
             synchronized (this) {
                 if (namespaceEventsSystemTopicFactory == null) {
                     try {
-                        namespaceEventsSystemTopicFactory = new NamespaceEventsSystemTopicFactory(pulsarService.getClient());
+                        namespaceEventsSystemTopicFactory =
+                                new NamespaceEventsSystemTopicFactory(pulsarService.getClient());
                     } catch (PulsarServerException e) {
                         log.error("Create namespace event system topic factory error.", e);
                     }
@@ -293,7 +301,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
         }
     }
 
-    private void fetchTopicPoliciesAsyncAndCloseReader(SystemTopicClient.Reader reader, TopicName topicName, TopicPolicies policies,
+    private void fetchTopicPoliciesAsyncAndCloseReader(SystemTopicClient.Reader reader, TopicName topicName,
+                                                       TopicPolicies policies,
                                                        CompletableFuture<TopicPolicies> future) {
         reader.hasMoreEventsAsync().whenComplete((hasMore, ex) -> {
             if (ex != null) {
@@ -312,7 +321,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
                                 topicPoliciesEvent.getNamespace(),
                                 topicPoliciesEvent.getTopic()))
                         ) {
-                            fetchTopicPoliciesAsyncAndCloseReader(reader, topicName, topicPoliciesEvent.getPolicies(), future);
+                            fetchTopicPoliciesAsyncAndCloseReader(reader, topicName,
+                                    topicPoliciesEvent.getPolicies(), future);
                         } else {
                             fetchTopicPoliciesAsyncAndCloseReader(reader, topicName, policies, future);
                         }
@@ -351,12 +361,12 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic
 
     @Override
     public void registerListener(TopicName topicName, TopicPolicyListener<TopicPolicies> listener) {
-        listeners.computeIfAbsent(topicName, k -> Lists.newCopyOnWriteArrayList()).add(listener);
+        LISTENERS.computeIfAbsent(topicName, k -> Lists.newCopyOnWriteArrayList()).add(listener);
     }
 
     @Override
     public void unregisterListener(TopicName topicName, TopicPolicyListener<TopicPolicies> listener) {
-        listeners.computeIfAbsent(topicName, k -> Lists.newCopyOnWriteArrayList()).remove(listener);
+        LISTENERS.computeIfAbsent(topicName, k -> Lists.newCopyOnWriteArrayList()).remove(listener);
     }
 
     private static final Logger log = LoggerFactory.getLogger(SystemTopicBasedTopicPoliciesService.class);
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java
index 8f86c24..9e50fcf 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Topic.java
@@ -105,14 +105,17 @@ public interface Topic {
     void removeProducer(Producer producer);
 
     /**
-     * record add-latency
+     * record add-latency.
      */
     void recordAddLatency(long latency, TimeUnit unit);
 
     CompletableFuture<Consumer> subscribe(TransportCnx cnx, String subscriptionName, long consumerId, SubType subType,
-            int priorityLevel, String consumerName, boolean isDurable, MessageId startMessageId,
-            Map<String, String> metadata, boolean readCompacted, InitialPosition initialPosition,
-            long startMessageRollbackDurationSec, boolean replicateSubscriptionState, PulsarApi.KeySharedMeta keySharedMeta);
+                                          int priorityLevel, String consumerName, boolean isDurable,
+                                          MessageId startMessageId,
+                                          Map<String, String> metadata, boolean readCompacted,
+                                          InitialPosition initialPosition,
+                                          long startMessageRollbackDurationSec, boolean replicateSubscriptionState,
+                                          PulsarApi.KeySharedMeta keySharedMeta);
 
     CompletableFuture<Subscription> createSubscription(String subscriptionName, InitialPosition initialPosition,
             boolean replicateSubscriptionState);
@@ -242,11 +245,11 @@ public interface Topic {
     CompletableFuture<TransactionBuffer> getTransactionBuffer(boolean createIfMissing);
 
     /**
-     * Publish Transaction message to this Topic's TransactionBuffer
+     * Publish Transaction message to this Topic's TransactionBuffer.
      *
-     * @param txnID Transaction Id
+     * @param txnID             Transaction Id
      * @param headersAndPayload Message data
-     * @param publishContext Publish context
+     * @param publishContext    Publish context
      */
     void publishTxnMessage(TxnID txnID, ByteBuf headersAndPayload, PublishContext publishContext);
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TopicPoliciesService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TopicPoliciesService.java
index 05d3b02..9b6d282 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TopicPoliciesService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TopicPoliciesService.java
@@ -29,29 +29,30 @@ import org.apache.pulsar.common.policies.data.TopicPolicies;
 import org.apache.pulsar.common.util.FutureUtil;
 
 /**
- * Topic policies service
+ * Topic policies service.
  */
 public interface TopicPoliciesService {
 
     TopicPoliciesService DISABLED = new TopicPoliciesServiceDisabled();
-    Map<TopicName, List<TopicPolicyListener<TopicPolicies>>> listeners = new ConcurrentHashMap<>();
+    Map<TopicName, List<TopicPolicyListener<TopicPolicies>>> LISTENERS = new ConcurrentHashMap<>();
 
     /**
-     * Update policies for a topic async
+     * Update policies for a topic async.
+     *
      * @param topicName topic name
-     * @param policies policies for the topic name
+     * @param policies  policies for the topic name
      */
     CompletableFuture<Void> updateTopicPoliciesAsync(TopicName topicName, TopicPolicies policies);
 
     /**
-     * Get policies for a topic async
+     * Get policies for a topic async.
      * @param topicName topic name
      * @return future of the topic policies
      */
     TopicPolicies getTopicPolicies(TopicName topicName) throws TopicPoliciesCacheNotInitException;
 
     /**
-     * Get policies for a topic without cache async
+     * Get policies for a topic without cache async.
      * @param topicName topic name
      * @return future of the topic policies
      */
@@ -77,7 +78,7 @@ public interface TopicPoliciesService {
     void start();
 
     /**
-     * whether the cache has been initialized
+     * whether the cache has been initialized.
      * @param topicName
      * @return
      */
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TransportCnx.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TransportCnx.java
index fbfa966..6247401 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TransportCnx.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/TransportCnx.java
@@ -36,7 +36,8 @@ public interface TransportCnx {
     boolean isBatchMessageCompatibleVersion();
 
     /**
-     * The security role for this connection
+     * The security role for this connection.
+     *
      * @return the role
      */
     String getAuthRole();
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcher.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcher.java
index 613a7b1..1b08807 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcher.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcher.java
@@ -33,7 +33,7 @@ public interface NonPersistentDispatcher extends Dispatcher {
 
     void addConsumer(Consumer consumer) throws BrokerServiceException;
 
-    void removeConsumer(Consumer consumer) throws BrokerServiceException ;
+    void removeConsumer(Consumer consumer) throws BrokerServiceException;
 
     boolean isConsumerConnected();
 
@@ -41,7 +41,7 @@ public interface NonPersistentDispatcher extends Dispatcher {
 
     boolean canUnsubscribe(Consumer consumer);
 
-    CompletableFuture<Void> close() ;
+    CompletableFuture<Void> close();
 
     CompletableFuture<Void> disconnectAllConsumers(boolean isResetCursor);
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherMultipleConsumers.java
index e222940..446b9c3 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherMultipleConsumers.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherMultipleConsumers.java
@@ -50,7 +50,8 @@ public class NonPersistentDispatcherMultipleConsumers extends AbstractDispatcher
     private CompletableFuture<Void> closeFuture = null;
     private final String name;
     protected final Rate msgDrop;
-    protected static final AtomicIntegerFieldUpdater<NonPersistentDispatcherMultipleConsumers> TOTAL_AVAILABLE_PERMITS_UPDATER = AtomicIntegerFieldUpdater
+    protected static final AtomicIntegerFieldUpdater<NonPersistentDispatcherMultipleConsumers>
+            TOTAL_AVAILABLE_PERMITS_UPDATER = AtomicIntegerFieldUpdater
             .newUpdater(NonPersistentDispatcherMultipleConsumers.class, "totalAvailablePermits");
     @SuppressWarnings("unused")
     private volatile int totalAvailablePermits = 0;
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherSingleActiveConsumer.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherSingleActiveConsumer.java
index c77346d..3544649 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherSingleActiveConsumer.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherSingleActiveConsumer.java
@@ -40,7 +40,8 @@ import org.apache.pulsar.common.protocol.Commands;
 import org.apache.pulsar.common.stats.Rate;
 
 @Slf4j
-public final class NonPersistentDispatcherSingleActiveConsumer extends AbstractDispatcherSingleActiveConsumer implements NonPersistentDispatcher {
+public final class NonPersistentDispatcherSingleActiveConsumer extends AbstractDispatcherSingleActiveConsumer
+        implements NonPersistentDispatcher {
 
     private final NonPersistentTopic topic;
     private final Rate msgDrop;
@@ -49,7 +50,7 @@ public final class NonPersistentDispatcherSingleActiveConsumer extends AbstractD
     private final RedeliveryTracker redeliveryTracker;
 
     public NonPersistentDispatcherSingleActiveConsumer(SubType subscriptionType, int partitionIndex,
-            NonPersistentTopic topic, Subscription subscription) {
+                                                       NonPersistentTopic topic, Subscription subscription) {
         super(subscriptionType, partitionIndex, topic.getName(), subscription);
         this.topic = topic;
         this.subscription = subscription;
@@ -100,8 +101,8 @@ public final class NonPersistentDispatcherSingleActiveConsumer extends AbstractD
         }
 
         if (maxConsumersPerSubscription == null) {
-            maxConsumersPerSubscription = policies.max_consumers_per_subscription > 0 ?
-                    policies.max_consumers_per_subscription :
+            maxConsumersPerSubscription = policies.max_consumers_per_subscription > 0
+                    ? policies.max_consumers_per_subscription :
                     serviceConfig.getMaxConsumersPerSubscription();
         }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentReplicator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentReplicator.java
index 8c7d543..5b06a06 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentReplicator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentReplicator.java
@@ -65,7 +65,8 @@ public class NonPersistentReplicator extends AbstractReplicator implements Repli
             backOff.reset();
         } else {
             log.info(
-                    "[{}][{} -> {}] Replicator was stopped while creating the producer. Closing it. Replicator state: {}",
+                    "[{}][{} -> {}] Replicator was stopped while creating the producer."
+                            + " Closing it. Replicator state: {}",
                     topicName, localCluster, remoteCluster, STATE_UPDATER.get(this));
             STATE_UPDATER.set(this, State.Stopping);
             closeProducerAsync();
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentStickyKeyDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentStickyKeyDispatcherMultipleConsumers.java
index 5c91cba..cd52dfb 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentStickyKeyDispatcherMultipleConsumers.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentStickyKeyDispatcherMultipleConsumers.java
@@ -65,12 +65,13 @@ public class NonPersistentStickyKeyDispatcherMultipleConsumers extends NonPersis
         return SubType.Key_Shared;
     }
 
-    private static final FastThreadLocal<Map<Consumer, List<Entry>>> localGroupedEntries = new FastThreadLocal<Map<Consumer, List<Entry>>>() {
-        @Override
-        protected Map<Consumer, List<Entry>> initialValue() throws Exception {
-            return new HashMap<>();
-        }
-    };
+    private static final FastThreadLocal<Map<Consumer, List<Entry>>> localGroupedEntries =
+            new FastThreadLocal<Map<Consumer, List<Entry>>>() {
+                @Override
+                protected Map<Consumer, List<Entry>> initialValue() throws Exception {
+                    return new HashMap<>();
+                }
+            };
 
     @Override
     public void sendMessages(List<Entry> entries) {
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 a4d2d6f..90ff723 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
@@ -58,8 +58,9 @@ public class NonPersistentSubscription implements Subscription {
 
     private static final int FALSE = 0;
     private static final int TRUE = 1;
-    private static final AtomicIntegerFieldUpdater<NonPersistentSubscription> IS_FENCED_UPDATER = AtomicIntegerFieldUpdater
-            .newUpdater(NonPersistentSubscription.class, "isFenced");
+    private static final AtomicIntegerFieldUpdater<NonPersistentSubscription> IS_FENCED_UPDATER =
+            AtomicIntegerFieldUpdater
+                    .newUpdater(NonPersistentSubscription.class, "isFenced");
     @SuppressWarnings("unused")
     private volatile int isFenced = FALSE;
 
@@ -130,7 +131,8 @@ public class NonPersistentSubscription implements Subscription {
             case Key_Shared:
                 if (dispatcher == null || dispatcher.getType() != SubType.Key_Shared) {
                     previousDispatcher = dispatcher;
-                    KeySharedMeta ksm = consumer.getKeySharedMeta() != null ? consumer.getKeySharedMeta() : KeySharedMeta.getDefaultInstance();
+                    KeySharedMeta ksm = consumer.getKeySharedMeta() != null
+                            ? consumer.getKeySharedMeta() : KeySharedMeta.getDefaultInstance();
 
                     switch (ksm.getKeySharedMode()) {
                         case STICKY:
@@ -258,7 +260,7 @@ public class NonPersistentSubscription implements Subscription {
     @Override
     public CompletableFuture<Entry> peekNthMessage(int messagePosition) {
         // No-op
-        return CompletableFuture.completedFuture(null);// TODO: throw exception
+        return CompletableFuture.completedFuture(null); // TODO: throw exception
     }
 
     @Override
@@ -279,7 +281,7 @@ public class NonPersistentSubscription implements Subscription {
     }
 
     /**
-     * Disconnect all consumers attached to the dispatcher and close this subscription
+     * Disconnect all consumers attached to the dispatcher and close this subscription.
      *
      * @return CompletableFuture indicating the completion of disconnect operation
      */
@@ -389,10 +391,9 @@ public class NonPersistentSubscription implements Subscription {
 
     /**
      * Handle unsubscribe command from the client API Check with the dispatcher is this consumer can proceed with
-     * unsubscribe
+     * unsubscribe.
      *
-     * @param consumer
-     *            consumer object that is initiating the unsubscribe operation
+     * @param consumer consumer object that is initiating the unsubscribe operation
      * @return CompletableFuture indicating the completion of ubsubscribe operation
      */
     @Override
@@ -482,7 +483,8 @@ public class NonPersistentSubscription implements Subscription {
     @Override
     public CompletableFuture<Void> endTxn(long txnidMostBits, long txnidLeastBits, int txnAction) {
         CompletableFuture<Void> completableFuture = new CompletableFuture<>();
-        completableFuture.completeExceptionally(new Exception("Unsupported operation end txn for NonPersistentSubscription"));
+        completableFuture.completeExceptionally(
+                new Exception("Unsupported operation end txn for NonPersistentSubscription"));
         return completableFuture;
     }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java
index 8feb799..004e656 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java
@@ -94,8 +94,8 @@ public class NonPersistentTopic extends AbstractTopic implements Topic {
     private final ConcurrentOpenHashMap<String, NonPersistentReplicator> replicators;
 
     // Ever increasing counter of entries added
-    private static final AtomicLongFieldUpdater<NonPersistentTopic> ENTRIES_ADDED_COUNTER_UPDATER = AtomicLongFieldUpdater
-            .newUpdater(NonPersistentTopic.class, "entriesAddedCounter");
+    private static final AtomicLongFieldUpdater<NonPersistentTopic> ENTRIES_ADDED_COUNTER_UPDATER =
+            AtomicLongFieldUpdater.newUpdater(NonPersistentTopic.class, "entriesAddedCounter");
     private volatile long entriesAddedCounter = 0;
 
     private static final FastThreadLocal<TopicStats> threadLocalTopicStats = new FastThreadLocal<TopicStats>() {
@@ -217,9 +217,12 @@ public class NonPersistentTopic extends AbstractTopic implements Topic {
 
     @Override
     public CompletableFuture<Consumer> subscribe(final TransportCnx cnx, String subscriptionName, long consumerId,
-            SubType subType, int priorityLevel, String consumerName, boolean isDurable, MessageId startMessageId,
-            Map<String, String> metadata, boolean readCompacted, InitialPosition initialPosition,
-            long resetStartMessageBackInSec, boolean replicateSubscriptionState, PulsarApi.KeySharedMeta keySharedMeta) {
+                                                 SubType subType, int priorityLevel, String consumerName,
+                                                 boolean isDurable, MessageId startMessageId,
+                                                 Map<String, String> metadata, boolean readCompacted,
+                                                 InitialPosition initialPosition,
+                                                 long resetStartMessageBackInSec, boolean replicateSubscriptionState,
+                                                 PulsarApi.KeySharedMeta keySharedMeta) {
 
         final CompletableFuture<Consumer> future = new CompletableFuture<>();
 
@@ -398,10 +401,9 @@ public class NonPersistentTopic extends AbstractTopic implements Topic {
     }
 
     /**
-     * Close this topic - close all producers and subscriptions associated with this topic
+     * Close this topic - close all producers and subscriptions associated with this topic.
      *
-     * @param closeWithoutWaitingClientDisconnect
-     *            don't wait for client disconnect and forcefully close managed-ledger
+     * @param closeWithoutWaitingClientDisconnect don't wait for client disconnect and forcefully close managed-ledger
      * @return Completable future indicating completion of close operation
      */
     @Override
@@ -427,8 +429,9 @@ public class NonPersistentTopic extends AbstractTopic implements Topic {
         producers.values().forEach(producer -> futures.add(producer.disconnect()));
         subscriptions.forEach((s, sub) -> futures.add(sub.disconnect()));
 
-        CompletableFuture<Void> clientCloseFuture = closeWithoutWaitingClientDisconnect ? CompletableFuture.completedFuture(null)
-                : FutureUtil.waitForAll(futures);
+        CompletableFuture<Void> clientCloseFuture =
+                closeWithoutWaitingClientDisconnect ? CompletableFuture.completedFuture(null)
+                        : FutureUtil.waitForAll(futures);
 
         clientCloseFuture.thenRun(() -> {
             log.info("[{}] Topic closed", topic);
@@ -741,7 +744,7 @@ public class NonPersistentTopic extends AbstractTopic implements Topic {
 
         NonPersistentTopicStats stats = new NonPersistentTopicStats();
 
-        ObjectObjectHashMap<String, PublisherStats> remotePublishersStats = new ObjectObjectHashMap<String, PublisherStats>();
+        ObjectObjectHashMap<String, PublisherStats> remotePublishersStats = new ObjectObjectHashMap<>();
 
         producers.values().forEach(producer -> {
             NonPersistentPublisherStats publisherStats = (NonPersistentPublisherStats) producer.getStats();
@@ -869,7 +872,8 @@ public class NonPersistentTopic extends AbstractTopic implements Topic {
                             : policies.subscription_expiration_time_minutes);
             if (expirationTimeMillis > 0) {
                 subscriptions.forEach((subName, sub) -> {
-                    if (sub.getDispatcher() != null && sub.getDispatcher().isConsumerConnected() || sub.isReplicated()) {
+                    if (sub.getDispatcher() != null
+                            && sub.getDispatcher().isConsumerConnected() || sub.isReplicated()) {
                         return;
                     }
                     if (System.currentTimeMillis() - sub.getLastActive() > expirationTimeMillis) {
@@ -917,7 +921,8 @@ public class NonPersistentTopic extends AbstractTopic implements Topic {
         } else {
             ServiceConfiguration cfg = brokerService.getPulsar().getConfiguration();
             resetInactiveTopicPolicies(cfg.getBrokerDeleteInactiveTopicsMode()
-                    , cfg.getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds(), cfg.isBrokerDeleteInactiveTopicsEnabled());
+                    , cfg.getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds(),
+                    cfg.isBrokerDeleteInactiveTopicsEnabled());
         }
         return checkReplicationAndRetryOnFailure();
     }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/CompactorSubscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/CompactorSubscription.java
index bc0eafd..dc887d1 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/CompactorSubscription.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/CompactorSubscription.java
@@ -54,7 +54,7 @@ public class CompactorSubscription extends PersistentSubscription {
     }
 
     @Override
-    public void acknowledgeMessage(List<Position> positions, AckType ackType, Map<String,Long> properties) {
+    public void acknowledgeMessage(List<Position> positions, AckType ackType, Map<String, Long> properties) {
         checkArgument(ackType == AckType.Cumulative);
         checkArgument(positions.size() == 1);
         checkArgument(properties.containsKey(Compactor.COMPACTED_TOPIC_LEDGER_PROPERTY));
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/DispatchRateLimiter.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/DispatchRateLimiter.java
index f723642..7fb4d43 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/DispatchRateLimiter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/DispatchRateLimiter.java
@@ -66,7 +66,7 @@ public class DispatchRateLimiter {
     }
 
     /**
-     * returns available msg-permit if msg-dispatch-throttling is enabled else it returns -1
+     * returns available msg-permit if msg-dispatch-throttling is enabled else it returns -1.
      *
      * @return
      */
@@ -149,7 +149,7 @@ public class DispatchRateLimiter {
     public void updateDispatchRate() {
         Optional<DispatchRate> dispatchRate = getTopicPolicyDispatchRate(brokerService, topicName, type);
         if (!dispatchRate.isPresent()) {
-            dispatchRate =Optional.ofNullable(getPoliciesDispatchRate(brokerService));
+            dispatchRate = Optional.ofNullable(getPoliciesDispatchRate(brokerService));
 
             if (!dispatchRate.isPresent()) {
                 dispatchRate = Optional.of(createDispatchRate());
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/MessageDeduplication.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/MessageDeduplication.java
index 7cf84f9..0b05620 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/MessageDeduplication.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/MessageDeduplication.java
@@ -52,7 +52,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Class that contains all the logic to control and perform the deduplication on the broker side
+ * Class that contains all the logic to control and perform the deduplication on the broker side.
  */
 public class MessageDeduplication {
 
@@ -154,10 +154,9 @@ public class MessageDeduplication {
 
     /**
      * Read all the entries published from the cursor position until the most recent and update the highest sequence id
-     * from each producer
+     * from each producer.
      *
-     * @param future
-     *            future to trigger when the replay is complete
+     * @param future future to trigger when the replay is complete
      */
     private void replayCursor(CompletableFuture<Void> future) {
         managedCursor.asyncReadEntries(100, new ReadEntriesCallback() {
@@ -211,18 +210,19 @@ public class MessageDeduplication {
                 }
                 if (status == Status.Initialized && !shouldBeEnabled) {
                     status = Status.Removing;
-                    managedLedger.asyncDeleteCursor(PersistentTopic.DEDUPLICATION_CURSOR_NAME, new DeleteCursorCallback() {
-                        @Override
-                        public void deleteCursorComplete(Object ctx) {
-                            status = Status.Disabled;
-                            log.info("[{}] Deleted deduplication cursor", topic.getName());
-                        }
+                    managedLedger.asyncDeleteCursor(PersistentTopic.DEDUPLICATION_CURSOR_NAME,
+                            new DeleteCursorCallback() {
+                                @Override
+                                public void deleteCursorComplete(Object ctx) {
+                                    status = Status.Disabled;
+                                    log.info("[{}] Deleted deduplication cursor", topic.getName());
+                                }
 
-                        @Override
-                        public void deleteCursorFailed(ManagedLedgerException exception, Object ctx) {
-                            if (exception instanceof ManagedLedgerException.CursorNotFoundException) {
-                                status = Status.Disabled;
-                            } else {
+                                @Override
+                                public void deleteCursorFailed(ManagedLedgerException exception, Object ctx) {
+                                    if (exception instanceof ManagedLedgerException.CursorNotFoundException) {
+                                        status = Status.Disabled;
+                                    } else {
                                 log.error("[{}] Deleted deduplication cursor error", topic.getName(), exception);
                             }
                         }
@@ -347,8 +347,10 @@ public class MessageDeduplication {
                 }
 
                 // Also need to check sequence ids that has been persisted.
-                // If current message's seq id is smaller or equals to the lastSequenceIdPersisted than its definitely a dup
-                // If current message's seq id is between lastSequenceIdPersisted and lastSequenceIdPushed, then we cannot be sure whether the message is a dup or not
+                // If current message's seq id is smaller or equals to the
+                // lastSequenceIdPersisted than its definitely a dup
+                // If current message's seq id is between lastSequenceIdPersisted and
+                // lastSequenceIdPushed, then we cannot be sure whether the message is a dup or not
                 // we should return an error to the producer for the latter case so that it can retry at a future time
                 Long lastSequenceIdPersisted = highestSequencedPersisted.get(producerName);
                 if (lastSequenceIdPersisted != null && sequenceId <= lastSequenceIdPersisted) {
@@ -363,7 +365,7 @@ public class MessageDeduplication {
     }
 
     /**
-     * Call this method whenever a message is persisted to get the chance to trigger a snapshot
+     * Call this method whenever a message is persisted to get the chance to trigger a snapshot.
      */
     public void recordMessagePersisted(PublishContext publishContext, PositionImpl position) {
         if (!isEnabled()) {
@@ -444,7 +446,7 @@ public class MessageDeduplication {
     }
 
     /**
-     * Topic will call this method whenever a producer connects
+     * Topic will call this method whenever a producer connects.
      */
     public synchronized void producerAdded(String producerName) {
         // Producer is no-longer inactive
@@ -452,7 +454,7 @@ public class MessageDeduplication {
     }
 
     /**
-     * Topic will call this method whenever a producer disconnects
+     * Topic will call this method whenever a producer disconnects.
      */
     public synchronized void producerRemoved(String producerName) {
         // Producer is no-longer active
@@ -460,7 +462,7 @@ public class MessageDeduplication {
     }
 
     /**
-     * Remove from hash maps all the producers that were inactive for more than the configured amount of time
+     * Remove from hash maps all the producers that were inactive for more than the configured amount of time.
      */
     public synchronized void purgeInactiveProducers() {
         long minimumActiveTimestamp = System.currentTimeMillis() - TimeUnit.MINUTES
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java
index f04c512..9c7d80a 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java
@@ -69,8 +69,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
+ *
  */
-public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMultipleConsumers implements Dispatcher, ReadEntriesCallback {
+public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMultipleConsumers
+        implements Dispatcher, ReadEntriesCallback {
 
     protected final PersistentTopic topic;
     protected final ManagedCursor cursor;
@@ -87,17 +89,24 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
     private boolean shouldRewindBeforeReadingOrReplaying = false;
     protected final String name;
 
-    protected static final AtomicIntegerFieldUpdater<PersistentDispatcherMultipleConsumers> TOTAL_AVAILABLE_PERMITS_UPDATER =
-            AtomicIntegerFieldUpdater.newUpdater(PersistentDispatcherMultipleConsumers.class, "totalAvailablePermits");
+    protected static final AtomicIntegerFieldUpdater<PersistentDispatcherMultipleConsumers>
+            TOTAL_AVAILABLE_PERMITS_UPDATER =
+            AtomicIntegerFieldUpdater.newUpdater(PersistentDispatcherMultipleConsumers.class,
+                    "totalAvailablePermits");
     protected volatile int totalAvailablePermits = 0;
     private volatile int readBatchSize;
-    private final Backoff readFailureBackoff = new Backoff(15, TimeUnit.SECONDS, 1, TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS);
-    private static final AtomicIntegerFieldUpdater<PersistentDispatcherMultipleConsumers> TOTAL_UNACKED_MESSAGES_UPDATER =
-            AtomicIntegerFieldUpdater.newUpdater(PersistentDispatcherMultipleConsumers.class, "totalUnackedMessages");
+    private final Backoff readFailureBackoff = new Backoff(15, TimeUnit.SECONDS,
+            1, TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS);
+    private static final AtomicIntegerFieldUpdater<PersistentDispatcherMultipleConsumers>
+            TOTAL_UNACKED_MESSAGES_UPDATER =
+            AtomicIntegerFieldUpdater.newUpdater(PersistentDispatcherMultipleConsumers.class,
+                    "totalUnackedMessages");
     private volatile int totalUnackedMessages = 0;
     private volatile int blockedDispatcherOnUnackedMsgs = FALSE;
-    private static final AtomicIntegerFieldUpdater<PersistentDispatcherMultipleConsumers> BLOCKED_DISPATCHER_ON_UNACKMSG_UPDATER =
-            AtomicIntegerFieldUpdater.newUpdater(PersistentDispatcherMultipleConsumers.class, "blockedDispatcherOnUnackedMsgs");
+    private static final AtomicIntegerFieldUpdater<PersistentDispatcherMultipleConsumers>
+            BLOCKED_DISPATCHER_ON_UNACKMSG_UPDATER =
+            AtomicIntegerFieldUpdater.newUpdater(PersistentDispatcherMultipleConsumers.class,
+                    "blockedDispatcherOnUnackedMsgs");
     protected final ServiceConfiguration serviceConfig;
     protected Optional<DispatchRateLimiter> dispatchRateLimiter = Optional.empty();
 
@@ -105,7 +114,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
         Normal, Replay
     }
 
-    public PersistentDispatcherMultipleConsumers(PersistentTopic topic, ManagedCursor cursor, Subscription subscription) {
+    public PersistentDispatcherMultipleConsumers(PersistentTopic topic, ManagedCursor cursor,
+                                                 Subscription subscription) {
         super(subscription);
         this.serviceConfig = topic.getBrokerService().pulsar().getConfiguration();
         this.cursor = cursor;
@@ -157,7 +167,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
                     .orElse(null);
 
             if (maxConsumersPerSubscription == null) {
-                // Use getDataIfPresent from zk cache to make the call non-blocking and prevent deadlocks in addConsumer
+                // Use getDataIfPresent from zk cache to make the call non-blocking and
+                // prevent deadlocks in addConsumer
                 policies = topic.getBrokerService().pulsar().getConfigurationCache().policiesCache()
                         .getDataIfPresent(AdminResource.path(POLICIES, TopicName.get(topic.getName()).getNamespace()));
                 if (policies == null) {
@@ -169,9 +180,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
         }
 
         if (maxConsumersPerSubscription == null) {
-            maxConsumersPerSubscription = policies.max_consumers_per_subscription > 0 ?
-                    policies.max_consumers_per_subscription :
-                    serviceConfig.getMaxConsumersPerSubscription();
+            maxConsumersPerSubscription = policies.max_consumers_per_subscription > 0
+                    ? policies.max_consumers_per_subscription : serviceConfig.getMaxConsumersPerSubscription();
         }
 
         if (maxConsumersPerSubscription > 0 && maxConsumersPerSubscription <= consumerList.size()) {
@@ -242,7 +252,9 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
             Consumer c = getRandomConsumer();
             // if turn on precise dispatcher flow control, adjust the record to read
             if (c != null && c.isPreciseDispatcherFlowControl()) {
-                messagesToRead = Math.min((int) Math.ceil(currentTotalAvailablePermits * 1.0 / c.getAvgMessagesPerEntry()), readBatchSize);
+                messagesToRead = Math.min(
+                        (int) Math.ceil(currentTotalAvailablePermits * 1.0 / c.getAvgMessagesPerEntry()),
+                        readBatchSize);
             }
 
             if (!isConsumerWritable()) {
@@ -257,7 +269,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
             // active-cursor reads message from cache rather from bookkeeper (2) if topic has reached message-rate
             // threshold: then schedule the read after MESSAGE_RATE_BACKOFF_MS
             if (serviceConfig.isDispatchThrottlingOnNonBacklogConsumerEnabled() || !cursor.isActive()) {
-                if (topic.getDispatchRateLimiter().isPresent() && topic.getDispatchRateLimiter().get().isDispatchRateLimitingEnabled()) {
+                if (topic.getDispatchRateLimiter().isPresent()
+                        && topic.getDispatchRateLimiter().get().isDispatchRateLimitingEnabled()) {
                     DispatchRateLimiter topicRateLimiter = topic.getDispatchRateLimiter().get();
                     if (!topicRateLimiter.hasMessageDispatchPermit()) {
                         if (log.isDebugEnabled()) {
@@ -280,9 +293,11 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
                 if (dispatchRateLimiter.isPresent() && dispatchRateLimiter.get().isDispatchRateLimitingEnabled()) {
                     if (!dispatchRateLimiter.get().hasMessageDispatchPermit()) {
                         if (log.isDebugEnabled()) {
-                            log.debug("[{}] message-read exceeded subscription message-rate {}/{}, schedule after a {}", name,
-                                dispatchRateLimiter.get().getDispatchRateOnMsg(), dispatchRateLimiter.get().getDispatchRateOnByte(),
-                                MESSAGE_RATE_BACKOFF_MS);
+                            log.debug("[{}] message-read exceeded subscription message-rate {}/{},"
+                                            + " schedule after a {}", name,
+                                    dispatchRateLimiter.get().getDispatchRateOnMsg(),
+                                    dispatchRateLimiter.get().getDispatchRateOnByte(),
+                                    MESSAGE_RATE_BACKOFF_MS);
                         }
                         topic.getBrokerService().executor().schedule(() -> readMoreEntries(), MESSAGE_RATE_BACKOFF_MS,
                             TimeUnit.MILLISECONDS);
@@ -316,8 +331,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
                 }
 
                 havePendingReplayRead = true;
-                Set<? extends Position> deletedMessages = topic.isDelayedDeliveryEnabled() ?
-                        asyncReplayEntriesInOrder(messagesToReplayNow) : asyncReplayEntries(messagesToReplayNow);
+                Set<? extends Position> deletedMessages = topic.isDelayedDeliveryEnabled()
+                        ? asyncReplayEntriesInOrder(messagesToReplayNow) : asyncReplayEntries(messagesToReplayNow);
                 // clear already acked positions from replay bucket
 
                 deletedMessages.forEach(position -> messagesToRedeliver.remove(((PositionImpl) position).getLedgerId(),
@@ -337,7 +352,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
                             consumerList.size());
                 }
                 havePendingRead = true;
-                cursor.asyncReadEntriesOrWait(messagesToRead, serviceConfig.getDispatcherMaxReadSizeBytes(), this,
+                cursor.asyncReadEntriesOrWait(messagesToRead, serviceConfig.getDispatcherMaxReadSizeBytes(),
+                        this,
                         ReadType.Normal);
             } else {
                 log.debug("[{}] Cannot schedule next read until previous one is done", name);
@@ -519,7 +535,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
                 int msgSent = sendMessageInfo.getTotalMessages();
                 start += messagesForC;
                 entriesToDispatch -= messagesForC;
-                TOTAL_AVAILABLE_PERMITS_UPDATER.addAndGet(this, -(msgSent - batchIndexesAcks.getTotalAckedIndexCount()));
+                TOTAL_AVAILABLE_PERMITS_UPDATER.addAndGet(this,
+                        -(msgSent - batchIndexesAcks.getTotalAckedIndexCount()));
                 totalMessagesSent += sendMessageInfo.getTotalMessages();
                 totalBytesSent += sendMessageInfo.getTotalBytes();
             }
@@ -622,7 +639,7 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
 
     /**
      * returns true only if {@link AbstractDispatcherMultipleConsumers#consumerList}
-     * has atleast one unblocked consumer and have available permits
+     * has atleast one unblocked consumer and have available permits.
      *
      * @return
      */
@@ -631,7 +648,7 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMul
             // abort read if no consumers are connected or if disconnect is initiated
             return false;
         }
-        for(Consumer consumer : consumerList) {
+        for (Consumer consumer : consumerList) {
             if (isConsumerAvailable(consumer)) {
                 return true;
             }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherSingleActiveConsumer.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherSingleActiveConsumer.java
index 5d55b1d..aefeb30 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherSingleActiveConsumer.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherSingleActiveConsumer.java
@@ -60,7 +60,8 @@ import org.apache.pulsar.common.util.collections.LongPairSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public final class PersistentDispatcherSingleActiveConsumer extends AbstractDispatcherSingleActiveConsumer implements Dispatcher, ReadEntriesCallback {
+public final class PersistentDispatcherSingleActiveConsumer extends AbstractDispatcherSingleActiveConsumer
+        implements Dispatcher, ReadEntriesCallback {
 
     private final PersistentTopic topic;
     private final ManagedCursor cursor;
@@ -70,7 +71,8 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
     private volatile boolean havePendingRead = false;
 
     private volatile int readBatchSize;
-    private final Backoff readFailureBackoff = new Backoff(15, TimeUnit.SECONDS, 1, TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS);
+    private final Backoff readFailureBackoff = new Backoff(15, TimeUnit.SECONDS,
+            1, TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS);
     private final ServiceConfiguration serviceConfig;
     private volatile ScheduledFuture<?> readOnActiveConsumerTask = null;
 
@@ -79,7 +81,7 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
     private volatile boolean havePendingReplayRead = false;
 
     public PersistentDispatcherSingleActiveConsumer(ManagedCursor cursor, SubType subscriptionType, int partitionIndex,
-            PersistentTopic topic, Subscription subscription) {
+                                                    PersistentTopic topic, Subscription subscription) {
         super(subscriptionType, partitionIndex, topic.getName(), subscription);
         this.topic = topic;
         this.name = topic.getName() + " / " + (cursor.getName() != null ? Codec.decode(cursor.getName())
@@ -161,9 +163,8 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
         }
 
         if (maxConsumersPerSubscription == null) {
-            maxConsumersPerSubscription = policies.max_consumers_per_subscription > 0 ?
-                    policies.max_consumers_per_subscription :
-                    serviceConfig.getMaxConsumersPerSubscription();
+            maxConsumersPerSubscription = policies.max_consumers_per_subscription > 0
+                    ? policies.max_consumers_per_subscription : serviceConfig.getMaxConsumersPerSubscription();
         }
 
         if (maxConsumersPerSubscription > 0 && maxConsumersPerSubscription <= consumers.size()) {
@@ -260,7 +261,8 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
                                     topic.getDispatchRateLimiter().get().tryDispatchPermit(totalMessages, totalBytes);
                                 }
 
-                                dispatchRateLimiter.ifPresent(rateLimiter -> rateLimiter.tryDispatchPermit(totalMessages, totalBytes));
+                                dispatchRateLimiter.ifPresent(rateLimiter ->
+                                        rateLimiter.tryDispatchPermit(totalMessages, totalBytes));
                             }
 
                             // Schedule a new read batch operation only after the previous batch has been written to the
@@ -272,11 +274,10 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
                                             if (newConsumer != null && !havePendingRead) {
                                                 readMoreEntries(newConsumer);
                                             } else {
-                                                if (log.isDebugEnabled()) {
-                                                    log.debug(
-                                                            "[{}-{}] Ignoring write future complete. consumerAvailable={} havePendingRead={}",
-                                                            name, newConsumer, newConsumer != null, havePendingRead);
-                                                }
+                                                log.debug(
+                                                        "[{}-{}] Ignoring write future complete."
+                                                                + " consumerAvailable={} havePendingRead={}",
+                                                        name, newConsumer, newConsumer != null, havePendingRead);
                                             }
                                         }
                                     }));
@@ -405,8 +406,9 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
                                 readMoreEntries(currentConsumer);
                             } else {
                                 if (log.isDebugEnabled()) {
-                                    log.debug("[{}] Skipping read retry for topic: Current Consumer {}, havePendingRead {}",
-                                        topic.getName(), currentConsumer, havePendingRead);
+                                    log.debug("[{}] Skipping read retry for topic: Current Consumer {},"
+                                                    + " havePendingRead {}",
+                                            topic.getName(), currentConsumer, havePendingRead);
                                 }
                             }
                         }, MESSAGE_RATE_BACKOFF_MS, TimeUnit.MILLISECONDS);
@@ -423,9 +425,11 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
                 if (dispatchRateLimiter.isPresent() && dispatchRateLimiter.get().isDispatchRateLimitingEnabled()) {
                     if (!dispatchRateLimiter.get().hasMessageDispatchPermit()) {
                         if (log.isDebugEnabled()) {
-                            log.debug("[{}] message-read exceeded subscription message-rate {}/{}, schedule after a {}", name,
-                                dispatchRateLimiter.get().getDispatchRateOnMsg(), dispatchRateLimiter.get().getDispatchRateOnByte(),
-                                MESSAGE_RATE_BACKOFF_MS);
+                            log.debug("[{}] message-read exceeded subscription message-rate {}/{},"
+                                            + " schedule after a {}",
+                                    name, dispatchRateLimiter.get().getDispatchRateOnMsg(),
+                                    dispatchRateLimiter.get().getDispatchRateOnByte(),
+                                    MESSAGE_RATE_BACKOFF_MS);
                         }
                         topic.getBrokerService().executor().schedule(() -> {
                             Consumer currentConsumer = ACTIVE_CONSUMER_UPDATER.get(this);
@@ -476,7 +480,8 @@ public final class PersistentDispatcherSingleActiveConsumer extends AbstractDisp
             } else if (consumer.readCompacted()) {
                 topic.getCompactedTopic().asyncReadEntriesOrWait(cursor, messagesToRead, this, consumer);
             } else {
-                cursor.asyncReadEntriesOrWait(messagesToRead, serviceConfig.getDispatcherMaxReadSizeBytes(), this, consumer);
+                cursor.asyncReadEntriesOrWait(messagesToRead,
+                        serviceConfig.getDispatcherMaxReadSizeBytes(), this, consumer);
             }
         } else {
             if (log.isDebugEnabled()) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java
index fcbe7aa..c044512 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java
@@ -46,10 +46,12 @@ public class PersistentMessageExpiryMonitor implements FindEntryCallback {
     private static final int TRUE = 1;
     @SuppressWarnings("unused")
     private volatile int expirationCheckInProgress = FALSE;
-    private static final AtomicIntegerFieldUpdater<PersistentMessageExpiryMonitor> expirationCheckInProgressUpdater = AtomicIntegerFieldUpdater
+    private static final AtomicIntegerFieldUpdater<PersistentMessageExpiryMonitor>
+            expirationCheckInProgressUpdater = AtomicIntegerFieldUpdater
             .newUpdater(PersistentMessageExpiryMonitor.class, "expirationCheckInProgress");
 
-    public PersistentMessageExpiryMonitor(String topicName, String subscriptionName, ManagedCursor cursor, PersistentSubscription subscription) {
+    public PersistentMessageExpiryMonitor(String topicName, String subscriptionName, ManagedCursor cursor,
+                                          PersistentSubscription subscription) {
         this.topicName = topicName;
         this.cursor = cursor;
         this.subName = subscriptionName;
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageFinder.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageFinder.java
index 5eba681..ab89615 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageFinder.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageFinder.java
@@ -31,8 +31,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- *
- * given a timestamp find the first message (position) (published) at or before the timestamp
+ * given a timestamp find the first message (position) (published) at or before the timestamp.
  */
 public class PersistentMessageFinder implements AsyncCallbacks.FindEntryCallback {
     private final ManagedCursor cursor;
@@ -44,8 +43,9 @@ public class PersistentMessageFinder implements AsyncCallbacks.FindEntryCallback
     private static final int TRUE = 1;
     @SuppressWarnings("unused")
     private volatile int messageFindInProgress = FALSE;
-    private static final AtomicIntegerFieldUpdater<PersistentMessageFinder> messageFindInProgressUpdater = AtomicIntegerFieldUpdater
-            .newUpdater(PersistentMessageFinder.class, "messageFindInProgress");
+    private static final AtomicIntegerFieldUpdater<PersistentMessageFinder> messageFindInProgressUpdater =
+            AtomicIntegerFieldUpdater
+                    .newUpdater(PersistentMessageFinder.class, "messageFindInProgress");
 
     public PersistentMessageFinder(String topicName, ManagedCursor cursor) {
         this.topicName = topicName;
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java
index 2324a35..d6b167a 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java
@@ -64,7 +64,8 @@ import org.apache.pulsar.common.util.Codec;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class PersistentReplicator extends AbstractReplicator implements Replicator, ReadEntriesCallback, DeleteCallback {
+public class PersistentReplicator extends AbstractReplicator
+        implements Replicator, ReadEntriesCallback, DeleteCallback {
 
     private final PersistentTopic topic;
     private final String replicatorName;
@@ -78,15 +79,17 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
 
     private final int producerQueueThreshold;
 
-    private static final AtomicIntegerFieldUpdater<PersistentReplicator> PENDING_MESSAGES_UPDATER = AtomicIntegerFieldUpdater
-            .newUpdater(PersistentReplicator.class, "pendingMessages");
+    private static final AtomicIntegerFieldUpdater<PersistentReplicator> PENDING_MESSAGES_UPDATER =
+            AtomicIntegerFieldUpdater
+                    .newUpdater(PersistentReplicator.class, "pendingMessages");
     private volatile int pendingMessages = 0;
 
     private static final int FALSE = 0;
     private static final int TRUE = 1;
 
-    private static final AtomicIntegerFieldUpdater<PersistentReplicator> HAVE_PENDING_READ_UPDATER = AtomicIntegerFieldUpdater
-            .newUpdater(PersistentReplicator.class, "havePendingRead");
+    private static final AtomicIntegerFieldUpdater<PersistentReplicator> HAVE_PENDING_READ_UPDATER =
+            AtomicIntegerFieldUpdater
+                    .newUpdater(PersistentReplicator.class, "havePendingRead");
     private volatile int havePendingRead = FALSE;
 
     private final Rate msgOut = new Rate();
@@ -94,7 +97,8 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
 
     private int messageTTLInSeconds = 0;
 
-    private final Backoff readFailureBackoff = new Backoff(1, TimeUnit.SECONDS, 1, TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS);
+    private final Backoff readFailureBackoff = new Backoff(1, TimeUnit.SECONDS,
+            1, TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS);
 
     private PersistentMessageExpiryMonitor expiryMonitor;
     // for connected subscriptions, message expiry will be checked if the backlog is greater than this threshold
@@ -104,19 +108,20 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
 
     // Only for test
     public PersistentReplicator(PersistentTopic topic, ManagedCursor cursor, String localCluster, String remoteCluster,
-            BrokerService brokerService) throws NamingException {
+                                BrokerService brokerService) throws NamingException {
         super(topic.getName(), topic.getReplicatorPrefix(), localCluster, remoteCluster, brokerService);
         this.replicatorName = cursor.getName();
         this.ledger = cursor.getManagedLedger();
         this.cursor = cursor;
         this.topic = topic;
-        this.expiryMonitor = new PersistentMessageExpiryMonitor(topicName, Codec.decode(cursor.getName()), cursor, null);
+        this.expiryMonitor = new PersistentMessageExpiryMonitor(topicName,
+                Codec.decode(cursor.getName()), cursor, null);
         HAVE_PENDING_READ_UPDATER.set(this, FALSE);
         PENDING_MESSAGES_UPDATER.set(this, 0);
 
         readBatchSize = Math.min(
-            producerQueueSize,
-            topic.getBrokerService().pulsar().getConfiguration().getDispatcherMaxReadBatchSize());
+                producerQueueSize,
+                topic.getBrokerService().pulsar().getConfiguration().getDispatcherMaxReadBatchSize());
         readMaxSizeBytes = topic.getBrokerService().pulsar().getConfiguration().getDispatcherMaxReadSizeBytes();
         producerQueueThreshold = (int) (producerQueueSize * 0.9);
 
@@ -163,7 +168,8 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
             readMoreEntries();
         } else {
             log.info(
-                    "[{}][{} -> {}] Replicator was stopped while creating the producer. Closing it. Replicator state: {}",
+                    "[{}][{} -> {}] Replicator was stopped while creating the producer."
+                            + " Closing it. Replicator state: {}",
                     topicName, localCluster, remoteCluster, STATE_UPDATER.get(this));
             STATE_UPDATER.set(this, State.Stopping);
             closeProducerAsync();
@@ -193,7 +199,8 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
         if (cursor != null) {
             log.info("[{}][{} -> {}] Using the exists cursor for replicator", topicName, localCluster, remoteCluster);
             if (expiryMonitor == null) {
-                this.expiryMonitor = new PersistentMessageExpiryMonitor(topicName, Codec.decode(cursor.getName()), cursor, null);
+                this.expiryMonitor = new PersistentMessageExpiryMonitor(topicName,
+                        Codec.decode(cursor.getName()), cursor, null);
             }
             return CompletableFuture.completedFuture(null);
         }
@@ -203,13 +210,15 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
             public void openCursorComplete(ManagedCursor cursor, Object ctx) {
                 log.info("[{}][{} -> {}] Open cursor succeed for replicator", topicName, localCluster, remoteCluster);
                 PersistentReplicator.this.cursor = cursor;
-                PersistentReplicator.this.expiryMonitor = new PersistentMessageExpiryMonitor(topicName, Codec.decode(cursor.getName()), cursor, null);
+                PersistentReplicator.this.expiryMonitor = new PersistentMessageExpiryMonitor(topicName,
+                        Codec.decode(cursor.getName()), cursor, null);
                 res.complete(null);
             }
 
             @Override
             public void openCursorFailed(ManagedLedgerException exception, Object ctx) {
-                log.warn("[{}][{} -> {}] Open cursor failed for replicator", topicName, localCluster, remoteCluster, exception);
+                log.warn("[{}][{} -> {}] Open cursor failed for replicator", topicName,
+                        localCluster, remoteCluster, exception);
                 res.completeExceptionally(new PersistenceException(exception));
             }
 
@@ -244,10 +253,12 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
             // no permits from rate limit
             if (!rateLimiter.hasMessageDispatchPermit()) {
                 if (log.isDebugEnabled()) {
-                    log.debug("[{}][{} -> {}] message-read exceeded topic replicator message-rate {}/{}, schedule after a {}",
-                        topicName, localCluster, remoteCluster,
-                        rateLimiter.getDispatchRateOnMsg(), rateLimiter.getDispatchRateOnByte(),
-                        MESSAGE_RATE_BACKOFF_MS);
+                    log.debug("[{}][{} -> {}] message-read exceeded topic replicator message-rate {}/{},"
+                                    + " schedule after a {}",
+                            topicName, localCluster, remoteCluster,
+                            rateLimiter.getDispatchRateOnMsg(),
+                            rateLimiter.getDispatchRateOnByte(),
+                            MESSAGE_RATE_BACKOFF_MS);
                 }
                 return -1;
             }
@@ -325,7 +336,8 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
         readFailureBackoff.reduceToHalf();
 
         boolean atLeastOneMessageSentForReplication = false;
-        boolean isEnableReplicatedSubscriptions = brokerService.pulsar().getConfiguration().isEnableReplicatedSubscriptions();
+        boolean isEnableReplicatedSubscriptions =
+                brokerService.pulsar().getConfiguration().isEnableReplicatedSubscriptions();
 
         try {
             // This flag is set to true when we skip atleast one local message,
@@ -534,7 +546,8 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
     @Override
     public void readEntriesFailed(ManagedLedgerException exception, Object ctx) {
         if (STATE_UPDATER.get(this) != State.Started) {
-            log.info("[{}][{} -> {}] Replicator was stopped while reading entries. Stop reading. Replicator state: {}",
+            log.info("[{}][{} -> {}] Replicator was stopped while reading entries."
+                            + " Stop reading. Replicator state: {}",
                     topic, localCluster, remoteCluster, STATE_UPDATER.get(this));
             return;
         }
@@ -544,14 +557,17 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
 
         long waitTimeMillis = readFailureBackoff.next();
 
-        if(exception instanceof CursorAlreadyClosedException) {
-            log.error("[{}][{} -> {}] Error reading entries because replicator is already deleted and cursor is already closed {}, ({})", topic, localCluster,
+        if (exception instanceof CursorAlreadyClosedException) {
+            log.error("[{}][{} -> {}] Error reading entries because replicator is"
+                            + " already deleted and cursor is already closed {}, ({})",
+                    topic, localCluster,
                     remoteCluster, ctx, exception.getMessage(), exception);
             // replicator is already deleted and cursor is already closed so, producer should also be stopped
             closeProducerAsync();
             return;
-        }else if (!(exception instanceof TooManyRequestsException)) {
-            log.error("[{}][{} -> {}] Error reading entries at {}. Retrying to read in {}s. ({})", topic, localCluster,
+        } else if (!(exception instanceof TooManyRequestsException)) {
+            log.error("[{}][{} -> {}] Error reading entries at {}. Retrying to read in {}s. ({})",
+                    topic, localCluster,
                     remoteCluster, ctx, waitTimeMillis / 1000.0, exception.getMessage(), exception);
         } else {
             if (log.isDebugEnabled()) {
@@ -764,7 +780,7 @@ public class PersistentReplicator extends AbstractReplicator implements Replicat
             future.complete(null);
         }).exceptionally(ex -> {
             Throwable t = (ex instanceof CompletionException ? ex.getCause() : ex);
-            if (t instanceof TopicBusyException == false) {
+            if (!(t instanceof TopicBusyException)) {
                 log.error("[{}][{} -> {}] Failed to close dispatch rate limiter: {}", topicName, localCluster,
                         remoteCluster, ex.getMessage());
             }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java
index 1d5a031..11b6f9f 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java
@@ -133,12 +133,13 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi
         }
     }
 
-    private static final FastThreadLocal<Map<Consumer, List<Entry>>> localGroupedEntries = new FastThreadLocal<Map<Consumer, List<Entry>>>() {
-        @Override
-        protected Map<Consumer, List<Entry>> initialValue() throws Exception {
-            return new HashMap<>();
-        }
-    };
+    private static final FastThreadLocal<Map<Consumer, List<Entry>>> localGroupedEntries =
+            new FastThreadLocal<Map<Consumer, List<Entry>>>() {
+                @Override
+                protected Map<Consumer, List<Entry>> initialValue() throws Exception {
+                    return new HashMap<>();
+                }
+            };
 
     @Override
     protected void sendMessagesToConsumers(ReadType readType, List<Entry> entries) {
@@ -176,7 +177,8 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi
             int entriesWithSameKeyCount = entriesWithSameKey.size();
             final int availablePermits = Math.max(consumer.getAvailablePermits(), 0);
             int maxMessagesForC = Math.min(entriesWithSameKeyCount, availablePermits);
-            int messagesForC = getRestrictedMaxEntriesForConsumer(consumer, entriesWithSameKey, maxMessagesForC, readType);
+            int messagesForC = getRestrictedMaxEntriesForConsumer(consumer, entriesWithSameKey,
+                    maxMessagesForC, readType);
             if (log.isDebugEnabled()) {
                 log.debug("[{}] select consumer {} with messages num {}, read type is {}",
                         name, consumer.consumerName(), messagesForC, readType);
@@ -208,15 +210,17 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi
                 filterEntriesForConsumer(entriesWithSameKey, batchSizes, sendMessageInfo, batchIndexesAcks, cursor,
                         readType == ReadType.Replay);
 
-                consumer.sendMessages(entriesWithSameKey, batchSizes, batchIndexesAcks, sendMessageInfo.getTotalMessages(),
+                consumer.sendMessages(entriesWithSameKey, batchSizes, batchIndexesAcks,
+                        sendMessageInfo.getTotalMessages(),
                         sendMessageInfo.getTotalBytes(), sendMessageInfo.getTotalChunkedMessages(),
                         getRedeliveryTracker()).addListener(future -> {
-                            if (future.isSuccess() && keyNumbers.decrementAndGet() == 0) {
-                                readMoreEntries();
-                            }
-                        });
+                    if (future.isSuccess() && keyNumbers.decrementAndGet() == 0) {
+                        readMoreEntries();
+                    }
+                });
 
-                TOTAL_AVAILABLE_PERMITS_UPDATER.getAndAdd(this, -(sendMessageInfo.getTotalMessages() - batchIndexesAcks.getTotalAckedIndexCount()));
+                TOTAL_AVAILABLE_PERMITS_UPDATER.getAndAdd(this,
+                        -(sendMessageInfo.getTotalMessages() - batchIndexesAcks.getTotalAckedIndexCount()));
                 totalMessagesSent += sendMessageInfo.getTotalMessages();
                 totalBytesSent += sendMessageInfo.getTotalBytes();
             }
@@ -253,12 +257,14 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi
                 isDispatcherStuckOnReplays = true;
                 stuckConsumers.addAll(nextStuckConsumers);
             }
-            // readMoreEntries should run regardless whether or not stuck is caused by stuckConsumers for avoid stopping dispatch.
+            // readMoreEntries should run regardless whether or not stuck is caused by
+            // stuckConsumers for avoid stopping dispatch.
             readMoreEntries();
         }
     }
 
-    private int getRestrictedMaxEntriesForConsumer(Consumer consumer, List<Entry> entries, int maxMessages, ReadType readType) {
+    private int getRestrictedMaxEntriesForConsumer(Consumer consumer, List<Entry> entries,
+                                                   int maxMessages, ReadType readType) {
         if (maxMessages == 0) {
             // the consumer was stuck
             nextStuckConsumers.add(consumer);
@@ -287,15 +293,19 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi
         // For example, we have 10 messages [0,1,2,3,4,5,6,7,8,9]
         // If the consumer0 get message 0 and 1, and does not acked message 0, then consumer1 joined,
         // when consumer1 get message 2,3, the broker will not dispatch messages to consumer1
-        // because of the mark delete position did not move forward. So message 2,3 will stored in the redeliver tracker.
-        // Now, consumer2 joined, it will read new messages from the cursor, so the recentJoinedPosition is 4 for consumer2
+        // because of the mark delete position did not move forward.
+        // So message 2,3 will stored in the redeliver tracker.
+        // Now, consumer2 joined, it will read new messages from the cursor,
+        // so the recentJoinedPosition is 4 for consumer2
         // Because of there are messages need to redeliver, so the broker will read the redelivery message first [2,3]
-        // message [2,3] is lower than the recentJoinedPosition 4, so the message [2,3] will dispatched to the consumer2
+        // message [2,3] is lower than the recentJoinedPosition 4,
+        // so the message [2,3] will dispatched to the consumer2
         // But the message [2,3] should not dispatch to consumer2.
 
         if (readType == ReadType.Replay) {
             PositionImpl minReadPositionForRecentJoinedConsumer = recentlyJoinedConsumers.values().iterator().next();
-            if (minReadPositionForRecentJoinedConsumer != null && minReadPositionForRecentJoinedConsumer.compareTo(maxReadPosition) < 0) {
+            if (minReadPositionForRecentJoinedConsumer != null
+                    && minReadPositionForRecentJoinedConsumer.compareTo(maxReadPosition) < 0) {
                 maxReadPosition = minReadPositionForRecentJoinedConsumer;
             }
         }
@@ -327,7 +337,8 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi
         boolean hasConsumerRemovedFromTheRecentJoinedConsumers = false;
         PositionImpl mdp = (PositionImpl) cursor.getMarkDeletedPosition();
         if (mdp != null) {
-            PositionImpl nextPositionOfTheMarkDeletePosition = ((ManagedLedgerImpl)cursor.getManagedLedger()).getNextValidPosition(mdp);
+            PositionImpl nextPositionOfTheMarkDeletePosition =
+                    ((ManagedLedgerImpl) cursor.getManagedLedger()).getNextValidPosition(mdp);
             while (itr.hasNext()) {
                 Map.Entry<Consumer, PositionImpl> entry = itr.next();
                 if (entry.getValue().compareTo(nextPositionOfTheMarkDeletePosition) <= 0) {
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 491542a..3922f0f 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
@@ -174,7 +174,8 @@ public class PersistentSubscription implements Subscription {
             case Exclusive:
                 if (dispatcher == null || dispatcher.getType() != SubType.Exclusive) {
                     previousDispatcher = dispatcher;
-                    dispatcher = new PersistentDispatcherSingleActiveConsumer(cursor, SubType.Exclusive, 0, topic, this);
+                    dispatcher = new PersistentDispatcherSingleActiveConsumer(cursor,
+                            SubType.Exclusive, 0, topic, this);
                 }
                 break;
             case Shared:
@@ -193,8 +194,8 @@ public class PersistentSubscription implements Subscription {
 
                 if (dispatcher == null || dispatcher.getType() != SubType.Failover) {
                     previousDispatcher = dispatcher;
-                    dispatcher = new PersistentDispatcherSingleActiveConsumer(cursor, SubType.Failover, partitionIndex,
-                            topic, this);
+                    dispatcher = new PersistentDispatcherSingleActiveConsumer(cursor,
+                            SubType.Failover, partitionIndex, topic, this);
                 }
                 break;
             case Key_Shared:
@@ -291,7 +292,7 @@ public class PersistentSubscription implements Subscription {
     }
 
     @Override
-    public void acknowledgeMessage(List<Position> positions, AckType ackType, Map<String,Long> properties) {
+    public void acknowledgeMessage(List<Position> positions, AckType ackType, Map<String, Long> properties) {
         Position previousMarkDeletePosition = cursor.getMarkDeletedPosition();
 
         if (ackType == AckType.Cumulative) {
@@ -305,7 +306,8 @@ public class PersistentSubscription implements Subscription {
             if (log.isDebugEnabled()) {
                 log.debug("[{}][{}] Cumulative ack on {}", topicName, subName, position);
             }
-            cursor.asyncMarkDelete(position, mergeCursorProperties(properties), markDeleteCallback, previousMarkDeletePosition);
+            cursor.asyncMarkDelete(position, mergeCursorProperties(properties),
+                    markDeleteCallback, previousMarkDeletePosition);
 
         } else {
             if (log.isDebugEnabled()) {
@@ -320,7 +322,7 @@ public class PersistentSubscription implements Subscription {
                 });
             }
 
-            if(dispatcher != null){
+            if (dispatcher != null) {
                 dispatcher.getRedeliveryTracker().removeBatch(positions);
             }
         }
@@ -350,13 +352,13 @@ public class PersistentSubscription implements Subscription {
 
         if (topic.getManagedLedger().isTerminated() && cursor.getNumberOfEntriesInBacklog(false) == 0) {
             // Notify all consumer that the end of topic was reached
-            if(dispatcher != null){
+            if (dispatcher != null) {
                 dispatcher.getConsumers().forEach(Consumer::reachedEndOfTopic);
             }
         }
     }
 
-    private void deleteTransactionMarker(PositionImpl position, AckType ackType, Map<String,Long> properties) {
+    private void deleteTransactionMarker(PositionImpl position, AckType ackType, Map<String, Long> properties) {
         if (position != null) {
             ManagedLedgerImpl managedLedger = ((ManagedLedgerImpl) cursor.getManagedLedger());
             PositionImpl nextPosition = managedLedger.getNextValidPosition(position);
@@ -385,8 +387,9 @@ public class PersistentSubscription implements Subscription {
         }
     }
 
-    public CompletableFuture<Void> transactionIndividualAcknowledge(TxnID txnId,
-                                                                    List<MutablePair<PositionImpl, Integer>> positions) {
+    public CompletableFuture<Void> transactionIndividualAcknowledge(
+            TxnID txnId,
+            List<MutablePair<PositionImpl, Integer>> positions) {
         return pendingAckHandle.individualAcknowledgeMessage(txnId, positions);
     }
 
@@ -400,7 +403,8 @@ public class PersistentSubscription implements Subscription {
             PositionImpl oldMD = (PositionImpl) ctx;
             PositionImpl newMD = (PositionImpl) cursor.getMarkDeletedPosition();
             if (log.isDebugEnabled()) {
-                log.debug("[{}][{}] Mark deleted messages to position {} from position {}", topicName, subName, newMD, oldMD);
+                log.debug("[{}][{}] Mark deleted messages to position {} from position {}",
+                        topicName, subName, newMD, oldMD);
             }
             // Signal the dispatchers to give chance to take extra actions
             notifyTheMarkDeletePositionMoveForwardIfNeeded(oldMD);
@@ -434,7 +438,7 @@ public class PersistentSubscription implements Subscription {
     private void notifyTheMarkDeletePositionMoveForwardIfNeeded(Position oldPosition) {
         PositionImpl oldMD = (PositionImpl) oldPosition;
         PositionImpl newMD = (PositionImpl) cursor.getMarkDeletedPosition();
-        if(dispatcher != null && newMD.compareTo(oldMD) > 0){
+        if (dispatcher != null && newMD.compareTo(oldMD) > 0) {
             dispatcher.markDeletePositionMoveForward();
         }
     }
@@ -552,14 +556,17 @@ public class PersistentSubscription implements Subscription {
                     // that spans beyond the retention limits (time/size)
                     finalPosition = cursor.getFirstPosition();
                     if (finalPosition == null) {
-                        log.warn("[{}][{}] Unable to find position for timestamp {}. Unable to reset cursor to first position",
+                        log.warn("[{}][{}] Unable to find position for timestamp {}."
+                                        + " Unable to reset cursor to first position",
                                 topicName, subName, timestamp);
                         future.completeExceptionally(
-                                new SubscriptionInvalidCursorPosition("Unable to find position for specified timestamp"));
+                                new SubscriptionInvalidCursorPosition(
+                                        "Unable to find position for specified timestamp"));
                         return;
                     }
                     log.info(
-                            "[{}][{}] Unable to find position for timestamp {}. Resetting cursor to first position {} in ledger",
+                            "[{}][{}] Unable to find position for timestamp {}."
+                                    + " Resetting cursor to first position {} in ledger",
                             topicName, subName, timestamp, finalPosition);
                 } else {
                     finalPosition = position.getNext();
@@ -568,7 +575,8 @@ public class PersistentSubscription implements Subscription {
             }
 
             @Override
-            public void findEntryFailed(ManagedLedgerException exception, Optional<Position> failedReadPosition, Object ctx) {
+            public void findEntryFailed(ManagedLedgerException exception,
+                                        Optional<Position> failedReadPosition, Object ctx) {
                 // todo - what can go wrong here that needs to be retried?
                 if (exception instanceof ConcurrentFindCursorPositionException) {
                     future.completeExceptionally(new SubscriptionBusyException(exception.getMessage()));
@@ -721,7 +729,7 @@ public class PersistentSubscription implements Subscription {
     }
 
     /**
-     * Disconnect all consumers attached to the dispatcher and close this subscription
+     * Disconnect all consumers attached to the dispatcher and close this subscription.
      *
      * @return CompletableFuture indicating the completion of disconnect operation
      */
@@ -831,10 +839,9 @@ public class PersistentSubscription implements Subscription {
 
     /**
      * Handle unsubscribe command from the client API Check with the dispatcher is this consumer can proceed with
-     * unsubscribe
+     * unsubscribe.
      *
-     * @param consumer
-     *            consumer object that is initiating the unsubscribe operation
+     * @param consumer consumer object that is initiating the unsubscribe operation
      * @return CompletableFuture indicating the completion of unsubscribe operation
      */
     @Override
@@ -890,8 +897,8 @@ public class PersistentSubscription implements Subscription {
         subStats.lastConsumedFlowTimestamp = lastConsumedFlowTimestamp;
         Dispatcher dispatcher = this.dispatcher;
         if (dispatcher != null) {
-            Map<String, List<String>> consumerKeyHashRanges = getType() == SubType.Key_Shared?
-                    ((PersistentStickyKeyDispatcherMultipleConsumers)dispatcher).getConsumerKeyHashRanges(): null;
+            Map<String, List<String>> consumerKeyHashRanges = getType() == SubType.Key_Shared
+                    ? ((PersistentStickyKeyDispatcherMultipleConsumers) dispatcher).getConsumerKeyHashRanges() : null;
             dispatcher.getConsumers().forEach(consumer -> {
                 ConsumerStats consumerStats = consumer.getStats();
                 subStats.consumers.add(consumerStats);
@@ -902,7 +909,8 @@ public class PersistentSubscription implements Subscription {
                 subStats.msgRateRedeliver += consumerStats.msgRateRedeliver;
                 subStats.chuckedMessageRate += consumerStats.chuckedMessageRate;
                 subStats.unackedMessages += consumerStats.unackedMessages;
-                subStats.lastConsumedTimestamp = Math.max(subStats.lastConsumedTimestamp, consumerStats.lastConsumedTimestamp);
+                subStats.lastConsumedTimestamp =
+                        Math.max(subStats.lastConsumedTimestamp, consumerStats.lastConsumedTimestamp);
                 subStats.lastAckedTimestamp = Math.max(subStats.lastAckedTimestamp, consumerStats.lastAckedTimestamp);
                 if (consumerKeyHashRanges != null && consumerKeyHashRanges.containsKey(consumer.consumerName())) {
                     consumerStats.keyHashRanges = consumerKeyHashRanges.get(consumer.consumerName());
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 4a5f4e8..e53e090 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
@@ -26,10 +26,8 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-
 import io.netty.buffer.ByteBuf;
 import io.netty.util.concurrent.FastThreadLocal;
-
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -45,7 +43,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.BiFunction;
 import javax.ws.rs.core.Response;
-
 import org.apache.bookkeeper.mledger.AsyncCallbacks;
 import org.apache.bookkeeper.mledger.AsyncCallbacks.AddEntryCallback;
 import org.apache.bookkeeper.mledger.AsyncCallbacks.CloseCallback;
@@ -140,7 +137,8 @@ import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCallback, TopicPolicyListener<TopicPolicies> {
+public class PersistentTopic extends AbstractTopic
+        implements Topic, AddEntryCallback, TopicPolicyListener<TopicPolicies> {
 
     // Managed ledger associated with the topic
     protected final ManagedLedger ledger;
@@ -174,16 +172,17 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     private final CompactedTopic compactedTopic;
 
     private CompletableFuture<MessageIdImpl> currentOffload = CompletableFuture.completedFuture(
-            (MessageIdImpl)MessageId.earliest);
+            (MessageIdImpl) MessageId.earliest);
 
     private volatile Optional<ReplicatedSubscriptionsController> replicatedSubscriptionsController = Optional.empty();
 
-    private static final FastThreadLocal<TopicStatsHelper> threadLocalTopicStats = new FastThreadLocal<TopicStatsHelper>() {
-        @Override
-        protected TopicStatsHelper initialValue() {
-            return new TopicStatsHelper();
-        }
-    };
+    private static final FastThreadLocal<TopicStatsHelper> threadLocalTopicStats =
+            new FastThreadLocal<TopicStatsHelper>() {
+                @Override
+                protected TopicStatsHelper initialValue() {
+                    return new TopicStatsHelper();
+                }
+            };
 
     private final AtomicLong pendingWriteOps = new AtomicLong(0);
     private volatile double lastUpdatedAvgPublishRateInMsg = 0;
@@ -225,8 +224,10 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         this.subscriptions = new ConcurrentOpenHashMap<>(16, 1);
         this.replicators = new ConcurrentOpenHashMap<>(16, 1);
         this.delayedDeliveryEnabled = brokerService.pulsar().getConfiguration().isDelayedDeliveryEnabled();
-        this.delayedDeliveryTickTimeMillis = brokerService.pulsar().getConfiguration().getDelayedDeliveryTickTimeMillis();
-        this.backloggedCursorThresholdEntries = brokerService.pulsar().getConfiguration().getManagedLedgerCursorBackloggedThreshold();
+        this.delayedDeliveryTickTimeMillis =
+                brokerService.pulsar().getConfiguration().getDelayedDeliveryTickTimeMillis();
+        this.backloggedCursorThresholdEntries =
+                brokerService.pulsar().getConfiguration().getManagedLedgerCursorBackloggedThreshold();
 
         initializeDispatchRateLimiterIfNeeded(Optional.empty());
         registerTopicPolicyListener();
@@ -238,14 +239,15 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
             if (cursor.getName().startsWith(replicatorPrefix)) {
                 String localCluster = brokerService.pulsar().getConfiguration().getClusterName();
                 String remoteCluster = PersistentReplicator.getRemoteCluster(cursor.getName());
-                boolean isReplicatorStarted = addReplicationCluster(remoteCluster, this, cursor.getName(), localCluster);
+                boolean isReplicatorStarted = addReplicationCluster(remoteCluster,
+                        this, cursor.getName(), localCluster);
                 if (!isReplicatorStarted) {
                     throw new NamingException(
-                        PersistentTopic.this.getName() + " Failed to start replicator " + remoteCluster);
+                            PersistentTopic.this.getName() + " Failed to start replicator " + remoteCluster);
                 }
             } else if (cursor.getName().equals(DEDUPLICATION_CURSOR_NAME)) {
-                // This is not a regular subscription, we are going to ignore it for now and let the message dedup logic
-                // to take care of it
+                // This is not a regular subscription, we are going to
+                // ignore it for now and let the message dedup logic to take care of it
             } else {
                 final String subscriptionName = Codec.decode(cursor.getName());
                 subscriptions.put(subscriptionName, createPersistentSubscription(subscriptionName, cursor,
@@ -274,7 +276,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
             maxUnackedMessagesOnConsumer = unackedMessagesExceededOnConsumer(policies);
             maxUnackedMessagesOnSubscription = unackedMessagesExceededOnSubscription(policies);
         } catch (Exception e) {
-            log.warn("[{}] Error getting policies {} and isEncryptionRequired will be set to false", topic, e.getMessage());
+            log.warn("[{}] Error getting policies {} and isEncryptionRequired will be set to false",
+                    topic, e.getMessage());
             isEncryptionRequired = false;
         }
 
@@ -284,16 +287,19 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
         checkReplicatedSubscriptionControllerState();
     }
+
     // for testing purposes
     @VisibleForTesting
-    PersistentTopic(String topic, BrokerService brokerService, ManagedLedger ledger, MessageDeduplication messageDeduplication) {
+    PersistentTopic(String topic, BrokerService brokerService, ManagedLedger ledger,
+                    MessageDeduplication messageDeduplication) {
         super(topic, brokerService);
         this.ledger = ledger;
         this.messageDeduplication = messageDeduplication;
         this.subscriptions = new ConcurrentOpenHashMap<>(16, 1);
         this.replicators = new ConcurrentOpenHashMap<>(16, 1);
         this.compactedTopic = new CompactedTopicImpl(brokerService.pulsar().getBookKeeperClient());
-        this.backloggedCursorThresholdEntries = brokerService.pulsar().getConfiguration().getManagedLedgerCursorBackloggedThreshold();
+        this.backloggedCursorThresholdEntries =
+                brokerService.pulsar().getConfiguration().getManagedLedgerCursorBackloggedThreshold();
     }
 
     private void initializeDispatchRateLimiterIfNeeded(Optional<Policies> policies) {
@@ -347,7 +353,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
             return;
         }
 
-        MessageDeduplication.MessageDupStatus status = messageDeduplication.isDuplicate(publishContext, headersAndPayload);
+        MessageDeduplication.MessageDupStatus status =
+                messageDeduplication.isDuplicate(publishContext, headersAndPayload);
         switch (status) {
             case NotDup:
                 ledger.asyncAddEntry(headersAndPayload, this, publishContext);
@@ -366,28 +373,30 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
     public void asyncReadEntry(PositionImpl position, AsyncCallbacks.ReadEntryCallback callback, Object ctx) {
         if (ledger instanceof ManagedLedgerImpl) {
-            ((ManagedLedgerImpl)ledger).asyncReadEntry(position, callback, ctx);
+            ((ManagedLedgerImpl) ledger).asyncReadEntry(position, callback, ctx);
         } else {
-            callback.readEntryFailed(new ManagedLedgerException("Unexpected managedledger implementation, doesn't support " +
-                    "direct read entry operation.") ,ctx);
+            callback.readEntryFailed(new ManagedLedgerException(
+                    "Unexpected managedledger implementation, doesn't support "
+                            + "direct read entry operation."), ctx);
         }
     }
 
     public PositionImpl getPositionAfterN(PositionImpl startPosition, long n) throws ManagedLedgerException {
         if (ledger instanceof ManagedLedgerImpl) {
-            return ((ManagedLedgerImpl)ledger).getPositionAfterN(startPosition, n, ManagedLedgerImpl.PositionBound.startExcluded);
+            return ((ManagedLedgerImpl) ledger).getPositionAfterN(startPosition, n,
+                    ManagedLedgerImpl.PositionBound.startExcluded);
         } else {
-            throw new ManagedLedgerException("Unexpected managedledger implementation, doesn't support " +
-                    "getPositionAfterN operation.");
+            throw new ManagedLedgerException("Unexpected managedledger implementation, doesn't support "
+                    + "getPositionAfterN operation.");
         }
     }
 
     public PositionImpl getFirstPosition() throws ManagedLedgerException {
         if (ledger instanceof ManagedLedgerImpl) {
-            return ((ManagedLedgerImpl)ledger).getFirstPosition();
+            return ((ManagedLedgerImpl) ledger).getFirstPosition();
         } else {
-            throw new ManagedLedgerException("Unexpected managedledger implementation, doesn't support " +
-                    "getFirstPosition operation.");
+            throw new ManagedLedgerException("Unexpected managedledger implementation, doesn't support "
+                    + "getFirstPosition operation.");
         }
     }
 
@@ -553,9 +562,13 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
     @Override
     public CompletableFuture<Consumer> subscribe(final TransportCnx cnx, String subscriptionName, long consumerId,
-            SubType subType, int priorityLevel, String consumerName, boolean isDurable, MessageId startMessageId,
-            Map<String, String> metadata, boolean readCompacted, InitialPosition initialPosition,
-            long startMessageRollbackDurationSec, boolean replicatedSubscriptionState, PulsarApi.KeySharedMeta keySharedMeta) {
+                                                 SubType subType, int priorityLevel, String consumerName,
+                                                 boolean isDurable, MessageId startMessageId,
+                                                 Map<String, String> metadata, boolean readCompacted,
+                                                 InitialPosition initialPosition,
+                                                 long startMessageRollbackDurationSec,
+                                                 boolean replicatedSubscriptionState,
+                                                 PulsarApi.KeySharedMeta keySharedMeta) {
 
         final CompletableFuture<Consumer> future = new CompletableFuture<>();
 
@@ -612,11 +625,13 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         if (cnx.clientAddress() != null && cnx.clientAddress().toString().contains(":")) {
             SubscribeRateLimiter.ConsumerIdentifier consumer = new SubscribeRateLimiter.ConsumerIdentifier(
                     cnx.clientAddress().toString().split(":")[0], consumerName, consumerId);
-            if (subscribeRateLimiter.isPresent() && !subscribeRateLimiter.get().subscribeAvailable(consumer) || !subscribeRateLimiter.get().tryAcquire(consumer)) {
+            if (subscribeRateLimiter.isPresent() && !subscribeRateLimiter.get().subscribeAvailable(consumer)
+                    || !subscribeRateLimiter.get().tryAcquire(consumer)) {
                 log.warn("[{}] Failed to create subscription for {} {} limited by {}, available {}",
                         topic, subscriptionName, consumer, subscribeRateLimiter.get().getSubscribeRate(),
                         subscribeRateLimiter.get().getAvailableSubscribeRateLimit(consumer));
-                future.completeExceptionally(new NotAllowedException("Subscribe limited by subscribe rate limit per consumer."));
+                future.completeExceptionally(
+                        new NotAllowedException("Subscribe limited by subscribe rate limit per consumer."));
                 return future;
             }
 
@@ -635,8 +650,10 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         }
 
         CompletableFuture<? extends Subscription> subscriptionFuture = isDurable ? //
-                getDurableSubscription(subscriptionName, initialPosition, startMessageRollbackDurationSec, replicatedSubscriptionState) //
-                : getNonDurableSubscription(subscriptionName, startMessageId, initialPosition, startMessageRollbackDurationSec);
+                getDurableSubscription(subscriptionName, initialPosition, startMessageRollbackDurationSec,
+                        replicatedSubscriptionState) //
+                : getNonDurableSubscription(subscriptionName, startMessageId, initialPosition,
+                startMessageRollbackDurationSec);
 
         int maxUnackedMessages = isDurable
                 ? getMaxUnackedMessagesOnConsumer()
@@ -645,7 +662,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         subscriptionFuture.thenAccept(subscription -> {
             try {
                 Consumer consumer = new Consumer(subscription, subType, topic, consumerId, priorityLevel, consumerName,
-                                                 maxUnackedMessages, cnx, cnx.getAuthRole(), metadata, readCompacted, initialPosition, keySharedMeta);
+                        maxUnackedMessages, cnx, cnx.getAuthRole(), metadata,
+                        readCompacted, initialPosition, keySharedMeta);
                 addConsumerToSubscription(subscription, consumer);
 
                 checkBackloggedCursors();
@@ -687,17 +705,17 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     private int unackedMessagesExceededOnSubscription(Policies data) {
-        final int maxUnackedMessages = data.max_unacked_messages_per_subscription > -1 ?
-                data.max_unacked_messages_per_subscription :
-                brokerService.pulsar().getConfiguration().getMaxUnackedMessagesPerSubscription();
+        final int maxUnackedMessages = data.max_unacked_messages_per_subscription > -1
+                ? data.max_unacked_messages_per_subscription
+                : brokerService.pulsar().getConfiguration().getMaxUnackedMessagesPerSubscription();
 
         return maxUnackedMessages;
     }
 
     private int unackedMessagesExceededOnConsumer(Policies data) {
-        final int maxUnackedMessages = data.max_unacked_messages_per_consumer > -1 ?
-                data.max_unacked_messages_per_consumer :
-                brokerService.pulsar().getConfiguration().getMaxUnackedMessagesPerConsumer();
+        final int maxUnackedMessages = data.max_unacked_messages_per_consumer > -1
+                ? data.max_unacked_messages_per_consumer
+                : brokerService.pulsar().getConfiguration().getMaxUnackedMessagesPerConsumer();
 
         return maxUnackedMessages;
     }
@@ -733,7 +751,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
             @Override
             public void openCursorFailed(ManagedLedgerException exception, Object ctx) {
-                log.warn("[{}] Failed to create subscription for {}: {}", topic, subscriptionName, exception.getMessage());
+                log.warn("[{}] Failed to create subscription for {}: {}", topic, subscriptionName,
+                        exception.getMessage());
                 decrementUsageCount();
                 subscriptionFuture.completeExceptionally(new PersistenceException(exception));
                 if (exception instanceof ManagedLedgerFencedException) {
@@ -808,15 +827,16 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     @Override
-    public CompletableFuture<Subscription> createSubscription(String subscriptionName, InitialPosition initialPosition, boolean replicateSubscriptionState) {
-        return getDurableSubscription(subscriptionName, initialPosition, 0 /*avoid reseting cursor*/, replicateSubscriptionState);
+    public CompletableFuture<Subscription> createSubscription(String subscriptionName, InitialPosition initialPosition,
+                                                              boolean replicateSubscriptionState) {
+        return getDurableSubscription(subscriptionName, initialPosition,
+                0 /*avoid reseting cursor*/, replicateSubscriptionState);
     }
 
     /**
-     * Delete the cursor ledger for a given subscription
+     * Delete the cursor ledger for a given subscription.
      *
-     * @param subscriptionName
-     *            Subscription for which the cursor ledger is to be deleted
+     * @param subscriptionName Subscription for which the cursor ledger is to be deleted
      * @return Completable future indicating completion of unsubscribe operation Completed exceptionally with:
      *         ManagedLedgerException if cursor ledger delete fails
      */
@@ -852,7 +872,7 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     /**
-     * Delete the managed ledger associated with this topic
+     * Delete the managed ledger associated with this topic.
      *
      * @return Completable future indicating completion of delete operation Completed exceptionally with:
      *         IllegalStateException if topic is still active ManagedLedgerException if ledger delete operation fails
@@ -862,7 +882,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         return delete(false, false, false);
     }
 
-    private CompletableFuture<Void> delete(boolean failIfHasSubscriptions, boolean failIfHasBacklogs, boolean deleteSchema) {
+    private CompletableFuture<Void> delete(boolean failIfHasSubscriptions,
+                                           boolean failIfHasBacklogs, boolean deleteSchema) {
         return delete(failIfHasSubscriptions, failIfHasBacklogs, false, deleteSchema);
     }
 
@@ -879,15 +900,16 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     /**
-     * Delete the managed ledger associated with this topic
+     * Delete the managed ledger associated with this topic.
      *
      * @param failIfHasSubscriptions
      *            Flag indicating whether delete should succeed if topic still has unconnected subscriptions. Set to
      *            false when called from admin API (it will delete the subs too), and set to true when called from GC
      *            thread
      * @param closeIfClientsConnected
-     *            Flag indicate whether explicitly close connected producers/consumers/replicators before trying to delete topic. If
-     *            any client is connected to a topic and if this flag is disable then this operation fails.
+     *            Flag indicate whether explicitly close connected
+     *            producers/consumers/replicators before trying to delete topic.
+     *            If any client is connected to a topic and if this flag is disable then this operation fails.
      * @param deleteSchema
      *            Flag indicating whether delete the schema defined for topic if exist.
      *
@@ -936,9 +958,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
                 //  2. We want to kick out everyone and forcefully delete the topic.
                 //     In this case, we shouldn't care if the usageCount is 0 or not, just proceed
                 if (currentUsageCount() ==  0 || (closeIfClientsConnected && !failIfHasSubscriptions)) {
-                    CompletableFuture<SchemaVersion> deleteSchemaFuture = deleteSchema ?
-                            deleteSchema()
-                            : CompletableFuture.completedFuture(null);
+                    CompletableFuture<SchemaVersion> deleteSchemaFuture =
+                            deleteSchema ? deleteSchema() : CompletableFuture.completedFuture(null);
 
                     deleteSchemaFuture.whenComplete((v, ex) -> {
                         if (ex != null) {
@@ -955,7 +976,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
                                     subscribeRateLimiter.ifPresent(SubscribeRateLimiter::close);
 
-                                    brokerService.pulsar().getTopicPoliciesService().unregisterListener(TopicName.get(topic), getPersistentTopic());
+                                    brokerService.pulsar().getTopicPoliciesService()
+                                            .unregisterListener(TopicName.get(topic), getPersistentTopic());
                                     log.info("[{}] Topic deleted", topic);
                                     deleteFuture.complete(null);
                                 }
@@ -997,7 +1019,7 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     /**
-     * Close this topic - close all producers and subscriptions associated with this topic
+     * Close this topic - close all producers and subscriptions associated with this topic.
      *
      * @param closeWithoutWaitingClientDisconnect don't wait for client disconnect and forcefully close managed-ledger
      * @return Completable future indicating completion of close operation
@@ -1027,7 +1049,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         producers.values().forEach(producer -> futures.add(producer.disconnect()));
         subscriptions.forEach((s, sub) -> futures.add(sub.disconnect()));
 
-        CompletableFuture<Void> clientCloseFuture = closeWithoutWaitingClientDisconnect ? CompletableFuture.completedFuture(null)
+        CompletableFuture<Void> clientCloseFuture = closeWithoutWaitingClientDisconnect
+                ? CompletableFuture.completedFuture(null)
                 : FutureUtil.waitForAll(futures);
 
         clientCloseFuture.thenRun(() -> {
@@ -1044,7 +1067,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
                     subscribeRateLimiter.ifPresent(SubscribeRateLimiter::close);
 
-                    brokerService.pulsar().getTopicPoliciesService().unregisterListener(TopicName.get(topic), getPersistentTopic());
+                    brokerService.pulsar().getTopicPoliciesService()
+                            .unregisterListener(TopicName.get(topic), getPersistentTopic());
                     log.info("[{}] Topic closed", topic);
                     closeFuture.complete(null);
                 }
@@ -1183,11 +1207,12 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     public void checkMessageExpiry() {
         try {
             //If topic level policy or message ttl is not set, fall back to namespace level config.
-            int message_ttl_in_seconds = getMessageTTL();
+            int messageTtlInSeconds = getMessageTTL();
 
-            if (message_ttl_in_seconds != 0) {
-                subscriptions.forEach((subName, sub) -> sub.expireMessages(message_ttl_in_seconds));
-                replicators.forEach((region, replicator) -> ((PersistentReplicator)replicator).expireMessages(message_ttl_in_seconds));
+            if (messageTtlInSeconds != 0) {
+                subscriptions.forEach((subName, sub) -> sub.expireMessages(messageTtlInSeconds));
+                replicators.forEach((region, replicator)
+                        -> ((PersistentReplicator) replicator).expireMessages(messageTtlInSeconds));
             }
         } catch (Exception e) {
             if (log.isDebugEnabled()) {
@@ -1249,23 +1274,26 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
         String replicatorName = PersistentReplicator.getReplicatorName(replicatorPrefix, remoteCluster);
         String localCluster = brokerService.pulsar().getConfiguration().getClusterName();
-        boolean isReplicatorStarted = addReplicationCluster(remoteCluster, PersistentTopic.this, replicatorName, localCluster);
+        boolean isReplicatorStarted = addReplicationCluster(remoteCluster,
+                PersistentTopic.this, replicatorName, localCluster);
         if (isReplicatorStarted) {
             future.complete(null);
         } else {
             future.completeExceptionally(new NamingException(
-                PersistentTopic.this.getName() + " Failed to start replicator " + remoteCluster));
+                    PersistentTopic.this.getName() + " Failed to start replicator " + remoteCluster));
         }
 
         return future;
     }
 
-    protected boolean addReplicationCluster(String remoteCluster, PersistentTopic persistentTopic, String replicatorName,
-            String localCluster) {
+    protected boolean addReplicationCluster(String remoteCluster, PersistentTopic persistentTopic,
+                                            String replicatorName,
+                                            String localCluster) {
         AtomicBoolean isReplicatorStarted = new AtomicBoolean(true);
         replicators.computeIfAbsent(remoteCluster, r -> {
             try {
-                return new PersistentReplicator(PersistentTopic.this, replicatorName, localCluster, remoteCluster,
+                return new PersistentReplicator(PersistentTopic.this, replicatorName, localCluster,
+                        remoteCluster,
                         brokerService, ledger);
             } catch (NamingException e) {
                 isReplicatorStarted.set(false);
@@ -1348,8 +1376,9 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     @Override
-    public void updateRates(NamespaceStats nsStats, NamespaceBundleStats bundleStats, StatsOutputStream topicStatsStream,
-            ClusterReplicationMetrics replStats, String namespace, boolean hydratePublishers) {
+    public void updateRates(NamespaceStats nsStats, NamespaceBundleStats bundleStats,
+                            StatsOutputStream topicStatsStream,
+                            ClusterReplicationMetrics replStats, String namespace, boolean hydratePublishers) {
 
         TopicStatsHelper topicStatsHelper = threadLocalTopicStats.get();
         topicStatsHelper.reset();
@@ -1486,19 +1515,25 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
                 topicStatsStream.endList();
 
                 // Populate subscription specific stats here
-                topicStatsStream.writePair("msgBacklog", subscription.getNumberOfEntriesInBacklog(false));
+                topicStatsStream.writePair("msgBacklog",
+                        subscription.getNumberOfEntriesInBacklog(false));
                 topicStatsStream.writePair("msgRateExpired", subscription.getExpiredMessageRate());
                 topicStatsStream.writePair("msgRateOut", subMsgRateOut);
                 topicStatsStream.writePair("msgThroughputOut", subMsgThroughputOut);
                 topicStatsStream.writePair("msgRateRedeliver", subMsgRateRedeliver);
-                topicStatsStream.writePair("numberOfEntriesSinceFirstNotAckedMessage", subscription.getNumberOfEntriesSinceFirstNotAckedMessage());
-                topicStatsStream.writePair("totalNonContiguousDeletedMessagesRange", subscription.getTotalNonContiguousDeletedMessagesRange());
+                topicStatsStream.writePair("numberOfEntriesSinceFirstNotAckedMessage",
+                        subscription.getNumberOfEntriesSinceFirstNotAckedMessage());
+                topicStatsStream.writePair("totalNonContiguousDeletedMessagesRange",
+                        subscription.getTotalNonContiguousDeletedMessagesRange());
                 topicStatsStream.writePair("type", subscription.getTypeString());
                 if (Subscription.isIndividualAckMode(subscription.getType())) {
-                    if(subscription.getDispatcher() instanceof PersistentDispatcherMultipleConsumers) {
-                        PersistentDispatcherMultipleConsumers dispatcher = (PersistentDispatcherMultipleConsumers)subscription.getDispatcher();
-                        topicStatsStream.writePair("blockedSubscriptionOnUnackedMsgs",  dispatcher.isBlockedDispatcherOnUnackedMsgs());
-                        topicStatsStream.writePair("unackedMessages", dispatcher.getTotalUnackedMessages());
+                    if (subscription.getDispatcher() instanceof PersistentDispatcherMultipleConsumers) {
+                        PersistentDispatcherMultipleConsumers dispatcher =
+                                (PersistentDispatcherMultipleConsumers) subscription.getDispatcher();
+                        topicStatsStream.writePair("blockedSubscriptionOnUnackedMsgs",
+                                dispatcher.isBlockedDispatcherOnUnackedMsgs());
+                        topicStatsStream.writePair("unackedMessages",
+                                dispatcher.getTotalUnackedMessages());
                     }
                 }
 
@@ -1568,7 +1603,7 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
         TopicStats stats = new TopicStats();
 
-        ObjectObjectHashMap<String, PublisherStats> remotePublishersStats = new ObjectObjectHashMap<String, PublisherStats>();
+        ObjectObjectHashMap<String, PublisherStats> remotePublishersStats = new ObjectObjectHashMap<>();
 
         producers.values().forEach(producer -> {
             PublisherStats publisherStats = producer.getStats();
@@ -1671,8 +1706,9 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         info.size = -1;
 
         try {
-            Optional<CompactedTopicImpl.CompactedTopicContext> compactedTopicContext = ((CompactedTopicImpl) compactedTopic)
-                    .getCompactedTopicContext();
+            Optional<CompactedTopicImpl.CompactedTopicContext> compactedTopicContext =
+                    ((CompactedTopicImpl) compactedTopic)
+                            .getCompactedTopicContext();
             if (compactedTopicContext.isPresent()) {
                 CompactedTopicImpl.CompactedTopicContext ledgerContext = compactedTopicContext.get();
                 info.ledgerId = ledgerContext.getLedger().getId();
@@ -1831,7 +1867,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
                                 , topicName.getDomain().value());
                         Set<String> cache = null;
                         try {
-                            cache = brokerService.pulsar().getLocalZkCacheService().managedLedgerListCache().get(managedPath);
+                            cache = brokerService.pulsar().getLocalZkCacheService()
+                                    .managedLedgerListCache().get(managedPath);
                         } catch (Exception e) {
                             deleteMetadataFuture.completeExceptionally(e);
                         }
@@ -1957,7 +1994,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     @Override
     public CompletableFuture<Void> onPoliciesUpdate(Policies data) {
         if (log.isDebugEnabled()) {
-            log.debug("[{}] isEncryptionRequired changes: {} -> {}", topic, isEncryptionRequired, data.encryption_required);
+            log.debug("[{}] isEncryptionRequired changes: {} -> {}", topic, isEncryptionRequired,
+                    data.encryption_required);
         }
         isEncryptionRequired = data.encryption_required;
 
@@ -1982,7 +2020,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
         } else {
             ServiceConfiguration cfg = brokerService.getPulsar().getConfiguration();
             resetInactiveTopicPolicies(cfg.getBrokerDeleteInactiveTopicsMode()
-                    , cfg.getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds(), cfg.isBrokerDeleteInactiveTopicsEnabled());
+                    , cfg.getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds(),
+                    cfg.isBrokerDeleteInactiveTopicsEnabled());
         }
 
         initializeDispatchRateLimiterIfNeeded(Optional.ofNullable(data));
@@ -2131,7 +2170,7 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     /**
-     * Clears backlog for all cursors in the topic
+     * Clears backlog for all cursors in the topic.
      *
      * @return
      */
@@ -2267,7 +2306,7 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
                     new OffloadCallback() {
                         @Override
                         public void offloadComplete(Position pos, Object ctx) {
-                            PositionImpl impl = (PositionImpl)pos;
+                            PositionImpl impl = (PositionImpl) pos;
                             log.info("[{}] Completed successfully offload operation at messageId {}", topic, messageId);
                             promise.complete(new MessageIdImpl(impl.getLedgerId(), impl.getEntryId(), -1));
                         }
@@ -2327,13 +2366,14 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     public CompletableFuture<Void> addSchemaIfIdleOrCheckCompatible(SchemaData schema) {
         return hasSchema()
             .thenCompose((hasSchema) -> {
-                    if (hasSchema || isActive(InactiveTopicDeleteMode.delete_when_no_subscriptions) || ledger.getTotalSize() != 0) {
-                        return checkSchemaCompatibleForConsumer(schema);
-                    } else {
-                        return addSchema(schema).thenCompose(schemaVersion ->
-                                CompletableFuture.completedFuture(null));
-                    }
-                });
+                if (hasSchema || isActive(InactiveTopicDeleteMode.delete_when_no_subscriptions)
+                        || ledger.getTotalSize() != 0) {
+                    return checkSchemaCompatibleForConsumer(schema);
+                } else {
+                    return addSchema(schema).thenCompose(schemaVersion ->
+                            CompletableFuture.completedFuture(null));
+                }
+            });
     }
 
     private synchronized void checkReplicatedSubscriptionControllerState() {
@@ -2344,7 +2384,7 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
             }
         });
 
-        if (shouldBeEnabled.get() == false) {
+        if (!shouldBeEnabled.get()) {
             log.info("[{}] There are no replicated subscriptions on the topic", topic);
         }
 
@@ -2353,7 +2393,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
     private synchronized void checkReplicatedSubscriptionControllerState(boolean shouldBeEnabled) {
         boolean isCurrentlyEnabled = replicatedSubscriptionsController.isPresent();
-        boolean isEnableReplicatedSubscriptions = brokerService.pulsar().getConfiguration().isEnableReplicatedSubscriptions();
+        boolean isEnableReplicatedSubscriptions =
+                brokerService.pulsar().getConfiguration().isEnableReplicatedSubscriptions();
 
         if (shouldBeEnabled && !isCurrentlyEnabled && isEnableReplicatedSubscriptions) {
             log.info("[{}] Enabling replicated subscriptions controller", topic);
@@ -2465,7 +2506,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
             return;
         }
 
-        MessageDeduplication.MessageDupStatus status = messageDeduplication.isDuplicate(publishContext, headersAndPayload);
+        MessageDeduplication.MessageDupStatus status =
+                messageDeduplication.isDuplicate(publishContext, headersAndPayload);
         switch (status) {
             case NotDup:
                 getTransactionBuffer(true)
@@ -2474,7 +2516,7 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
                         .thenAccept(position -> {
                             decrementPendingWriteOpsAndCheck();
                             publishContext.completed(null,
-                                    ((PositionImpl)position).getLedgerId(), ((PositionImpl)position).getEntryId());
+                                    ((PositionImpl) position).getLedgerId(), ((PositionImpl) position).getEntryId());
                         })
                         .exceptionally(throwable -> {
                             decrementPendingWriteOpsAndCheck();
@@ -2603,7 +2645,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
             //namespace-level policies is null , so use broker level
             ServiceConfiguration cfg = brokerService.getPulsar().getConfiguration();
             resetInactiveTopicPolicies(cfg.getBrokerDeleteInactiveTopicsMode()
-                    , cfg.getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds(), cfg.isBrokerDeleteInactiveTopicsEnabled());
+                    , cfg.getBrokerDeleteInactiveTopicsMaxInactiveDurationSeconds(),
+                    cfg.isBrokerDeleteInactiveTopicsEnabled());
         }
 
         initializeTopicSubscribeRateLimiterIfNeeded(Optional.ofNullable(policies));
@@ -2627,8 +2670,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
 
     private void initializeTopicSubscribeRateLimiterIfNeeded(Optional<TopicPolicies> policies) {
         synchronized (subscribeRateLimiter) {
-            if (!subscribeRateLimiter.isPresent() && policies.isPresent() &&
-                    policies.get().getSubscribeRate() != null) {
+            if (!subscribeRateLimiter.isPresent() && policies.isPresent()
+                    && policies.get().getSubscribeRate() != null) {
                 this.subscribeRateLimiter = Optional.of(new SubscribeRateLimiter(this));
             }
         }
@@ -2639,8 +2682,8 @@ public class PersistentTopic extends AbstractTopic implements Topic, AddEntryCal
     }
 
     private void registerTopicPolicyListener() {
-        if (brokerService.pulsar().getConfig().isSystemTopicEnabled() &&
-                brokerService.pulsar().getConfig().isTopicLevelPoliciesEnabled()) {
+        if (brokerService.pulsar().getConfig().isSystemTopicEnabled()
+                && brokerService.pulsar().getConfig().isTopicLevelPoliciesEnabled()) {
             TopicName topicName = TopicName.get(topic);
             TopicName cloneTopicName = topicName;
             if (topicName.isPartitioned()) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionSnapshotCache.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionSnapshotCache.java
index a49e5a4..f69af32 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionSnapshotCache.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionSnapshotCache.java
@@ -26,7 +26,7 @@ import org.apache.pulsar.common.api.proto.PulsarMarkers.MessageIdData;
 import org.apache.pulsar.common.api.proto.PulsarMarkers.ReplicatedSubscriptionsSnapshot;
 
 /**
- * Store the last N snapshots that were scanned by a particular subscription
+ * Store the last N snapshots that were scanned by a particular subscription.
  */
 @Slf4j
 public class ReplicatedSubscriptionSnapshotCache {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionsController.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionsController.java
index 69d2b38..73350c3 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionsController.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionsController.java
@@ -57,7 +57,8 @@ public class ReplicatedSubscriptionsController implements AutoCloseable, Topic.P
 
     private final ScheduledFuture<?> timer;
 
-    private final ConcurrentMap<String, ReplicatedSubscriptionsSnapshotBuilder> pendingSnapshots = new ConcurrentHashMap<>();
+    private final ConcurrentMap<String, ReplicatedSubscriptionsSnapshotBuilder> pendingSnapshots =
+            new ConcurrentHashMap<>();
 
     private final static Gauge pendingSnapshotsMetric = Gauge
             .build("pulsar_replicated_subscriptions_pending_snapshots",
@@ -229,7 +230,7 @@ public class ReplicatedSubscriptionsController implements AutoCloseable, Topic.P
     }
 
     /**
-     * From Topic.PublishContext
+     * From Topic.PublishContext.
      */
     @Override
     public void completed(Exception e, long ledgerId, long entryId) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SubscribeRateLimiter.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SubscribeRateLimiter.java
index 9a6797d..ae26b45 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SubscribeRateLimiter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SubscribeRateLimiter.java
@@ -62,7 +62,8 @@ public class SubscribeRateLimiter {
 
         // get subscribeRate from broker.conf
         if (this.subscribeRate == null) {
-            this.subscribeRate = new SubscribeRate(brokerService.pulsar().getConfiguration().getSubscribeThrottlingRatePerConsumer(),
+            this.subscribeRate = new SubscribeRate(brokerService.pulsar()
+                    .getConfiguration().getSubscribeThrottlingRatePerConsumer(),
                     brokerService.pulsar().getConfiguration().getSubscribeRatePeriodPerConsumerInSecond());
 
         }
@@ -73,12 +74,13 @@ public class SubscribeRateLimiter {
     }
 
     /**
-     * returns available subscribes if subscribe-throttling is enabled else it returns -1
+     * returns available subscribes if subscribe-throttling is enabled else it returns -1.
      *
      * @return
      */
     public long getAvailableSubscribeRateLimit(ConsumerIdentifier consumerIdentifier) {
-        return subscribeRateLimiter.get(consumerIdentifier) == null ? -1 : subscribeRateLimiter.get(consumerIdentifier).getAvailablePermits();
+        return subscribeRateLimiter.get(consumerIdentifier)
+                == null ? -1 : subscribeRateLimiter.get(consumerIdentifier).getAvailablePermits();
     }
 
     /**
@@ -88,20 +90,24 @@ public class SubscribeRateLimiter {
      */
     public synchronized boolean tryAcquire(ConsumerIdentifier consumerIdentifier) {
         addSubscribeLimiterIfAbsent(consumerIdentifier);
-        return subscribeRateLimiter.get(consumerIdentifier) == null || subscribeRateLimiter.get(consumerIdentifier).tryAcquire();
+        return subscribeRateLimiter.get(consumerIdentifier)
+                == null || subscribeRateLimiter.get(consumerIdentifier).tryAcquire();
     }
 
     /**
-     * checks if subscribe-rate limit is configured and if it's configured then check if subscribe are available or not.
+     * checks if subscribe-rate limit is configured and if it's configured then check if
+     * subscribe are available or not.
      *
      * @return
      */
     public boolean subscribeAvailable(ConsumerIdentifier consumerIdentifier) {
-        return (subscribeRateLimiter.get(consumerIdentifier) == null|| subscribeRateLimiter.get(consumerIdentifier).getAvailablePermits() > 0);
+        return (subscribeRateLimiter.get(consumerIdentifier)
+                == null || subscribeRateLimiter.get(consumerIdentifier).getAvailablePermits() > 0);
     }
 
     /**
-     * Update subscribe-throttling-rate. gives first priority to namespace-policy configured subscribe rate else applies
+     * Update subscribe-throttling-rate. gives first priority to
+     * namespace-policy configured subscribe rate else applies
      * default broker subscribe-throttling-rate
      */
     private synchronized void addSubscribeLimiterIfAbsent(ConsumerIdentifier consumerIdentifier) {
@@ -132,11 +138,13 @@ public class SubscribeRateLimiter {
         // update subscribe-rateLimiter
         if (ratePerConsumer > 0) {
             if (this.subscribeRateLimiter.get(consumerIdentifier) == null) {
-                this.subscribeRateLimiter.put(consumerIdentifier, new RateLimiter(brokerService.pulsar().getExecutor(), ratePerConsumer,
-                        ratePeriod, TimeUnit.SECONDS, null));
+                this.subscribeRateLimiter.put(consumerIdentifier,
+                        new RateLimiter(brokerService.pulsar().getExecutor(), ratePerConsumer,
+                                ratePeriod, TimeUnit.SECONDS, null));
             } else {
-                this.subscribeRateLimiter.get(consumerIdentifier).setRate(ratePerConsumer, ratePeriod, TimeUnit.SECONDS,
-                        null);
+                this.subscribeRateLimiter.get(consumerIdentifier)
+                        .setRate(ratePerConsumer, ratePeriod, TimeUnit.SECONDS,
+                                null);
             }
         } else {
             // subscribe-rate should be disable and close
@@ -245,7 +253,8 @@ public class SubscribeRateLimiter {
      * @return
      */
     public long getSubscribeRatePerConsumer(ConsumerIdentifier consumerIdentifier) {
-        return subscribeRateLimiter.get(consumerIdentifier) != null ? subscribeRateLimiter.get(consumerIdentifier).getRate() : -1;
+        return subscribeRateLimiter.get(consumerIdentifier)
+                != null ? subscribeRateLimiter.get(consumerIdentifier).getRate() : -1;
     }
 
     private static boolean isSubscribeRateEnabled(SubscribeRate subscribeRate) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SystemTopic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SystemTopic.java
index 0b714c6..5735247 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SystemTopic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/SystemTopic.java
@@ -25,7 +25,8 @@ import org.apache.pulsar.broker.service.BrokerServiceException;
 
 public class SystemTopic extends PersistentTopic {
 
-    public SystemTopic(String topic, ManagedLedger ledger, BrokerService brokerService) throws BrokerServiceException.NamingException {
+    public SystemTopic(String topic, ManagedLedger ledger, BrokerService brokerService)
+            throws BrokerServiceException.NamingException {
         super(topic, ledger, brokerService);
     }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AlwaysSchemaValidator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AlwaysSchemaValidator.java
index e979828..ed5b4b4 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AlwaysSchemaValidator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AlwaysSchemaValidator.java
@@ -25,7 +25,7 @@ import org.apache.avro.SchemaValidator;
  * A schema validator that always reports as compatible.
  */
 class AlwaysSchemaValidator implements SchemaValidator {
-    static AlwaysSchemaValidator INSTANCE = new AlwaysSchemaValidator();
+    final static AlwaysSchemaValidator INSTANCE = new AlwaysSchemaValidator();
 
     @Override
     public void validate(Schema toValidate, Iterable<Schema> existing) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AvroSchemaBasedCompatibilityCheck.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AvroSchemaBasedCompatibilityCheck.java
index 0ac6fcf..ce4bb2a 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AvroSchemaBasedCompatibilityCheck.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/AvroSchemaBasedCompatibilityCheck.java
@@ -39,12 +39,14 @@ import org.apache.pulsar.common.protocol.schema.SchemaData;
 abstract class AvroSchemaBasedCompatibilityCheck implements SchemaCompatibilityCheck {
 
     @Override
-    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException {
+    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException {
         checkCompatible(Collections.singletonList(from), to, strategy);
     }
 
     @Override
-    public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException {
+    public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException {
         LinkedList<Schema> fromList = new LinkedList<>();
         checkArgument(from != null, "check compatibility list is null");
         try {
@@ -67,7 +69,7 @@ abstract class AvroSchemaBasedCompatibilityCheck implements SchemaCompatibilityC
         }
     }
 
-    static SchemaValidator createSchemaValidator(SchemaCompatibilityStrategy compatibilityStrategy) throws IncompatibleSchemaException {
+    static SchemaValidator createSchemaValidator(SchemaCompatibilityStrategy compatibilityStrategy) {
         final SchemaValidatorBuilder validatorBuilder = new SchemaValidatorBuilder();
         switch (compatibilityStrategy) {
             case BACKWARD_TRANSITIVE:
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/BookkeeperSchemaStorage.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/BookkeeperSchemaStorage.java
index afafab6..475e6f9 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/BookkeeperSchemaStorage.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/BookkeeperSchemaStorage.java
@@ -79,7 +79,8 @@ public class BookkeeperSchemaStorage implements SchemaStorage {
     // schemaId => ledgers of the schemaId
     private final Map<String, List<Long>> schemaLedgers = new ConcurrentHashMap<>();
 
-    private final ConcurrentMap<String, CompletableFuture<StoredSchema>> readSchemaOperations = new ConcurrentHashMap<>();
+    private final ConcurrentMap<String, CompletableFuture<StoredSchema>> readSchemaOperations =
+            new ConcurrentHashMap<>();
 
     @VisibleForTesting
     BookkeeperSchemaStorage(PulsarService pulsar) {
@@ -266,22 +267,25 @@ public class BookkeeperSchemaStorage implements SchemaStorage {
 
                 //don't check the schema whether already exist
                 return readSchemaEntry(locator.getIndexList().get(0).getPosition())
-                        .thenCompose(schemaEntry -> addNewSchemaEntryToStore(schemaId, locator.getIndexList(), data).thenCompose(
-                        position -> {
-                            CompletableFuture<Long> future = new CompletableFuture<>();
-                            updateSchemaLocator(schemaId, optLocatorEntry.get(), position, hash)
-                                    .thenAccept(future::complete)
-                                    .exceptionally(ex -> {
-                                        if (ex.getCause() instanceof KeeperException.BadVersionException) {
-                                            // There was a race condition on the schema creation. Since it has now been created,
-                                            // retry the whole operation so that we have a chance to recover without bubbling error
-                                            putSchema(schemaId, data, hash)
-                                                    .thenAccept(future::complete)
-                                                    .exceptionally(ex2 -> {
-                                                        future.completeExceptionally(ex2);
-                                                        return null;
-                                                    });
-                                        } else {
+                        .thenCompose(schemaEntry -> addNewSchemaEntryToStore(schemaId,
+                                locator.getIndexList(), data).thenCompose(
+                                position -> {
+                                    CompletableFuture<Long> future = new CompletableFuture<>();
+                                    updateSchemaLocator(schemaId, optLocatorEntry.get(), position, hash)
+                                            .thenAccept(future::complete)
+                                            .exceptionally(ex -> {
+                                                if (ex.getCause() instanceof KeeperException.BadVersionException) {
+                                                    // There was a race condition on the schema creation.
+                                                    // Since it has now been created,
+                                                    // retry the whole operation so that we have a chance to
+                                                    // recover without bubbling error
+                                                    putSchema(schemaId, data, hash)
+                                                            .thenAccept(future::complete)
+                                                            .exceptionally(ex2 -> {
+                                                                future.completeExceptionally(ex2);
+                                                                return null;
+                                                            });
+                                                } else {
                                             // For other errors, just fail the operation
                                             future.completeExceptionally(ex);
                                         }
@@ -296,8 +300,8 @@ public class BookkeeperSchemaStorage implements SchemaStorage {
                 createNewSchema(schemaId, data, hash)
                         .thenAccept(future::complete)
                         .exceptionally(ex -> {
-                            if (ex.getCause() instanceof NodeExistsException ||
-                                    ex.getCause() instanceof KeeperException.BadVersionException) {
+                            if (ex.getCause() instanceof NodeExistsException
+                                    || ex.getCause() instanceof KeeperException.BadVersionException) {
                                 // There was a race condition on the schema creation. Since it has now been created,
                                 // retry the whole operation so that we have a chance to recover without bubbling error
                                 // back to producer/consumer
@@ -472,7 +476,8 @@ public class BookkeeperSchemaStorage implements SchemaStorage {
     }
 
     @NotNull
-    private CompletableFuture<Void> updateSchemaLocator(String id, SchemaStorageFormat.SchemaLocator schema, int version) {
+    private CompletableFuture<Void> updateSchemaLocator(String id,
+                                                        SchemaStorageFormat.SchemaLocator schema, int version) {
         CompletableFuture<Void> future = new CompletableFuture<>();
         zooKeeper.setData(id, schema.toByteArray(), version, (rc, path, ctx, stat) -> {
             Code code = Code.get(rc);
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/JsonSchemaCompatibilityCheck.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/JsonSchemaCompatibilityCheck.java
index f12b6e5..ea4b537 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/JsonSchemaCompatibilityCheck.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/JsonSchemaCompatibilityCheck.java
@@ -41,7 +41,8 @@ public class JsonSchemaCompatibilityCheck extends AvroSchemaBasedCompatibilityCh
     }
 
     @Override
-    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException {
+    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException {
         if (isAvroSchema(from)) {
             if (isAvroSchema(to)) {
                 // if both producer and broker have the schema in avro format
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/KeyValueSchemaCompatibilityCheck.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/KeyValueSchemaCompatibilityCheck.java
index 9da4674..2bea472 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/KeyValueSchemaCompatibilityCheck.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/KeyValueSchemaCompatibilityCheck.java
@@ -55,12 +55,14 @@ public class KeyValueSchemaCompatibilityCheck implements SchemaCompatibilityChec
     }
 
     @Override
-    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException {
+    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException {
         checkCompatible(Collections.singletonList(from), to, strategy);
     }
 
     @Override
-    public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException  {
+    public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException {
         if (strategy == SchemaCompatibilityStrategy.ALWAYS_COMPATIBLE) {
             return;
         }
@@ -80,12 +82,14 @@ public class KeyValueSchemaCompatibilityCheck implements SchemaCompatibilityChec
             }
             fromKeyValue = decodeKeyValueSchemaData(schemaData);
             if (fromKeyValue.getKey().getType() != toKeyType || fromKeyValue.getValue().getType() != toValueType) {
-                throw new IncompatibleSchemaException(String.format("Key schemas or Value schemas are different schema type, " +
-                        "from key schema type is %s and to key schema is %s, from value schema is %s and to value schema is %s",
-                        fromKeyValue.getKey().getType(),
-                        toKeyType,
-                        fromKeyValue.getValue().getType(),
-                        toValueType));
+                throw new IncompatibleSchemaException(
+                        String.format("Key schemas or Value schemas are different schema type, "
+                                        + "from key schema type is %s and to key schema is %s,"
+                                        + " from value schema is %s and to value schema is %s",
+                                fromKeyValue.getKey().getType(),
+                                toKeyType,
+                                fromKeyValue.getValue().getType(),
+                                toValueType));
             }
             fromKeyList.addFirst(fromKeyValue.getKey());
             fromValueList.addFirst(fromKeyValue.getValue());
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/NeverSchemaValidator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/NeverSchemaValidator.java
index fe2b547..81ef0d7 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/NeverSchemaValidator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/NeverSchemaValidator.java
@@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory;
  */
 class NeverSchemaValidator implements SchemaValidator {
     private final static Logger log = LoggerFactory.getLogger(NeverSchemaValidator.class);
-    static NeverSchemaValidator INSTANCE = new NeverSchemaValidator();
+    final static NeverSchemaValidator INSTANCE = new NeverSchemaValidator();
 
     @Override
     public void validate(Schema toValidate, Iterable<Schema> existing)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/ProtobufNativeSchemaCompatibilityCheck.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/ProtobufNativeSchemaCompatibilityCheck.java
index b0f4644..58545370 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/ProtobufNativeSchemaCompatibilityCheck.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/ProtobufNativeSchemaCompatibilityCheck.java
@@ -36,7 +36,8 @@ public class ProtobufNativeSchemaCompatibilityCheck implements SchemaCompatibili
     }
 
     @Override
-    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException {
+    public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException {
         Descriptor fromDescriptor = ProtobufNativeSchemaUtils.deserialize(from.getData());
         Descriptor toDescriptor = ProtobufNativeSchemaUtils.deserialize(to.getData());
         switch (strategy) {
@@ -56,7 +57,8 @@ public class ProtobufNativeSchemaCompatibilityCheck implements SchemaCompatibili
     }
 
     @Override
-    public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException {
+    public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException {
         for (SchemaData schemaData : from) {
             checkCompatible(schemaData, to, strategy);
         }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaCompatibilityCheck.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaCompatibilityCheck.java
index 9b6ffcc..ade8e72 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaCompatibilityCheck.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaCompatibilityCheck.java
@@ -28,21 +28,20 @@ public interface SchemaCompatibilityCheck {
     SchemaType getSchemaType();
 
     /**
-     *
-     * @param from the current schema i.e. schema that the broker has
-     * @param to the future schema i.e. the schema sent by the producer
+     * @param from     the current schema i.e. schema that the broker has
+     * @param to       the future schema i.e. the schema sent by the producer
      * @param strategy the strategy to use when comparing schemas
      */
-    void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException;
+    void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException;
 
     /**
-     *
-     * @param from the current schemas i.e. schemas that the broker has
-     * @param to the future schema i.e. the schema sent by the producer
+     * @param from     the current schemas i.e. schemas that the broker has
+     * @param to       the future schema i.e. the schema sent by the producer
      * @param strategy the strategy to use when comparing schemas
-     * @return whether the schemas are compatible
      */
-    void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException;
+    void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy)
+            throws IncompatibleSchemaException;
 
     default boolean isCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy) {
         try {
@@ -70,14 +69,16 @@ public interface SchemaCompatibilityCheck {
         }
 
         @Override
-        public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy) throws IncompatibleSchemaException {
+        public void checkCompatible(SchemaData from, SchemaData to, SchemaCompatibilityStrategy strategy)
+                throws IncompatibleSchemaException {
             if (strategy == SchemaCompatibilityStrategy.ALWAYS_INCOMPATIBLE) {
                 throw new IncompatibleSchemaException("Schema compatibility strategy is ALWAYS_INCOMPATIBLE");
             }
         }
 
         @Override
-        public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy)  throws IncompatibleSchemaException {
+        public void checkCompatible(Iterable<SchemaData> from, SchemaData to, SchemaCompatibilityStrategy strategy)
+                throws IncompatibleSchemaException {
             if (strategy == SchemaCompatibilityStrategy.ALWAYS_INCOMPATIBLE) {
                 throw new IncompatibleSchemaException("Schema compatibility strategy is ALWAYS_INCOMPATIBLE");
             }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistry.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistry.java
index 0470c02..b756869 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistry.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistry.java
@@ -79,9 +79,9 @@ public interface SchemaRegistry extends AutoCloseable {
                 return false;
             }
             SchemaAndMetadata that = (SchemaAndMetadata) o;
-            return version == that.version &&
-                Objects.equals(id, that.id) &&
-                Objects.equals(schema, that.schema);
+            return version == that.version
+                    && Objects.equals(id, that.id)
+                    && Objects.equals(schema, that.schema);
         }
 
         @Override
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryService.java
index 5c9b33c..1d29cc0 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryService.java
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public interface SchemaRegistryService extends SchemaRegistry {
-    Logger log = LoggerFactory.getLogger(SchemaRegistryService.class);
+    Logger LOG = LoggerFactory.getLogger(SchemaRegistryService.class);
     long NO_SCHEMA_VERSION = -1L;
 
     static Map<SchemaType, SchemaCompatibilityCheck> getCheckers(Set<String> checkerClasses) throws Exception {
@@ -49,7 +49,7 @@ public interface SchemaRegistryService extends SchemaRegistry {
                 return SchemaRegistryServiceWithSchemaDataValidator.of(
                         new SchemaRegistryServiceImpl(schemaStorage, checkers));
             } catch (Exception e) {
-                log.warn("Unable to create schema registry storage, defaulting to empty storage", e);
+                LOG.warn("Unable to create schema registry storage, defaulting to empty storage", e);
             }
         }
         return new DefaultSchemaRegistryService();
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryServiceImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryServiceImpl.java
index ddba602..d16f362 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryServiceImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/SchemaRegistryServiceImpl.java
@@ -61,14 +61,16 @@ public class SchemaRegistryServiceImpl implements SchemaRegistryService {
     private final Clock clock;
 
     @VisibleForTesting
-    SchemaRegistryServiceImpl(SchemaStorage schemaStorage, Map<SchemaType, SchemaCompatibilityCheck> compatibilityChecks, Clock clock) {
+    SchemaRegistryServiceImpl(SchemaStorage schemaStorage,
+                              Map<SchemaType, SchemaCompatibilityCheck> compatibilityChecks, Clock clock) {
         this.schemaStorage = schemaStorage;
         this.compatibilityChecks = compatibilityChecks;
         this.clock = clock;
     }
 
     @VisibleForTesting
-    SchemaRegistryServiceImpl(SchemaStorage schemaStorage, Map<SchemaType, SchemaCompatibilityCheck> compatibilityChecks) {
+    SchemaRegistryServiceImpl(SchemaStorage schemaStorage, Map<SchemaType, SchemaCompatibilityCheck>
+            compatibilityChecks) {
         this(schemaStorage, compatibilityChecks, Clock.systemUTC());
     }
 
@@ -178,7 +180,8 @@ public class SchemaRegistryServiceImpl implements SchemaRegistryService {
     }
 
     @Override
-    public CompletableFuture<Boolean> isCompatible(String schemaId, SchemaData schema, SchemaCompatibilityStrategy strategy) {
+    public CompletableFuture<Boolean> isCompatible(String schemaId, SchemaData schema,
+                                                   SchemaCompatibilityStrategy strategy) {
         return checkCompatible(schemaId, schema, strategy).thenApply(v -> true);
     }
 
@@ -232,8 +235,9 @@ public class SchemaRegistryServiceImpl implements SchemaRegistryService {
         SchemaData existingSchemaData = existingSchema.schema;
         if (existingSchemaData.getType().isPrimitive()) {
             if (newSchema.getType() != existingSchemaData.getType()) {
-                throw new IncompatibleSchemaException(String.format("Incompatible primitive schema: " +
-                        "exists schema type %s, new schema type %s", existingSchemaData.getType(), newSchema.getType()));
+                throw new IncompatibleSchemaException(String.format("Incompatible primitive schema: "
+                                + "exists schema type %s, new schema type %s",
+                        existingSchemaData.getType(), newSchema.getType()));
             }
         } else {
             if (!newHash.equals(existingHash)) {
@@ -244,16 +248,17 @@ public class SchemaRegistryServiceImpl implements SchemaRegistryService {
     }
 
     public CompletableFuture<Long> findSchemaVersion(String schemaId, SchemaData schemaData) {
-        return trimDeletedSchemaAndGetList(schemaId).thenCompose(schemaAndMetadataList -> {
-            SchemaHash newHash = SchemaHash.of(schemaData);
-            for (SchemaAndMetadata schemaAndMetadata:schemaAndMetadataList) {
-                if (newHash.equals(SchemaHash.of(schemaAndMetadata.schema))) {
-                    return completedFuture(((LongSchemaVersion)schemaStorage
-                            .versionFromBytes(schemaAndMetadata.version.bytes())).getVersion());
-                }
-            }
-            return completedFuture(NO_SCHEMA_VERSION);
-        });
+        return trimDeletedSchemaAndGetList(schemaId)
+                .thenCompose(schemaAndMetadataList -> {
+                    SchemaHash newHash = SchemaHash.of(schemaData);
+                    for (SchemaAndMetadata schemaAndMetadata : schemaAndMetadataList) {
+                        if (newHash.equals(SchemaHash.of(schemaAndMetadata.schema))) {
+                            return completedFuture(((LongSchemaVersion) schemaStorage
+                                    .versionFromBytes(schemaAndMetadata.version.bytes())).getVersion());
+                        }
+                    }
+                    return completedFuture(NO_SCHEMA_VERSION);
+                });
     }
 
     @Override
@@ -261,14 +266,14 @@ public class SchemaRegistryServiceImpl implements SchemaRegistryService {
                                                               SchemaCompatibilityStrategy strategy) {
         return getSchema(schemaId).thenCompose(existingSchema -> {
             if (existingSchema != null && !existingSchema.schema.isDeleted()) {
-                    if (strategy == SchemaCompatibilityStrategy.BACKWARD ||
-                            strategy == SchemaCompatibilityStrategy.FORWARD ||
-                            strategy == SchemaCompatibilityStrategy.FORWARD_TRANSITIVE ||
-                            strategy == SchemaCompatibilityStrategy.FULL) {
-                        return checkCompatibilityWithLatest(schemaId, schemaData, SchemaCompatibilityStrategy.BACKWARD);
-                    } else {
-                        return checkCompatibilityWithAll(schemaId, schemaData, strategy);
-                    }
+                if (strategy == SchemaCompatibilityStrategy.BACKWARD
+                        || strategy == SchemaCompatibilityStrategy.FORWARD
+                        || strategy == SchemaCompatibilityStrategy.FORWARD_TRANSITIVE
+                        || strategy == SchemaCompatibilityStrategy.FULL) {
+                    return checkCompatibilityWithLatest(schemaId, schemaData, SchemaCompatibilityStrategy.BACKWARD);
+                } else {
+                    return checkCompatibilityWithAll(schemaId, schemaData, strategy);
+                }
             } else {
                 return FutureUtil.failedFuture(new IncompatibleSchemaException("Topic does not have schema to check"));
             }
@@ -323,10 +328,11 @@ public class SchemaRegistryServiceImpl implements SchemaRegistryService {
                                                               List<SchemaAndMetadata> schemaAndMetadataList) {
         CompletableFuture<Void> result = new CompletableFuture<>();
         try {
-            compatibilityChecks.getOrDefault(schema.getType(), SchemaCompatibilityCheck.DEFAULT).checkCompatible(schemaAndMetadataList
-                    .stream()
-                    .map(schemaAndMetadata -> schemaAndMetadata.schema)
-                    .collect(Collectors.toList()), schema, strategy);
+            compatibilityChecks.getOrDefault(schema.getType(), SchemaCompatibilityCheck.DEFAULT)
+                    .checkCompatible(schemaAndMetadataList
+                            .stream()
+                            .map(schemaAndMetadata -> schemaAndMetadata.schema)
+                            .collect(Collectors.toList()), schema, strategy);
             result.complete(null);
         } catch (Exception e) {
             if (e instanceof IncompatibleSchemaException) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/ProtobufNativeSchemaDataValidator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/ProtobufNativeSchemaDataValidator.java
index acf2878..cdd4081 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/ProtobufNativeSchemaDataValidator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/ProtobufNativeSchemaDataValidator.java
@@ -34,7 +34,9 @@ public class ProtobufNativeSchemaDataValidator implements SchemaDataValidator {
             throw new InvalidSchemaDataException("deserialize ProtobufNative Schema failed", e);
         }
         if (descriptor == null) {
-            throw new InvalidSchemaDataException("protobuf root message descriptor is null , please recheck rootMessageTypeName or rootFileDescriptorName conf. ");
+            throw new InvalidSchemaDataException(
+                    "protobuf root message descriptor is null ,"
+                            + " please recheck rootMessageTypeName or rootFileDescriptorName conf. ");
         }
     }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/SchemaRegistryServiceWithSchemaDataValidator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/SchemaRegistryServiceWithSchemaDataValidator.java
index 4da77ee..99a33e0 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/SchemaRegistryServiceWithSchemaDataValidator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/schema/validator/SchemaRegistryServiceWithSchemaDataValidator.java
@@ -107,7 +107,8 @@ public class SchemaRegistryServiceWithSchemaDataValidator implements SchemaRegis
     }
 
     @Override
-    public CompletableFuture<Boolean> isCompatible(String schemaId, SchemaData schema, SchemaCompatibilityStrategy strategy) {
+    public CompletableFuture<Boolean> isCompatible(String schemaId, SchemaData schema,
+                                                   SchemaCompatibilityStrategy strategy) {
         try {
             SchemaDataValidator.validateSchemaData(schema);
         } catch (InvalidSchemaDataException e) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/MBeanStatsGenerator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/MBeanStatsGenerator.java
index 663858f..6b5d63b 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/MBeanStatsGenerator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/MBeanStatsGenerator.java
@@ -102,7 +102,7 @@ public class MBeanStatsGenerator {
     }
 
     /**
-     * Creates a MBean dimension key for metrics
+     * Creates a MBean dimension key for metrics.
      *
      * @param objectName
      * @return
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/NamespaceStats.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/NamespaceStats.java
index 7ce1657..09db78d 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/NamespaceStats.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/NamespaceStats.java
@@ -49,9 +49,11 @@ public class NamespaceStats {
             String key;
             // example of key : "<metric_key>_0.0_0.5"
             if (i == 0 && ENTRY_LATENCY_BUCKETS_USEC.length > 0) {
-                key = String.format("%s_0.0_%1.1f", BRK_ADD_ENTRY_LATENCY_PREFIX, ENTRY_LATENCY_BUCKETS_USEC[i] / 1000.0);
+                key = String.format("%s_0.0_%1.1f",
+                        BRK_ADD_ENTRY_LATENCY_PREFIX, ENTRY_LATENCY_BUCKETS_USEC[i] / 1000.0);
             } else if (i < ENTRY_LATENCY_BUCKETS_USEC.length) {
-                key = String.format("%s_%1.1f_%1.1f", BRK_ADD_ENTRY_LATENCY_PREFIX, ENTRY_LATENCY_BUCKETS_USEC[i - 1] / 1000.0,
+                key = String.format("%s_%1.1f_%1.1f",
+                        BRK_ADD_ENTRY_LATENCY_PREFIX, ENTRY_LATENCY_BUCKETS_USEC[i - 1] / 1000.0,
                         ENTRY_LATENCY_BUCKETS_USEC[i] / 1000.0);
             } else {
                 key = String.format("%s_OVERFLOW", BRK_ADD_ENTRY_LATENCY_PREFIX);
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/AbstractMetrics.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/AbstractMetrics.java
index 2868a73..21b941e 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/AbstractMetrics.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/AbstractMetrics.java
@@ -39,7 +39,8 @@ abstract class AbstractMetrics {
 
     protected static final Pattern V2_LEDGER_NAME_PATTERN = Pattern.compile("^(([^/]+)/([^/]+)/([^/]+))/(.*)$");
 
-    protected static final double[] ENTRY_LATENCY_BUCKETS_MS = new double[ManagedLedgerMBeanImpl.ENTRY_LATENCY_BUCKETS_USEC.length];
+    protected static final double[] ENTRY_LATENCY_BUCKETS_MS =
+            new double[ManagedLedgerMBeanImpl.ENTRY_LATENCY_BUCKETS_USEC.length];
 
     static {
         // Convert buckets boundaries from usec to millis
@@ -48,7 +49,8 @@ abstract class AbstractMetrics {
         }
     }
 
-    protected static final double[] ENTRY_SIZE_BUCKETS_BYTES = new double[ManagedLedgerMBeanImpl.ENTRY_SIZE_BUCKETS_BYTES.length];
+    protected static final double[] ENTRY_SIZE_BUCKETS_BYTES =
+            new double[ManagedLedgerMBeanImpl.ENTRY_SIZE_BUCKETS_BYTES.length];
 
     static {
         // Convert buckets boundaries from usec to millis
@@ -82,7 +84,7 @@ abstract class AbstractMetrics {
     }
 
     /**
-     * Returns the managed ledger cache statistics from ML factory
+     * Returns the managed ledger cache statistics from ML factory.
      *
      * @return
      */
@@ -91,7 +93,7 @@ abstract class AbstractMetrics {
     }
 
     /**
-     * Returns managed ledgers map from ML factory
+     * Returns managed ledgers map from ML factory.
      *
      * @return
      */
@@ -136,10 +138,9 @@ abstract class AbstractMetrics {
     }
 
     /**
-     * Creates a dimension key for metrics
+     * Creates a dimension key for metrics.
      *
-     * @param namespace
-     *          Namespace of metric
+     * @param namespace Namespace of metric
      * @return
      */
     protected Metrics createMetricsByDimension(String namespace) {
@@ -151,7 +152,7 @@ abstract class AbstractMetrics {
     }
 
     /**
-     * Creates a dimension key for replication metrics
+     * Creates a dimension key for replication metrics.
      *
      * @param namespace
      * @param fromClusterName
@@ -217,7 +218,7 @@ abstract class AbstractMetrics {
     }
 
     /**
-     * Helper to manage populating topics map
+     * Helper to manage populating topics map.
      *
      * @param ledgersByDimensionMap
      * @param metrics
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/ManagedLedgerMetrics.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/ManagedLedgerMetrics.java
index 852b24b..273447c 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/ManagedLedgerMetrics.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/metrics/ManagedLedgerMetrics.java
@@ -52,7 +52,7 @@ public class ManagedLedgerMetrics extends AbstractMetrics {
     }
 
     /**
-     * Aggregation by namespace (not thread-safe)
+     * Aggregation by namespace (not thread-safe).
      *
      * @param ledgersByDimension
      * @return
@@ -73,7 +73,8 @@ public class ManagedLedgerMetrics extends AbstractMetrics {
             for (ManagedLedgerImpl ledger : ledgers) {
                 ManagedLedgerMXBean lStats = ledger.getStats();
 
-                populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_AddEntryBytesRate", lStats.getAddEntryBytesRate());
+                populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_AddEntryBytesRate",
+                        lStats.getAddEntryBytesRate());
                 populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_AddEntryErrors",
                         (double) lStats.getAddEntryErrors());
 
@@ -89,7 +90,8 @@ public class ManagedLedgerMetrics extends AbstractMetrics {
                         lStats.getReadEntriesBytesRate());
                 populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_ReadEntriesErrors",
                         (double) lStats.getReadEntriesErrors());
-                populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_ReadEntriesRate", lStats.getReadEntriesRate());
+                populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_ReadEntriesRate",
+                        lStats.getReadEntriesRate());
                 populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_ReadEntriesSucceeded",
                         (double) lStats.getReadEntriesSucceeded());
                 populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_StoredMessagesSize",
@@ -97,15 +99,20 @@ public class ManagedLedgerMetrics extends AbstractMetrics {
 
                 // handle bucket entries initialization here
                 populateBucketEntries(tempAggregatedMetricsMap, "brk_ml_AddEntryLatencyBuckets",
-                        ENTRY_LATENCY_BUCKETS_MS, lStats.getAddEntryLatencyBuckets(), ManagedLedgerFactoryImpl.StatsPeriodSeconds);
+                        ENTRY_LATENCY_BUCKETS_MS, lStats.getAddEntryLatencyBuckets(),
+                        ManagedLedgerFactoryImpl.StatsPeriodSeconds);
                 populateBucketEntries(tempAggregatedMetricsMap, "brk_ml_LedgerAddEntryLatencyBuckets",
-                        ENTRY_LATENCY_BUCKETS_MS, lStats.getLedgerAddEntryLatencyBuckets(), ManagedLedgerFactoryImpl.StatsPeriodSeconds);
+                        ENTRY_LATENCY_BUCKETS_MS, lStats.getLedgerAddEntryLatencyBuckets(),
+                        ManagedLedgerFactoryImpl.StatsPeriodSeconds);
                 populateBucketEntries(tempAggregatedMetricsMap, "brk_ml_LedgerSwitchLatencyBuckets",
-                        ENTRY_LATENCY_BUCKETS_MS, lStats.getLedgerSwitchLatencyBuckets(), ManagedLedgerFactoryImpl.StatsPeriodSeconds);
-
-                populateBucketEntries(tempAggregatedMetricsMap, "brk_ml_EntrySizeBuckets", ENTRY_SIZE_BUCKETS_BYTES,
-                        lStats.getEntrySizeBuckets(), ManagedLedgerFactoryImpl.StatsPeriodSeconds);
-                populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_MarkDeleteRate", lStats.getMarkDeleteRate());
+                        ENTRY_LATENCY_BUCKETS_MS, lStats.getLedgerSwitchLatencyBuckets(),
+                        ManagedLedgerFactoryImpl.StatsPeriodSeconds);
+
+                populateBucketEntries(tempAggregatedMetricsMap, "brk_ml_EntrySizeBuckets",
+                        ENTRY_SIZE_BUCKETS_BYTES, lStats.getEntrySizeBuckets(),
+                        ManagedLedgerFactoryImpl.StatsPeriodSeconds);
+                populateAggregationMapWithSum(tempAggregatedMetricsMap, "brk_ml_MarkDeleteRate",
+                        lStats.getMarkDeleteRate());
             }
 
             // SUM up collections of each metrics
@@ -122,7 +129,7 @@ public class ManagedLedgerMetrics extends AbstractMetrics {
     }
 
     /**
-     * Build a map of dimensions key to list of topic stats (not thread-safe)
+     * Build a map of dimensions key to list of topic stats (not thread-safe).
      * <p>
      *
      * @return
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedNamespaceStats.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedNamespaceStats.java
index 1fc0eb3..dd3fff7 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedNamespaceStats.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedNamespaceStats.java
@@ -137,7 +137,7 @@ public class AggregatedNamespaceStats {
         storageWriteRate = 0;
         storageReadRate = 0;
         offloadedStorageUsed = 0;
-        backlogQuotaLimit= 0;
+        backlogQuotaLimit = 0;
 
         replicationStats.clear();
         subscriptionStats.clear();
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedReplicationStats.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedReplicationStats.java
index ac0b41a..b132e7e 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedReplicationStats.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/AggregatedReplicationStats.java
@@ -30,7 +30,9 @@ public class AggregatedReplicationStats {
     /** Total throughput delivered to the replication-subscriber. bytes/s */
     public double msgThroughputOut;
 
-    /** Number of messages pending to be replicated to remote cluster */
+    /**
+     * Number of messages pending to be replicated to remote cluster.
+     */
     public long replicationBacklog;
 
 }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/NamespaceStatsAggregator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/NamespaceStatsAggregator.java
index 9307350..072d68a 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/NamespaceStatsAggregator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/NamespaceStatsAggregator.java
@@ -31,12 +31,13 @@ import org.apache.pulsar.common.util.SimpleTextOutputStream;
 
 public class NamespaceStatsAggregator {
 
-    private static FastThreadLocal<AggregatedNamespaceStats> localNamespaceStats = new FastThreadLocal<AggregatedNamespaceStats>() {
-        @Override
-        protected AggregatedNamespaceStats initialValue() throws Exception {
-            return new AggregatedNamespaceStats();
-        }
-    };
+    private static FastThreadLocal<AggregatedNamespaceStats> localNamespaceStats =
+            new FastThreadLocal<AggregatedNamespaceStats>() {
+                @Override
+                protected AggregatedNamespaceStats initialValue() throws Exception {
+                    return new AggregatedNamespaceStats();
+                }
+            };
 
     private static FastThreadLocal<TopicStats> localTopicStats = new FastThreadLocal<TopicStats>() {
         @Override
@@ -45,7 +46,8 @@ public class NamespaceStatsAggregator {
         }
     };
 
-    public static void generate(PulsarService pulsar, boolean includeTopicMetrics, boolean includeConsumerMetrics, SimpleTextOutputStream stream) {
+    public static void generate(PulsarService pulsar, boolean includeTopicMetrics, boolean includeConsumerMetrics,
+                                SimpleTextOutputStream stream) {
         String cluster = pulsar.getConfiguration().getClusterName();
         AggregatedNamespaceStats namespaceStats = localNamespaceStats.get();
         TopicStats.resetTypes();
@@ -61,7 +63,8 @@ public class NamespaceStatsAggregator {
 
             bundlesMap.forEach((bundle, topicsMap) -> {
                 topicsMap.forEach((name, topic) -> {
-                    getTopicStats(topic, topicStats, includeConsumerMetrics, pulsar.getConfiguration().isExposePreciseBacklogInPrometheus());
+                    getTopicStats(topic, topicStats, includeConsumerMetrics,
+                            pulsar.getConfiguration().isExposePreciseBacklogInPrometheus());
 
                     if (includeTopicMetrics) {
                         topicsCount.add(1);
@@ -82,7 +85,8 @@ public class NamespaceStatsAggregator {
         });
     }
 
-    private static void getTopicStats(Topic topic, TopicStats stats, boolean includeConsumerMetrics, boolean getPreciseBacklog) {
+    private static void getTopicStats(Topic topic, TopicStats stats, boolean includeConsumerMetrics,
+                                      boolean getPreciseBacklog) {
         stats.reset();
 
         if (topic instanceof PersistentTopic) {
@@ -266,7 +270,8 @@ public class NamespaceStatsAggregator {
         metric(stream, cluster, namespace, "pulsar_storage_ledger_write_latency_le_100", ledgerWritelatencyBuckets[6]);
         metric(stream, cluster, namespace, "pulsar_storage_ledger_write_latency_le_200", ledgerWritelatencyBuckets[7]);
         metric(stream, cluster, namespace, "pulsar_storage_ledger_write_latency_le_1000", ledgerWritelatencyBuckets[8]);
-        metric(stream, cluster, namespace, "pulsar_storage_ledger_write_latency_overflow", ledgerWritelatencyBuckets[9]);
+        metric(stream, cluster, namespace, "pulsar_storage_ledger_write_latency_overflow",
+                ledgerWritelatencyBuckets[9]);
         metric(stream, cluster, namespace, "pulsar_storage_ledger_write_latency_count",
                 stats.storageLedgerWriteLatencyBuckets.getCount());
         metric(stream, cluster, namespace, "pulsar_storage_ledger_write_latency_sum",
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsGenerator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsGenerator.java
index 908ca77..7f7e217 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsGenerator.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsGenerator.java
@@ -73,16 +73,18 @@ public class PrometheusMetricsGenerator {
 
         // metric to export pulsar version info
         Gauge.build("pulsar_version_info", "-")
-            .labelNames("version", "commit").create()
-            .setChild(new Child() {
-                @Override
-                public double get() {
-                    return 1.0;
-                }}, PulsarVersion.getVersion(), PulsarVersion.getGitSha())
-            .register(CollectorRegistry.defaultRegistry);
+                .labelNames("version", "commit").create()
+                .setChild(new Child() {
+                    @Override
+                    public double get() {
+                        return 1.0;
+                    }
+                }, PulsarVersion.getVersion(), PulsarVersion.getGitSha())
+                .register(CollectorRegistry.defaultRegistry);
     }
 
-    public static void generate(PulsarService pulsar, boolean includeTopicMetrics, boolean includeConsumerMetrics, OutputStream out) throws IOException {
+    public static void generate(PulsarService pulsar, boolean includeTopicMetrics, boolean includeConsumerMetrics,
+                                OutputStream out) throws IOException {
         ByteBuf buf = ByteBufAllocator.DEFAULT.heapBuffer();
         try {
             SimpleTextOutputStream stream = new SimpleTextOutputStream(buf);
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java
index 7b7e623..5ec5215 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.java
@@ -63,7 +63,8 @@ public class PrometheusMetricsServlet extends HttpServlet {
             try {
                 res.setStatus(HttpStatus.OK_200);
                 res.setContentType("text/plain");
-                PrometheusMetricsGenerator.generate(pulsar, shouldExportTopicMetrics, shouldExportConsumerMetrics, res.getOutputStream());
+                PrometheusMetricsGenerator.generate(pulsar, shouldExportTopicMetrics, shouldExportConsumerMetrics,
+                        res.getOutputStream());
                 context.complete();
 
             } catch (IOException e) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/TopicStats.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/TopicStats.java
index c7b08ec..9d42ad9 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/TopicStats.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/TopicStats.java
@@ -125,16 +125,26 @@ class TopicStats {
                 stats.storageWriteLatencyBuckets.getSum());
 
         long[] ledgerWritelatencyBuckets = stats.storageLedgerWriteLatencyBuckets.getBuckets();
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_0_5", ledgerWritelatencyBuckets[0]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_1", ledgerWritelatencyBuckets[1]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_5", ledgerWritelatencyBuckets[2]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_10", ledgerWritelatencyBuckets[3]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_20", ledgerWritelatencyBuckets[4]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_50", ledgerWritelatencyBuckets[5]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_100", ledgerWritelatencyBuckets[6]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_200", ledgerWritelatencyBuckets[7]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_1000", ledgerWritelatencyBuckets[8]);
-        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_overflow", ledgerWritelatencyBuckets[9]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_0_5",
+                ledgerWritelatencyBuckets[0]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_1",
+                ledgerWritelatencyBuckets[1]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_5",
+                ledgerWritelatencyBuckets[2]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_10",
+                ledgerWritelatencyBuckets[3]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_20",
+                ledgerWritelatencyBuckets[4]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_50",
+                ledgerWritelatencyBuckets[5]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_100",
+                ledgerWritelatencyBuckets[6]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_200",
+                ledgerWritelatencyBuckets[7]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_le_1000",
+                ledgerWritelatencyBuckets[8]);
+        metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_overflow",
+                ledgerWritelatencyBuckets[9]);
         metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_count",
                 stats.storageLedgerWriteLatencyBuckets.getCount());
         metric(stream, cluster, namespace, topic, "pulsar_storage_ledger_write_latency_sum",
@@ -154,25 +164,44 @@ class TopicStats {
         metric(stream, cluster, namespace, topic, "pulsar_entry_size_sum", stats.entrySizeBuckets.getSum());
 
         stats.subscriptionStats.forEach((n, subsStats) -> {
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_back_log", subsStats.msgBacklog);
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_back_log_no_delayed", subsStats.msgBacklogNoDelayed);
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_delayed", subsStats.msgDelayed);
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_msg_rate_redeliver", subsStats.msgRateRedeliver);
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_unacked_messages", subsStats.unackedMessages);
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_blocked_on_unacked_messages", subsStats.blockedSubscriptionOnUnackedMsgs ? 1 : 0);
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_msg_rate_out", subsStats.msgRateOut);
-            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_msg_throughput_out", subsStats.msgThroughputOut);
-            metric(stream, cluster, namespace, topic, n, "pulsar_out_bytes_total", subsStats.bytesOutCounter);
-            metric(stream, cluster, namespace, topic, n, "pulsar_out_messages_total", subsStats.msgOutCounter);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_back_log",
+                    subsStats.msgBacklog);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_back_log_no_delayed",
+                    subsStats.msgBacklogNoDelayed);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_delayed",
+                    subsStats.msgDelayed);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_msg_rate_redeliver",
+                    subsStats.msgRateRedeliver);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_unacked_messages",
+                    subsStats.unackedMessages);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_blocked_on_unacked_messages",
+                    subsStats.blockedSubscriptionOnUnackedMsgs ? 1 : 0);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_msg_rate_out",
+                    subsStats.msgRateOut);
+            metric(stream, cluster, namespace, topic, n, "pulsar_subscription_msg_throughput_out",
+                    subsStats.msgThroughputOut);
+            metric(stream, cluster, namespace, topic, n, "pulsar_out_bytes_total",
+                    subsStats.bytesOutCounter);
+            metric(stream, cluster, namespace, topic, n, "pulsar_out_messages_total",
+                    subsStats.msgOutCounter);
             subsStats.consumerStat.forEach((c, consumerStats) -> {
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_consumer_msg_rate_redeliver", consumerStats.msgRateRedeliver);
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_consumer_unacked_messages", consumerStats.unackedMessages);
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_consumer_blocked_on_unacked_messages", consumerStats.blockedSubscriptionOnUnackedMsgs ? 1 : 0);
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_consumer_msg_rate_out", consumerStats.msgRateOut);
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_consumer_msg_throughput_out", consumerStats.msgThroughputOut);
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_consumer_available_permits", consumerStats.availablePermits);
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_out_bytes_total", consumerStats.bytesOutCounter);
-                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(), "pulsar_out_messages_total", consumerStats.msgOutCounter);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_consumer_msg_rate_redeliver", consumerStats.msgRateRedeliver);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_consumer_unacked_messages", consumerStats.unackedMessages);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_consumer_blocked_on_unacked_messages",
+                        consumerStats.blockedSubscriptionOnUnackedMsgs ? 1 : 0);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_consumer_msg_rate_out", consumerStats.msgRateOut);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_consumer_msg_throughput_out", consumerStats.msgThroughputOut);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_consumer_available_permits", consumerStats.availablePermits);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_out_bytes_total", consumerStats.bytesOutCounter);
+                metric(stream, cluster, namespace, topic, n, c.consumerName(), c.consumerId(),
+                        "pulsar_out_messages_total", consumerStats.msgOutCounter);
             });
         });
 
@@ -214,42 +243,44 @@ class TopicStats {
         stream.write(value).write(' ').write(System.currentTimeMillis()).write('\n');
     }
 
-    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic, String subscription,
-                               String name, long value) {
+    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic,
+                               String subscription, String name, long value) {
         metricType(stream, name);
         stream.write(name).write("{cluster=\"").write(cluster).write("\",namespace=\"").write(namespace)
                 .write("\",topic=\"").write(topic).write("\",subscription=\"").write(subscription).write("\"} ");
         stream.write(value).write(' ').write(System.currentTimeMillis()).write('\n');
     }
 
-    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic, String subscription,
-                               String name, double value) {
+    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic,
+                               String subscription, String name, double value) {
         metricType(stream, name);
         stream.write(name).write("{cluster=\"").write(cluster).write("\",namespace=\"").write(namespace)
                 .write("\",topic=\"").write(topic).write("\",subscription=\"").write(subscription).write("\"} ");
         stream.write(value).write(' ').write(System.currentTimeMillis()).write('\n');
     }
 
-    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic, String subscription,
-                               String consumerName, long consumerId, String name, long value) {
+    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic,
+                               String subscription, String consumerName, long consumerId, String name, long value) {
         metricType(stream, name);
         stream.write(name).write("{cluster=\"").write(cluster).write("\", namespace=\"").write(namespace)
                 .write("\",topic=\"").write(topic).write("\",subscription=\"").write(subscription)
-                .write("\",consumer_name=\"").write(consumerName).write("\",consumer_id=\"").write(consumerId).write("\"} ");
+                .write("\",consumer_name=\"").write(consumerName).write("\",consumer_id=\"").write(consumerId)
+                .write("\"} ");
         stream.write(value).write(' ').write(System.currentTimeMillis()).write('\n');
     }
 
-    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic, String subscription,
-                               String consumerName, long consumerId, String name, double value) {
+    private static void metric(SimpleTextOutputStream stream, String cluster, String namespace, String topic,
+                               String subscription, String consumerName, long consumerId, String name, double value) {
         metricType(stream, name);
         stream.write(name).write("{cluster=\"").write(cluster).write("\",namespace=\"").write(namespace)
                 .write("\",topic=\"").write(topic).write("\",subscription=\"").write(subscription)
-                .write("\",consumer_name=\"").write(consumerName).write("\",consumer_id=\"").write(consumerId).write("\"} ");
+                .write("\",consumer_name=\"").write(consumerName).write("\",consumer_id=\"")
+                .write(consumerId).write("\"} ");
         stream.write(value).write(' ').write(System.currentTimeMillis()).write('\n');
     }
 
     private static void metricWithRemoteCluster(SimpleTextOutputStream stream, String cluster, String namespace,
-            String topic,
+                                                String topic,
             String name, String remoteCluster, double value) {
         metricType(stream, name);
         stream.write(name).write("{cluster=\"").write(cluster).write("\",namespace=\"").write(namespace);
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusMetricsProvider.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusMetricsProvider.java
index a0673b5..4efc73c 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusMetricsProvider.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusMetricsProvider.java
@@ -50,7 +50,7 @@ public class PrometheusMetricsProvider implements StatsProvider {
     private final CachingStatsProvider cachingStatsProvider;
 
     /**
-     * These acts a registry of the metrics defined in this provider
+     * These acts a registry of the metrics defined in this provider.
      */
     final ConcurrentMap<String, LongAdderCounter> counters = new ConcurrentSkipListMap<>();
     final ConcurrentMap<String, SimpleGauge<? extends Number>> gauges = new ConcurrentSkipListMap<>();
@@ -115,7 +115,8 @@ public class PrometheusMetricsProvider implements StatsProvider {
     public void writeAllMetrics(Writer writer) throws IOException {
         gauges.forEach((name, gauge) -> PrometheusTextFormatUtil.writeGauge(writer, name, cluster, gauge));
         counters.forEach((name, counter) -> PrometheusTextFormatUtil.writeCounter(writer, name, cluster, counter));
-        opStats.forEach((name, opStatLogger) -> PrometheusTextFormatUtil.writeOpStat(writer, name, cluster, opStatLogger));
+        opStats.forEach((name, opStatLogger) -> PrometheusTextFormatUtil.writeOpStat(writer, name, cluster,
+                opStatLogger));
     }
 
     @Override
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusTextFormatUtil.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusTextFormatUtil.java
index e9345c0..bed78d3 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusTextFormatUtil.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusTextFormatUtil.java
@@ -60,43 +60,57 @@ public class PrometheusTextFormatUtil {
     static void writeOpStat(Writer w, String name, String cluster, DataSketchesOpStatsLogger opStat) {
         // Example:
         // # TYPE pulsar_bookie_client_bookkeeper_ml_workers_task_queued summary
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false", quantile="0.5"} NaN
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false", quantile="0.75"} NaN
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false", quantile="0.95"} NaN
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false", quantile="0.99"} NaN
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false", quantile="0.999"} NaN
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false", quantile="0.9999"} NaN
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false", quantile="1.0"} -Infinity
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false",
+        // quantile="0.5"} NaN
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false",
+        // quantile="0.75"} NaN
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false",
+        // quantile="0.95"} NaN
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false",
+        // quantile="0.99"} NaN
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false",
+        // quantile="0.999"} NaN
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false",
+        // quantile="0.9999"} NaN
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="false",
+        // quantile="1.0"} -Infinity
         // pulsar_bookie_client_bookkeeper_ml_workers_task_queued_count{cluster="pulsar", success="false"} 0
         // pulsar_bookie_client_bookkeeper_ml_workers_task_queued_sum{cluster="pulsar", success="false"} 0.0
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true", quantile="0.5"} 0.031
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true", quantile="0.75"} 0.043
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true", quantile="0.95"} 0.061
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true", quantile="0.99"} 0.064
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true", quantile="0.999"} 0.073
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true", quantile="0.9999"} 0.073
-        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true", quantile="1.0"} 0.552
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true",
+        // quantile="0.5"} 0.031
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true",
+        // quantile="0.75"} 0.043
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true",
+        // quantile="0.95"} 0.061
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true",
+        // quantile="0.99"} 0.064
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true",
+        // quantile="0.999"} 0.073
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true",
+        // quantile="0.9999"} 0.073
+        // pulsar_bookie_client_bookkeeper_ml_workers_task_queued{cluster="pulsar", success="true",
+        // quantile="1.0"} 0.552
         // pulsar_bookie_client_bookkeeper_ml_workers_task_queued_count{cluster="pulsar", success="true"} 40911432
         // pulsar_bookie_client_bookkeeper_ml_workers_task_queued_sum{cluster="pulsar", success="true"} 527.0
         try {
             w.append("# TYPE ").append(name).append(" summary\n");
-            writeQuantile(w, opStat, name, cluster,false, 0.5);
+            writeQuantile(w, opStat, name, cluster, false, 0.5);
             writeQuantile(w, opStat, name, cluster, false, 0.75);
-            writeQuantile(w, opStat, name, cluster,false, 0.95);
-            writeQuantile(w, opStat, name, cluster,false, 0.99);
-            writeQuantile(w, opStat, name, cluster,false, 0.999);
-            writeQuantile(w, opStat, name, cluster,false, 0.9999);
-            writeQuantile(w, opStat, name, cluster,false, 1.0);
+            writeQuantile(w, opStat, name, cluster, false, 0.95);
+            writeQuantile(w, opStat, name, cluster, false, 0.99);
+            writeQuantile(w, opStat, name, cluster, false, 0.999);
+            writeQuantile(w, opStat, name, cluster, false, 0.9999);
+            writeQuantile(w, opStat, name, cluster, false, 1.0);
             writeCount(w, opStat, name, cluster, false);
             writeSum(w, opStat, name, cluster, false);
 
-            writeQuantile(w, opStat, name, cluster,true, 0.5);
-            writeQuantile(w, opStat, name, cluster,true, 0.75);
-            writeQuantile(w, opStat, name, cluster,true, 0.95);
-            writeQuantile(w, opStat, name, cluster,true, 0.99);
-            writeQuantile(w, opStat, name, cluster,true, 0.999);
-            writeQuantile(w, opStat, name, cluster,true, 0.9999);
-            writeQuantile(w, opStat, name, cluster,true, 1.0);
+            writeQuantile(w, opStat, name, cluster, true, 0.5);
+            writeQuantile(w, opStat, name, cluster, true, 0.75);
+            writeQuantile(w, opStat, name, cluster, true, 0.95);
+            writeQuantile(w, opStat, name, cluster, true, 0.99);
+            writeQuantile(w, opStat, name, cluster, true, 0.999);
+            writeQuantile(w, opStat, name, cluster, true, 0.9999);
+            writeQuantile(w, opStat, name, cluster, true, 1.0);
             writeCount(w, opStat, name, cluster, true);
             writeSum(w, opStat, name, cluster, true);
 
@@ -108,7 +122,7 @@ public class PrometheusTextFormatUtil {
     private static void writeQuantile(Writer w, DataSketchesOpStatsLogger opStat, String name, String cluster,
                                       Boolean success, double quantile) throws IOException {
         w.append(name).append("{cluster=\"").append(cluster).append("\", success=\"")
-                .append(success.toString()).append("\",quantile=\"")
+                .append(success.toString()).append("\", quantile=\"")
                 .append(Double.toString(quantile)).append("\"} ")
                 .append(Double.toString(opStat.getQuantileValue(success, quantile))).append('\n');
     }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/SystemTopicClient.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/SystemTopicClient.java
index 9f6737c..4d869dd 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/SystemTopicClient.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/SystemTopicClient.java
@@ -29,7 +29,7 @@ import org.apache.pulsar.common.events.PulsarEvent;
 import org.apache.pulsar.common.naming.TopicName;
 
 /**
- * Pulsar system topic
+ * Pulsar system topic.
  */
 public interface SystemTopicClient {
 
@@ -62,7 +62,7 @@ public interface SystemTopicClient {
     CompletableFuture<Writer> newWriterAsync();
 
     /**
-     * Close the system topic
+     * Close the system topic.
      */
     void close() throws Exception;
 
@@ -73,23 +73,24 @@ public interface SystemTopicClient {
     CompletableFuture<Void> closeAsync();
 
     /**
-     * Get all writers of the system topic
+     * Get all writers of the system topic.
+     *
      * @return writer list
      */
     List<Writer> getWriters();
 
     /**
-     * Get all readers of the system topic
+     * Get all readers of the system topic.
      * @return reader list
      */
     List<Reader> getReaders();
 
     /**
-     * Writer for system topic
+     * Writer for system topic.
      */
     interface Writer {
         /**
-         * Write event to the system topic
+         * Write event to the system topic.
          * @param event pulsar event
          * @return message id
          * @throws PulsarClientException exception while write event cause
@@ -97,7 +98,7 @@ public interface SystemTopicClient {
         MessageId write(PulsarEvent event) throws PulsarClientException;
 
         /**
-         * Async write event to the system topic
+         * Async write event to the system topic.
          * @param event pulsar event
          * @return message id future
          */
@@ -114,7 +115,7 @@ public interface SystemTopicClient {
         CompletableFuture<Void> closeAsync();
 
         /**
-         * Get the system topic of the writer
+         * Get the system topic of the writer.
          * @return system topic
          */
         SystemTopicClient getSystemTopicClient();
@@ -122,18 +123,18 @@ public interface SystemTopicClient {
     }
 
     /**
-     * Reader for system topic
+     * Reader for system topic.
      */
     interface Reader {
 
         /**
-         * Read event from system topic
+         * Read event from system topic.
          * @return pulsar event
          */
         Message<PulsarEvent> readNext() throws PulsarClientException;
 
         /**
-         * Async read event from system topic
+         * Async read event from system topic.
          * @return pulsar event future
          */
         CompletableFuture<Message<PulsarEvent>> readNextAsync();
@@ -161,7 +162,7 @@ public interface SystemTopicClient {
         CompletableFuture<Void> closeAsync();
 
         /**
-         * Get the system topic of the reader
+         * Get the system topic of the reader.
          * @return system topic
          */
         SystemTopicClient getSystemTopic();
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/TopicPoliciesSystemTopicClient.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/TopicPoliciesSystemTopicClient.java
index a40eeee..c7dee0d 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/TopicPoliciesSystemTopicClient.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/systopic/TopicPoliciesSystemTopicClient.java
@@ -32,7 +32,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * System topic for topic policy
+ * System topic for topic policy.
  */
 public class TopicPoliciesSystemTopicClient extends SystemTopicClientBase {
 
@@ -48,7 +48,8 @@ public class TopicPoliciesSystemTopicClient extends SystemTopicClientBase {
                     if (log.isDebugEnabled()) {
                         log.debug("[{}] A new writer is created", topicName);
                     }
-                    return CompletableFuture.completedFuture(new TopicPolicyWriter(producer, TopicPoliciesSystemTopicClient.this));
+                    return CompletableFuture.completedFuture(new TopicPolicyWriter(producer,
+                            TopicPoliciesSystemTopicClient.this));
                 });
     }
 
@@ -62,7 +63,8 @@ public class TopicPoliciesSystemTopicClient extends SystemTopicClientBase {
                     if (log.isDebugEnabled()) {
                         log.debug("[{}] A new reader is created", topicName);
                     }
-                    return CompletableFuture.completedFuture(new TopicPolicyReader(reader, TopicPoliciesSystemTopicClient.this));
+                    return CompletableFuture.completedFuture(new TopicPolicyReader(reader,
+                            TopicPoliciesSystemTopicClient.this));
                 });
     }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/TransactionMeta.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/TransactionMeta.java
index f769c98..85e08c6 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/TransactionMeta.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/TransactionMeta.java
@@ -54,7 +54,7 @@ public interface TransactionMeta {
     int numEntries();
 
     /**
-     * Return messages number in one transaction
+     * Return messages number in one transaction.
      *
      * @return the number of transaction messages
      * @throws TransactionStatusException
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferClientImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferClientImpl.java
index cfb451f..76e9ba9 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferClientImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferClientImpl.java
@@ -45,24 +45,33 @@ public class TransactionBufferClientImpl implements TransactionBufferClient {
         TransactionBufferHandler handler = new TransactionBufferHandlerImpl(connectionPool, namespaceService);
         return new TransactionBufferClientImpl(handler);
     }
+
     @Override
-    public CompletableFuture<TxnID> commitTxnOnTopic(String topic, long txnIdMostBits, long txnIdLeastBits, List<MessageId> messageIdList) {
-        return tbHandler.endTxnOnTopic(topic, txnIdMostBits, txnIdLeastBits, PulsarApi.TxnAction.COMMIT, messageIdList);
+    public CompletableFuture<TxnID> commitTxnOnTopic(String topic, long txnIdMostBits, long txnIdLeastBits,
+                                                     List<MessageId> messageIdList) {
+        return tbHandler.endTxnOnTopic(topic, txnIdMostBits, txnIdLeastBits, PulsarApi.TxnAction.COMMIT,
+                messageIdList);
     }
 
     @Override
-    public CompletableFuture<TxnID> abortTxnOnTopic(String topic, long txnIdMostBits, long txnIdLeastBits, List<MessageId> messageIdList) {
-        return tbHandler.endTxnOnTopic(topic, txnIdMostBits, txnIdLeastBits, PulsarApi.TxnAction.ABORT, messageIdList);
+    public CompletableFuture<TxnID> abortTxnOnTopic(String topic, long txnIdMostBits, long txnIdLeastBits,
+                                                    List<MessageId> messageIdList) {
+        return tbHandler.endTxnOnTopic(topic, txnIdMostBits, txnIdLeastBits, PulsarApi.TxnAction.ABORT,
+                messageIdList);
     }
 
     @Override
-    public CompletableFuture<TxnID> commitTxnOnSubscription(String topic, String subscription, long txnIdMostBits, long txnIdLeastBits) {
-        return tbHandler.endTxnOnSubscription(topic, subscription, txnIdMostBits, txnIdLeastBits, PulsarApi.TxnAction.COMMIT);
+    public CompletableFuture<TxnID> commitTxnOnSubscription(String topic, String subscription, long txnIdMostBits,
+                                                            long txnIdLeastBits) {
+        return tbHandler.endTxnOnSubscription(topic, subscription, txnIdMostBits, txnIdLeastBits,
+                PulsarApi.TxnAction.COMMIT);
     }
 
     @Override
-    public CompletableFuture<TxnID> abortTxnOnSubscription(String topic, String subscription, long txnIdMostBits, long txnIdLeastBits) {
-        return tbHandler.endTxnOnSubscription(topic, subscription, txnIdMostBits, txnIdLeastBits, PulsarApi.TxnAction.ABORT);
+    public CompletableFuture<TxnID> abortTxnOnSubscription(String topic, String subscription,
+                                                           long txnIdMostBits, long txnIdLeastBits) {
+        return tbHandler.endTxnOnSubscription(topic, subscription, txnIdMostBits, txnIdLeastBits,
+                PulsarApi.TxnAction.ABORT);
     }
 
     @Override
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferHandlerImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferHandlerImpl.java
index d8ceead..d1ec809 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferHandlerImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferHandlerImpl.java
@@ -75,7 +75,8 @@ public class TransactionBufferHandlerImpl implements TransactionBufferHandler, T
     }
 
     @Override
-    public CompletableFuture<TxnID> endTxnOnTopic(String topic, long txnIdMostBits, long txnIdLeastBits, PulsarApi.TxnAction action, List<MessageId> messageIdList) {
+    public CompletableFuture<TxnID> endTxnOnTopic(String topic, long txnIdMostBits, long txnIdLeastBits,
+                                                  PulsarApi.TxnAction action, List<MessageId> messageIdList) {
         CompletableFuture<TxnID> cb = new CompletableFuture<>();
         if (!canSendRequest(cb)) {
             return cb;
@@ -89,7 +90,8 @@ public class TransactionBufferHandlerImpl implements TransactionBufferHandler, T
                     .setPartition(((MessageIdImpl) messageId).getPartitionIndex())
                     .build());
         }
-        ByteBuf cmd = Commands.newEndTxnOnPartition(requestId, txnIdLeastBits, txnIdMostBits, topic, action, messageIdDataList);
+        ByteBuf cmd = Commands.newEndTxnOnPartition(requestId, txnIdLeastBits, txnIdMostBits,
+                topic, action, messageIdDataList);
         OpRequestSend op = OpRequestSend.create(requestId, topic, cmd, cb);
         pendingRequests.put(requestId, op);
         cmd.retain();
@@ -112,13 +114,15 @@ public class TransactionBufferHandlerImpl implements TransactionBufferHandler, T
     }
 
     @Override
-    public CompletableFuture<TxnID> endTxnOnSubscription(String topic, String subscription, long txnIdMostBits, long txnIdLeastBits, PulsarApi.TxnAction action) {
+    public CompletableFuture<TxnID> endTxnOnSubscription(String topic, String subscription, long txnIdMostBits,
+                                                         long txnIdLeastBits, PulsarApi.TxnAction action) {
         CompletableFuture<TxnID> cb = new CompletableFuture<>();
         if (!canSendRequest(cb)) {
             return cb;
         }
         long requestId = requestIdGenerator.getAndIncrement();
-        ByteBuf cmd = Commands.newEndTxnOnSubscription(requestId, txnIdLeastBits, txnIdMostBits, topic, subscription, action);
+        ByteBuf cmd = Commands.newEndTxnOnSubscription(requestId, txnIdLeastBits, txnIdMostBits,
+                topic, subscription, action);
         OpRequestSend op = OpRequestSend.create(requestId, topic, cmd, cb);
         pendingRequests.put(requestId, op);
         cmd.retain();
@@ -158,14 +162,16 @@ public class TransactionBufferHandlerImpl implements TransactionBufferHandler, T
             log.info("[{}] Got end txn on topic response for for request {}", op.topic, response.getRequestId());
             op.cb.complete(new TxnID(response.getTxnidMostBits(), response.getTxnidLeastBits()));
         } else {
-            log.error("[{}] Got end txn on topic response for request {} error {}", op.topic, response.getRequestId(), response.getError());
+            log.error("[{}] Got end txn on topic response for request {} error {}", op.topic, response.getRequestId(),
+                    response.getError());
             op.cb.completeExceptionally(getException(response.getError(), response.getMessage()));
         }
         op.recycle();
     }
 
     @Override
-    public void handleEndTxnOnSubscriptionResponse(long requestId, PulsarApi.CommandEndTxnOnSubscriptionResponse response) {
+    public void handleEndTxnOnSubscriptionResponse(long requestId,
+                                                   PulsarApi.CommandEndTxnOnSubscriptionResponse response) {
         OpRequestSend op = pendingRequests.remove(requestId);
         if (op == null) {
             if (log.isDebugEnabled()) {
@@ -177,11 +183,13 @@ public class TransactionBufferHandlerImpl implements TransactionBufferHandler, T
 
         if (!response.hasError()) {
             if (log.isDebugEnabled()) {
-                log.debug("[{}] Got end txn on subscription response for for request {}", op.topic, response.getRequestId());
+                log.debug("[{}] Got end txn on subscription response for for request {}",
+                        op.topic, response.getRequestId());
             }
             op.cb.complete(new TxnID(response.getTxnidMostBits(), response.getTxnidLeastBits()));
         } else {
-            log.error("[{}] Got end txn on subscription response for request {} error {}", op.topic, response.getRequestId(), response.getError());
+            log.error("[{}] Got end txn on subscription response for request {} error {}",
+                    op.topic, response.getRequestId(), response.getError());
             op.cb.completeExceptionally(getException(response.getError(), response.getMessage()));
         }
         op.recycle();
@@ -194,7 +202,8 @@ public class TransactionBufferHandlerImpl implements TransactionBufferHandler, T
                     return CompletableFuture.completedFuture(null);
                 }
                 URI uri = new URI(serviceUrl);
-                return connectionPool.getConnection(InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort())).thenCompose(clientCnx -> {
+                return connectionPool.getConnection(InetSocketAddress.createUnresolved(uri.getHost(),
+                        uri.getPort())).thenCompose(clientCnx -> {
                     clientCnx.registerTransactionBufferHandler(TransactionBufferHandlerImpl.this);
                     return CompletableFuture.completedFuture(clientCnx);
                 });
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckHandle.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckHandle.java
index d43e93f..209cffb 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckHandle.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/PendingAckHandle.java
@@ -53,7 +53,8 @@ public interface PendingAckHandle {
      * @throws NotAllowedException if Use this method incorrectly eg. not use
      * PositionImpl or cumulative ack with a list of positions.
      */
-    CompletableFuture<Void> individualAcknowledgeMessage(TxnID txnID, List<MutablePair<PositionImpl, Integer>> positions);
+    CompletableFuture<Void> individualAcknowledgeMessage(TxnID txnID,
+                                                         List<MutablePair<PositionImpl, Integer>> positions);
 
     /**
      * Acknowledge message(s) for an ongoing transaction.
@@ -82,11 +83,12 @@ public interface PendingAckHandle {
     /**
      * Commit a transaction.
      *
-     * @param txnID         {@link TxnID} to identify the transaction.
-     * @param properties    Additional user-defined properties that can be associated with a particular cursor position.
+     * @param txnID      {@link TxnID} to identify the transaction.
+     * @param properties Additional user-defined properties that can be
+     *                   associated with a particular cursor position.
      * @return the future of this operation.
      */
-    CompletableFuture<Void> commitTxn(TxnID txnID, Map<String,Long> properties);
+    CompletableFuture<Void> commitTxn(TxnID txnID, Map<String, Long> properties);
 
     /**
      * Abort a transaction.
@@ -117,4 +119,4 @@ public interface PendingAckHandle {
      * @param position {@link Position} which position need to clear
      */
     void clearIndividualPosition(Position position);
-}
\ No newline at end of file
+}
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/impl/PendingAckHandleImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/impl/PendingAckHandleImpl.java
index 8812d4a..f21adaf 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/impl/PendingAckHandleImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/pendingack/impl/PendingAckHandleImpl.java
@@ -115,8 +115,8 @@ public class PendingAckHandleImpl implements PendingAckHandle {
             // If try to ack message already acked by committed transaction or normal acknowledge, throw exception.
             if (((ManagedCursorImpl) persistentSubscription.getCursor())
                     .isMessageDeleted(position)) {
-                String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID +
-                        " try to ack message:" + position + " already acked before.";
+                String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID
+                        + " try to ack message:" + position + " already acked before.";
                 log.error(errorMsg);
                 return FutureUtil.failedFuture(new TransactionConflictException(errorMsg));
             }
@@ -133,23 +133,23 @@ public class PendingAckHandleImpl implements PendingAckHandle {
                 bitSetRecyclable.recycle();
                 if (isAckSetOverlap(ackSetOverlap,
                         ((ManagedCursorImpl) persistentSubscription.getCursor()).getBatchPositionAckSet(position))) {
-                    String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID +
-                            " try to ack message:" + position + " already acked before.";
+                    String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID
+                            + " try to ack message:" + position + " already acked before.";
                     log.error(errorMsg);
                     return FutureUtil.failedFuture(new TransactionConflictException(errorMsg));
                 }
 
                 if (this.individualAckPositions != null && individualAckPositions.containsKey(position)
                         && isAckSetOverlap(individualAckPositions.get(position).getLeft().getAckSet(), ackSetOverlap)) {
-                    String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID +
-                            " try to ack batch message:" + position + " in pending ack status.";
+                    String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID
+                            + " try to ack batch message:" + position + " in pending ack status.";
                     log.error(errorMsg);
                     return FutureUtil.failedFuture(new TransactionConflictException(errorMsg));
                 }
             } else {
                 if (this.individualAckPositions != null && this.individualAckPositions.containsKey(position)) {
-                    String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID +
-                            " try to ack message:" + position + " in pending ack status.";
+                    String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID
+                            + " try to ack message:" + position + " in pending ack status.";
                     log.error(errorMsg);
                     return FutureUtil.failedFuture(new TransactionConflictException(errorMsg));
                 }
@@ -211,8 +211,8 @@ public class PendingAckHandleImpl implements PendingAckHandle {
         }
 
         if (positions.size() != 1) {
-            String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID +
-                    " invalid cumulative ack received with multiple message ids.";
+            String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID
+                    + " invalid cumulative ack received with multiple message ids.";
             log.error(errorMsg);
             return FutureUtil.failedFuture(new NotAllowedException(errorMsg));
         }
@@ -220,9 +220,9 @@ public class PendingAckHandleImpl implements PendingAckHandle {
         PositionImpl position = positions.get(0);
 
         if (position.compareTo((PositionImpl) persistentSubscription.getCursor().getMarkDeletedPosition()) <= 0) {
-            String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID +
-                    " try to cumulative ack position: " + position + " within range of cursor's " +
-                    "markDeletePosition: " + persistentSubscription.getCursor().getMarkDeletedPosition();
+            String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID
+                    + " try to cumulative ack position: " + position + " within range of cursor's "
+                    + "markDeletePosition: " + persistentSubscription.getCursor().getMarkDeletedPosition();
             log.error(errorMsg);
             return FutureUtil.failedFuture(new TransactionConflictException(errorMsg));
         }
@@ -238,9 +238,9 @@ public class PendingAckHandleImpl implements PendingAckHandle {
             this.cumulativeAckOfTransaction.setValue(position);
 
         } else {
-            String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID +
-                    " try to cumulative batch ack position: " + position + " within range of current " +
-                    "currentPosition: " + this.cumulativeAckOfTransaction.getValue();
+            String errorMsg = "[" + topicName + "][" + subName + "] Transaction:" + txnID
+                    + " try to cumulative batch ack position: " + position + " within range of current "
+                    + "currentPosition: " + this.cumulativeAckOfTransaction.getValue();
             log.error(errorMsg);
             return FutureUtil.failedFuture(new TransactionConflictException(errorMsg));
         }
@@ -353,4 +353,4 @@ public class PendingAckHandleImpl implements PendingAckHandle {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PreInterceptFilter.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PreInterceptFilter.java
index 3685afa..5d6e614 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PreInterceptFilter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PreInterceptFilter.java
@@ -47,11 +47,12 @@ public class PreInterceptFilter implements Filter {
     }
 
     @Override
-    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
+                         FilterChain filterChain) throws IOException, ServletException {
         if (log.isDebugEnabled()) {
             log.debug("PreInterceptFilter: path {}, type {}",
-                servletRequest.getServletContext().getContextPath(),
-                servletRequest.getContentType());
+                    servletRequest.getServletContext().getContextPath(),
+                    servletRequest.getContentType());
         }
         if (MediaType.MULTIPART_FORM_DATA.equalsIgnoreCase(servletRequest.getContentType())) {
             // skip multipart request at this moment
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 1d06840..db9304f 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
@@ -125,7 +125,7 @@ public abstract class PulsarWebResource {
     }
 
     /**
-     * Gets a caller id (IP + role)
+     * Gets a caller id (IP + role).
      *
      * @return the web service caller identification
      */
@@ -155,7 +155,8 @@ public abstract class PulsarWebResource {
             // Request has come from a proxy
             if (StringUtils.isBlank(originalPrincipal)) {
                 log.warn("Original principal empty in request authenticated as {}", authenticatedPrincipal);
-                throw new RestException(Status.UNAUTHORIZED, "Original principal cannot be empty if the request is via proxy.");
+                throw new RestException(Status.UNAUTHORIZED,
+                        "Original principal cannot be empty if the request is via proxy.");
             }
             if (proxyRoles.contains(originalPrincipal)) {
                 log.warn("Original principal {} cannot be a proxy role ({})", originalPrincipal, proxyRoles);
@@ -182,7 +183,7 @@ public abstract class PulsarWebResource {
     protected void validateSuperUserAccess() {
         if (config().isAuthenticationEnabled()) {
             String appId = clientAppId();
-            if(log.isDebugEnabled()) {
+            if (log.isDebugEnabled()) {
                 log.debug("[{}] Check super user access: Authenticated: {} -- Role: {}", uri.getRequestUri(),
                         isClientAuthenticated(appId), appId);
             }
@@ -209,7 +210,7 @@ public abstract class PulsarWebResource {
                                               appId, originalPrincipal));
                     }
                 } catch (InterruptedException | ExecutionException e) {
-                    log.error("Error validating super-user access : "+ e.getMessage(), e);
+                    log.error("Error validating super-user access : " + e.getMessage(), e);
                     throw new RestException(Status.INTERNAL_SERVER_ERROR, e.getMessage());
                 }
                 log.debug("Successfully authorized {} (proxied by {}) as super-user",
@@ -279,15 +280,19 @@ public abstract class PulsarWebResource {
                     AuthorizationService authorizationService = pulsar.getBrokerService().getAuthorizationService();
                     isProxySuperUserFuture = authorizationService.isSuperUser(clientAppId, authenticationData);
 
-                    isOriginalPrincipalSuperUserFuture = authorizationService.isSuperUser(originalPrincipal, authenticationData);
+                    isOriginalPrincipalSuperUserFuture =
+                            authorizationService.isSuperUser(originalPrincipal, authenticationData);
 
-                    boolean proxyAuthorized = isProxySuperUserFuture.get() || authorizationService.isTenantAdmin(tenant, clientAppId, tenantInfo, authenticationData).get();
-                    boolean originalPrincipalAuthorized
-                    = isOriginalPrincipalSuperUserFuture.get() || authorizationService.isTenantAdmin(tenant, originalPrincipal, tenantInfo, authenticationData).get();
+                    boolean proxyAuthorized = isProxySuperUserFuture.get()
+                            || authorizationService.isTenantAdmin(tenant, clientAppId,
+                            tenantInfo, authenticationData).get();
+                    boolean originalPrincipalAuthorized =
+                            isOriginalPrincipalSuperUserFuture.get() || authorizationService.isTenantAdmin(tenant,
+                                    originalPrincipal, tenantInfo, authenticationData).get();
                     if (!proxyAuthorized || !originalPrincipalAuthorized) {
                         throw new RestException(Status.UNAUTHORIZED,
                                 String.format("Proxy not authorized to access resource (proxy:%s,original:%s)",
-                                              clientAppId, originalPrincipal));
+                                        clientAppId, originalPrincipal));
                     }
                 } catch (InterruptedException | ExecutionException e) {
                     throw new RestException(Status.INTERNAL_SERVER_ERROR, e.getMessage());
@@ -299,7 +304,8 @@ public abstract class PulsarWebResource {
                         .getAuthorizationService()
                         .isSuperUser(clientAppId, authenticationData)
                         .join()) {
-                    if (!pulsar.getBrokerService().getAuthorizationService().isTenantAdmin(tenant, clientAppId, tenantInfo, authenticationData).get()) {
+                    if (!pulsar.getBrokerService().getAuthorizationService()
+                            .isTenantAdmin(tenant, clientAppId, tenantInfo, authenticationData).get()) {
                         throw new RestException(Status.UNAUTHORIZED,
                                 "Don't have permission to administrate resources on this tenant");
                     }
@@ -334,12 +340,10 @@ public abstract class PulsarWebResource {
     }
 
     /**
-     * Check if the cluster exists and redirect the call to the owning cluster
+     * Check if the cluster exists and redirect the call to the owning cluster.
      *
-     * @param cluster
-     *            Cluster name
-     * @throws Exception
-     *             In case the redirect happens
+     * @param cluster Cluster name
+     * @throws Exception In case the redirect happens
      */
     protected void validateClusterOwnership(String cluster) throws WebApplicationException {
         try {
@@ -487,16 +491,18 @@ public abstract class PulsarWebResource {
             nsBundles.validateBundle(nsBundle);
             return nsBundle;
         } catch (IllegalArgumentException e) {
-            log.error("[{}] Invalid bundle range {}/{}, {}", clientAppId(), fqnn.toString(), bundleRange, e.getMessage());
+            log.error("[{}] Invalid bundle range {}/{}, {}", clientAppId(), fqnn.toString(),
+                    bundleRange, e.getMessage());
             throw new RestException(Response.Status.PRECONDITION_FAILED, e.getMessage());
         } catch (Exception e) {
-            log.error("[{}] Failed to validate namespace bundle {}/{}", clientAppId(), fqnn.toString(), bundleRange, e);
+            log.error("[{}] Failed to validate namespace bundle {}/{}", clientAppId(),
+                    fqnn.toString(), bundleRange, e);
             throw new RestException(e);
         }
     }
 
     /**
-     * Checks whether a given bundle is currently loaded by any broker
+     * Checks whether a given bundle is currently loaded by any broker.
      */
     protected boolean isBundleOwnedByAnyBroker(NamespaceName fqnn, BundlesData bundles,
             String bundleRange) {
@@ -511,7 +517,8 @@ public abstract class PulsarWebResource {
         try {
             return nsService.getWebServiceUrl(nsBundle, options).isPresent();
         } catch (Exception e) {
-            log.error("[{}] Failed to check whether namespace bundle is owned {}/{}", clientAppId(), fqnn.toString(), bundleRange, e);
+            log.error("[{}] Failed to check whether namespace bundle is owned {}/{}", clientAppId(),
+                    fqnn.toString(), bundleRange, e);
             throw new RestException(e);
         }
     }
@@ -525,7 +532,8 @@ public abstract class PulsarWebResource {
         } catch (WebApplicationException wae) {
             throw wae;
         } catch (Exception e) {
-            log.error("[{}] Failed to validate namespace bundle {}/{}", clientAppId(), fqnn.toString(), bundleRange, e);
+            log.error("[{}] Failed to validate namespace bundle {}/{}", clientAppId(),
+                    fqnn.toString(), bundleRange, e);
             throw new RestException(e);
         }
     }
@@ -665,7 +673,8 @@ public abstract class PulsarWebResource {
                 URI redirect = getRedirectionUrl(peerClusterData);
                 // redirect to the cluster requested
                 if (log.isDebugEnabled()) {
-                    log.debug("[{}] Redirecting the rest call to {}: cluster={}", clientAppId(),redirect, peerClusterData);
+                    log.debug("[{}] Redirecting the rest call to {}: cluster={}", clientAppId(),
+                            redirect, peerClusterData);
 
                 }
                 throw new WebApplicationException(Response.temporaryRedirect(redirect).build());
@@ -776,7 +785,8 @@ public abstract class PulsarWebResource {
             return;
         }
         // get zk policy manager
-        if (!pulsarService.getBrokerService().getAuthorizationService().canLookup(topicName, role, authenticationData)) {
+        if (!pulsarService.getBrokerService().getAuthorizationService().canLookup(topicName, role,
+                authenticationData)) {
             log.warn("[{}] Role {} is not allowed to lookup topic", topicName, role);
             throw new RestException(Status.UNAUTHORIZED, "Don't have permission to connect to this namespace");
         }
@@ -833,8 +843,9 @@ public abstract class PulsarWebResource {
                         clientAppId(), clientAuthData());
 
             if (!isAuthorized) {
-                throw new RestException(Status.FORBIDDEN, String.format("Unauthorized to validateNamespaceOperation for" +
-                        " operation [%s] on namespace [%s]", operation.toString(), namespaceName));
+                throw new RestException(Status.FORBIDDEN,
+                        String.format("Unauthorized to validateNamespaceOperation for"
+                                + " operation [%s] on namespace [%s]", operation.toString(), namespaceName));
             }
         }
     }
@@ -853,8 +864,10 @@ public abstract class PulsarWebResource {
                         originalPrincipal(), clientAppId(), clientAuthData());
 
             if (!isAuthorized) {
-                throw new RestException(Status.FORBIDDEN, String.format("Unauthorized to validateNamespacePolicyOperation for" +
-                        " operation [%s] on namespace [%s] on policy [%s]", operation.toString(), namespaceName, policy.toString()));
+                throw new RestException(Status.FORBIDDEN,
+                        String.format("Unauthorized to validateNamespacePolicyOperation for"
+                                        + " operation [%s] on namespace [%s] on policy [%s]",
+                                operation.toString(), namespaceName, policy.toString()));
             }
         }
     }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java
index 588721d..3681966 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Servlet filter that hooks up to handle outgoing response
+ * Servlet filter that hooks up to handle outgoing response.
  */
 public class ResponseHandlerFilter implements Filter {
     private static final Logger LOG = LoggerFactory.getLogger(ResponseHandlerFilter.class);
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java
index 35df375..7f9c580 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/WebService.java
@@ -55,7 +55,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Web Service embedded into Pulsar
+ * Web Service embedded into Pulsar.
  */
 public class WebService implements AutoCloseable {
 
@@ -136,7 +136,8 @@ public class WebService implements AutoCloseable {
         server.setConnectors(connectors.toArray(new ServerConnector[connectors.size()]));
     }
 
-    public void addRestResources(String basePath, String javaPackages, boolean requiresAuthentication, Map<String,Object> attributeMap) {
+    public void addRestResources(String basePath, String javaPackages, boolean requiresAuthentication,
+                                 Map<String, Object> attributeMap) {
         ResourceConfig config = new ResourceConfig();
         config.packages("jersey.config.server.provider.packages", javaPackages);
         config.register(JsonMapperProvider.class);
@@ -146,7 +147,8 @@ public class WebService implements AutoCloseable {
         addServlet(basePath, servletHolder, requiresAuthentication, attributeMap);
     }
 
-    public void addServlet(String path, ServletHolder servletHolder, boolean requiresAuthentication, Map<String,Object> attributeMap) {
+    public void addServlet(String path, ServletHolder servletHolder, boolean requiresAuthentication,
+                           Map<String, Object> attributeMap) {
         ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
         context.setContextPath(path);
         context.addServlet(servletHolder, MATCH_ALL);
@@ -156,15 +158,16 @@ public class WebService implements AutoCloseable {
             });
         }
 
-        if (!pulsar.getConfig().getBrokerInterceptors().isEmpty() || !pulsar.getConfig().isDisableBrokerInterceptors()) {
+        if (!pulsar.getConfig().getBrokerInterceptors().isEmpty()
+                || !pulsar.getConfig().isDisableBrokerInterceptors()) {
             // Enable PreInterceptFilter only when interceptors are enabled
             context.addFilter(new FilterHolder(new PreInterceptFilter(pulsar.getBrokerInterceptor())),
-                MATCH_ALL, EnumSet.allOf(DispatcherType.class));
+                    MATCH_ALL, EnumSet.allOf(DispatcherType.class));
         }
 
         if (requiresAuthentication && pulsar.getConfiguration().isAuthenticationEnabled()) {
             FilterHolder filter = new FilterHolder(new AuthenticationFilter(
-                                                           pulsar.getBrokerService().getAuthenticationService()));
+                    pulsar.getBrokerService().getAuthenticationService()));
             context.addFilter(filter, MATCH_ALL, EnumSet.allOf(DispatcherType.class));
         }
 
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/client/impl/RawReaderImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/client/impl/RawReaderImpl.java
index 6cdf62e..124c4c09 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/client/impl/RawReaderImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/client/impl/RawReaderImpl.java
@@ -109,16 +109,16 @@ public class RawReaderImpl implements RawReader {
         RawConsumerImpl(PulsarClientImpl client, ConsumerConfigurationData<byte[]> conf,
                 CompletableFuture<Consumer<byte[]>> consumerFuture) {
             super(client,
-                conf.getSingleTopic(),
-                conf,
-                client.externalExecutorProvider().getExecutor(),
-                TopicName.getPartitionIndex(conf.getSingleTopic()),
-                false,
-                consumerFuture,
-                MessageId.earliest,
-                0 /* startMessageRollbackDurationInSec */,
-                Schema.BYTES, null,
-                true
+                    conf.getSingleTopic(),
+                    conf,
+                    client.externalExecutorProvider().getExecutor(),
+                    TopicName.getPartitionIndex(conf.getSingleTopic()),
+                    false,
+                    consumerFuture,
+                    MessageId.earliest,
+                    0 /* startMessageRollbackDurationInSec */,
+                    Schema.BYTES, null,
+                    true
             );
             incomingRawMessages = new GrowableArrayBlockingQueue<>();
             pendingRawReceives = new ConcurrentLinkedQueue<>();
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 302f327..c9a5d9f 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
@@ -29,14 +29,15 @@ import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
-
 import com.google.common.collect.BoundType;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 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;
@@ -52,17 +53,11 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
-
 import javax.ws.rs.client.InvocationCallback;
 import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.Response.Status;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonObject;
 import lombok.Cleanup;
 import lombok.extern.slf4j.Slf4j;
-
 import org.apache.bookkeeper.mledger.ManagedLedgerInfo;
 import org.apache.bookkeeper.mledger.impl.PositionImpl;
 import org.apache.pulsar.broker.ConfigHelper;
@@ -82,8 +77,8 @@ import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedExceptio
 import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException;
 import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException;
 import org.apache.pulsar.client.admin.internal.LookupImpl;
-import org.apache.pulsar.client.admin.internal.TopicsImpl;
 import org.apache.pulsar.client.admin.internal.TenantsImpl;
+import org.apache.pulsar.client.admin.internal.TopicsImpl;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.ConsumerBuilder;
 import org.apache.pulsar.client.api.Message;
@@ -120,11 +115,11 @@ import org.apache.pulsar.common.policies.data.PartitionedTopicInternalStats;
 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.SubscriptionStats;
-import org.apache.pulsar.common.policies.data.TopicStats;
 import org.apache.pulsar.common.policies.data.Policies;
 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.TopicStats;
 import org.apache.pulsar.common.util.Codec;
 import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.apache.pulsar.compaction.Compactor;
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 c532c98..332bd92 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
@@ -18,9 +18,7 @@
  */
 package org.apache.pulsar.broker.admin;
 
-import lombok.extern.slf4j.Slf4j;
 import static org.apache.commons.lang3.StringUtils.isBlank;
-import org.apache.pulsar.client.api.MessageId;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotEquals;
@@ -28,11 +26,9 @@ import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
-
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
@@ -45,9 +41,8 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import javax.ws.rs.core.Response.Status;
-
 import lombok.Cleanup;
-
+import lombok.extern.slf4j.Slf4j;
 import org.apache.bookkeeper.mledger.impl.ManagedCursorImpl;
 import org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl;
 import org.apache.pulsar.broker.PulsarService;
@@ -63,6 +58,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException;
 import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.MessageRoutingMode;
 import org.apache.pulsar.client.api.Producer;
 import org.apache.pulsar.client.api.ProxyProtocol;
@@ -83,10 +79,10 @@ import org.apache.pulsar.common.policies.data.NamespaceIsolationData;
 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.TopicStats;
-import org.apache.pulsar.common.policies.data.TenantInfo;
 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.TopicStats;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java
index 92e58668..bee3f78 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java
@@ -20,12 +20,9 @@ package org.apache.pulsar.broker.admin;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.fail;
-
 import com.google.common.collect.Lists;
-
 import javax.ws.rs.ClientErrorException;
 import javax.ws.rs.core.Response.Status;
-
 import org.apache.pulsar.client.admin.PulsarAdminException.ConflictException;
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.Producer;
@@ -103,12 +100,12 @@ public class CreateSubscriptionTest extends ProducerConsumerBase {
                     Lists.newArrayList("sub-1"));
         }
     }
-    
+
     @Test
     public void createSubscriptionOnPartitionedTopicWithPartialFailure() throws Exception {
         String topic = "persistent://my-property/my-ns/my-partitioned-topic";
         admin.topics().createPartitionedTopic(topic, 10);
-        
+
         // create subscription for one partition
         final String partitionedTopic0 = topic+"-partition-0";
         admin.topics().createSubscription(partitionedTopic0, "sub-1", MessageId.latest);
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 84fa300..65def47 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
@@ -19,7 +19,10 @@
 package org.apache.pulsar.broker.admin;
 
 import static org.testng.Assert.assertEquals;
-
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import java.util.Collections;
+import lombok.Cleanup;
 import org.apache.pulsar.broker.admin.AdminApiTest.MockedPulsarService;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
 import org.apache.pulsar.client.api.Consumer;
@@ -34,13 +37,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
-import java.util.Collections;
-
-import lombok.Cleanup;
-
 public class IncrementPartitionsTest extends MockedPulsarServiceBaseTest {
 
     private MockedPulsarService mockPulsarSetup;
@@ -142,8 +138,8 @@ public class IncrementPartitionsTest extends MockedPulsarServiceBaseTest {
 
         @Cleanup
         Reader<String> reader = pulsarClient.newReader(Schema.STRING)
-            .topic(partitionedTopicName.getPartition(0).toString())
-            .startMessageId(MessageId.earliest)
+                .topic(partitionedTopicName.getPartition(0).toString())
+                .startMessageId(MessageId.earliest)
             .create();
 
         admin.topics().updatePartitionedTopic(partitionedTopicName.toString(), 2);
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 67bf32b..8e490f1 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
@@ -18,11 +18,31 @@
  */
 package org.apache.pulsar.broker.admin;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
+import java.lang.reflect.Field;
 import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.container.AsyncResponse;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 import org.apache.pulsar.broker.admin.v2.NonPersistentTopics;
 import org.apache.pulsar.broker.admin.v2.PersistentTopics;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
@@ -47,6 +67,7 @@ import org.apache.pulsar.common.policies.data.TenantInfo;
 import org.apache.pulsar.zookeeper.ZooKeeperManagedLedgerCache;
 import org.apache.zookeeper.KeeperException;
 import org.mockito.ArgumentCaptor;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
@@ -54,29 +75,6 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import java.lang.reflect.Field;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-
 @PrepareForTest(PersistentTopics.class)
 @PowerMockIgnore("com.sun.management.*")
 public class PersistentTopicsTest extends MockedPulsarServiceBaseTest {
@@ -232,7 +230,7 @@ public class PersistentTopicsTest extends MockedPulsarServiceBaseTest {
         Assert.assertEquals(responseCaptor.getValue().getStatus(), Response.Status.NO_CONTENT.getStatusCode());
 
         // 5) Create a subscription
-        response  = mock(AsyncResponse.class);
+        response = mock(AsyncResponse.class);
         persistentTopics.createSubscription(response, testTenant, testNamespace, testLocalTopicName, "test", true,
                 (MessageIdImpl) MessageId.earliest, false);
         responseCaptor = ArgumentCaptor.forClass(Response.class);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoSubscriptionCreationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoSubscriptionCreationTest.java
index 3d6242b..9d1c29e 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoSubscriptionCreationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoSubscriptionCreationTest.java
@@ -18,6 +18,9 @@
  */
 package org.apache.pulsar.broker.service;
 
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.PulsarClientException;
 import org.apache.pulsar.common.naming.TopicName;
@@ -27,10 +30,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
 public class BrokerServiceAutoSubscriptionCreationTest extends BrokerTestBase {
 
     @BeforeClass
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoTopicCreationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoTopicCreationTest.java
index 648fabf..16ec901 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoTopicCreationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceAutoTopicCreationTest.java
@@ -18,12 +18,12 @@
  */
 package org.apache.pulsar.broker.service;
 
-import org.apache.pulsar.client.api.MessageId;
-import org.apache.pulsar.client.api.PulsarClientException;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
+import org.apache.pulsar.client.api.MessageId;
+import org.apache.pulsar.client.api.PulsarClientException;
 import org.apache.pulsar.common.naming.TopicName;
 import org.apache.pulsar.common.policies.data.AutoTopicCreationOverride;
 import org.apache.pulsar.common.policies.data.TopicType;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java
index cc84de2..af3a589 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java
@@ -22,20 +22,19 @@ package org.apache.pulsar.broker.service;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotEquals;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
 import lombok.Cleanup;
 import org.apache.bookkeeper.mledger.ManagedLedgerConfig;
 import org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl;
 import org.apache.pulsar.broker.service.persistent.PersistentTopic;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.Producer;
 import org.junit.Test;
-import org.testng.Assert;
-
-import java.util.concurrent.TimeUnit;
-import org.apache.pulsar.client.api.MessageId;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.testng.Assert;
 
 public class ConsumedLedgersTrimTest extends BrokerTestBase {
 
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java
index 3d9ce8b..b8dfbc8 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java
@@ -24,9 +24,7 @@ import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
-
 import com.google.common.collect.Lists;
-
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -35,7 +33,6 @@ import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
-
 import lombok.extern.slf4j.Slf4j;
 import org.apache.pulsar.broker.service.persistent.PersistentSubscription;
 import org.apache.pulsar.broker.service.persistent.PersistentTopic;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java
index 2007ae8..61a50cc 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java
@@ -23,7 +23,6 @@ import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.BrokenBarrierException;
@@ -32,7 +31,6 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.CyclicBarrier;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
-
 import org.apache.pulsar.client.admin.PulsarAdminException.NotAllowedException;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.Message;
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 a7b63b2..933ad88 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
@@ -21,7 +21,6 @@ package org.apache.pulsar.client.api;
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
 import static org.mockito.Mockito.spy;
 import static org.testng.Assert.fail;
-
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import java.io.IOException;
@@ -32,7 +31,6 @@ import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import javax.naming.AuthenticationException;
-
 import lombok.Cleanup;
 import org.apache.pulsar.broker.PulsarServerException;
 import org.apache.pulsar.broker.ServiceConfiguration;
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 b433486..16e602a 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
@@ -23,11 +23,9 @@ import static org.mockito.Mockito.spy;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
-
 import com.google.common.base.Function;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
-
 import java.lang.reflect.Method;
 import java.net.URL;
 import java.util.LinkedList;
@@ -40,9 +38,7 @@ import java.util.concurrent.CompletionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicLong;
-
 import lombok.extern.slf4j.Slf4j;
-
 import org.apache.pulsar.broker.PulsarService;
 import org.apache.pulsar.broker.ServiceConfiguration;
 import org.apache.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl;
@@ -234,7 +230,8 @@ public class ClientDeduplicationFailureTest {
         producer.newMessage().sequenceId(producerThread.getLastSeqId() + 1).value("end").send();
         producer.close();
 
-        Reader<String> reader = pulsarClient.newReader(Schema.STRING).startMessageId(MessageId.earliest).topic(sourceTopic).create();
+        Reader<String> reader = pulsarClient.newReader(Schema.STRING).startMessageId(MessageId.earliest)
+                .topic(sourceTopic).create();
         Message<String> prevMessage = null;
         Message<String> message = null;
         int count = 0;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleTypedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleTypedProducerConsumerTest.java
index 03cdbc5..a1c9a00 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleTypedProducerConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleTypedProducerConsumerTest.java
@@ -21,11 +21,9 @@ package org.apache.pulsar.client.api;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
-
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
-
 import java.time.Clock;
 import java.util.Collections;
 import java.util.HashMap;
@@ -33,10 +31,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
-
 import lombok.Cleanup;
-
-import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy;
 import org.apache.pulsar.broker.service.schema.SchemaRegistry;
 import org.apache.pulsar.broker.service.schema.exceptions.InvalidSchemaDataException;
 import org.apache.pulsar.client.api.schema.GenericRecord;
@@ -44,6 +39,7 @@ import org.apache.pulsar.client.api.schema.SchemaDefinition;
 import org.apache.pulsar.client.impl.schema.AvroSchema;
 import org.apache.pulsar.client.impl.schema.JSONSchema;
 import org.apache.pulsar.client.impl.schema.ProtobufSchema;
+import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy;
 import org.apache.pulsar.common.protocol.schema.SchemaData;
 import org.apache.pulsar.common.schema.SchemaType;
 import org.slf4j.Logger;
@@ -501,9 +497,9 @@ public class SimpleTypedProducerConsumerTest extends ProducerConsumerBase {
        }
 
        Reader<GenericRecord> reader = pulsarClient
-           .newReader(Schema.AUTO_CONSUME())
-           .topic("persistent://my-property/use/my-ns/my-topic1")
-           .startMessageId(MessageId.earliest)
+               .newReader(Schema.AUTO_CONSUME())
+               .topic("persistent://my-property/use/my-ns/my-topic1")
+               .startMessageId(MessageId.earliest)
            .create();
 
        Message<GenericRecord> msg = null;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TopicReaderTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TopicReaderTest.java
index ebc2889..f1b03b7 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TopicReaderTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TopicReaderTest.java
@@ -23,18 +23,22 @@ import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
-
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
-
 import org.apache.bookkeeper.common.concurrent.FutureUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.pulsar.client.impl.BatchMessageIdImpl;
@@ -171,7 +175,8 @@ public class TopicReaderTest extends ProducerConsumerBase {
             producer.send(message.getBytes());
         }
 
-        Reader<byte[]> reader = pulsarClient.newReader().topic("persistent://my-property/my-ns/testReaderAfterMessagesWerePublished")
+        Reader<byte[]> reader = pulsarClient.newReader()
+                .topic("persistent://my-property/my-ns/testReaderAfterMessagesWerePublished")
                 .startMessageId(MessageId.earliest).create();
 
         Message<byte[]> msg = null;
@@ -645,9 +650,11 @@ public class TopicReaderTest extends ProducerConsumerBase {
 
     @Test
     public void testSimpleReaderReachEndOfTopic() throws Exception {
-        Reader<byte[]> reader = pulsarClient.newReader().topic("persistent://my-property/my-ns/testSimpleReaderReachEndOfTopic")
+        Reader<byte[]> reader = pulsarClient.newReader()
+                .topic("persistent://my-property/my-ns/testSimpleReaderReachEndOfTopic")
                 .startMessageId(MessageId.earliest).create();
-        Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/my-ns/testSimpleReaderReachEndOfTopic")
+        Producer<byte[]> producer = pulsarClient.newProducer()
+                .topic("persistent://my-property/my-ns/testSimpleReaderReachEndOfTopic")
                 .create();
 
         // no data write, should return false
@@ -850,7 +857,7 @@ public class TopicReaderTest extends ProducerConsumerBase {
         pulsarClient.newConsumer().topic(topic).subscriptionName("sub1").subscribe().close();
 
         try (Reader<byte[]> reader = pulsarClient.newReader().topic(topic)
-            .startMessageId(MessageId.earliest).create()) {
+                .startMessageId(MessageId.earliest).create()) {
             assertFalse(reader.hasMessageAvailable());
         }
 
@@ -859,7 +866,7 @@ public class TopicReaderTest extends ProducerConsumerBase {
         }
 
         try (Reader<byte[]> reader = pulsarClient.newReader().topic(topic)
-            .startMessageId(MessageId.earliest).create()) {
+                .startMessageId(MessageId.earliest).create()) {
             assertTrue(reader.hasMessageAvailable());
         }
 
@@ -867,7 +874,7 @@ public class TopicReaderTest extends ProducerConsumerBase {
         pulsar.getBrokerService().getTopicReference(topic).get().close(false).get();
 
         try (Reader<byte[]> reader = pulsarClient.newReader().topic(topic)
-            .startMessageId(MessageId.earliest).create()) {
+                .startMessageId(MessageId.earliest).create()) {
             assertTrue(reader.hasMessageAvailable());
 
             String readOut = new String(reader.readNext().getData());
@@ -886,7 +893,7 @@ public class TopicReaderTest extends ProducerConsumerBase {
         pulsarClient.newConsumer().topic(topic).subscriptionName("sub2").subscribe().close();
 
         try (Reader<byte[]> reader = pulsarClient.newReader().topic(topic)
-            .startMessageId(MessageId.earliest).create()) {
+                .startMessageId(MessageId.earliest).create()) {
             assertFalse(reader.hasMessageAvailable());
         }
 
@@ -895,7 +902,7 @@ public class TopicReaderTest extends ProducerConsumerBase {
         }
 
         try (Reader<byte[]> reader = pulsarClient.newReader().topic(topic)
-            .startMessageId(MessageId.earliest).create()) {
+                .startMessageId(MessageId.earliest).create()) {
             assertTrue(reader.hasMessageAvailable());
         }
 
@@ -909,7 +916,7 @@ public class TopicReaderTest extends ProducerConsumerBase {
         });
 
         try (Reader<byte[]> reader = pulsarClient.newReader().topic(topic)
-            .startMessageId(MessageId.earliest).create()) {
+                .startMessageId(MessageId.earliest).create()) {
             assertTrue(reader.hasMessageAvailable());
 
             String readOut = new String(reader.readNext().getData());
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 0675fdd..5786fac 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
@@ -18,6 +18,12 @@
  */
 package org.apache.pulsar.client.impl;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -27,9 +33,6 @@ import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
 import lombok.Cleanup;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
 import org.apache.pulsar.broker.service.StickyKeyConsumerSelector;
@@ -53,11 +56,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
 public class MultiTopicsReaderTest extends MockedPulsarServiceBaseTest {
 
     private static final String subscription = "reader-multi-topics-sub";
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 9a15ea5..9351663 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
@@ -19,9 +19,7 @@
 package org.apache.pulsar.client.impl;
 
 import com.google.common.collect.Sets;
-
 import io.netty.buffer.ByteBuf;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -32,7 +30,6 @@ import java.util.concurrent.CancellationException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-
 import org.apache.bookkeeper.mledger.ManagedLedger;
 import org.apache.commons.lang3.tuple.ImmutableTriple;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
@@ -42,10 +39,10 @@ import org.apache.pulsar.client.api.MessageRoutingMode;
 import org.apache.pulsar.client.api.Producer;
 import org.apache.pulsar.client.api.RawMessage;
 import org.apache.pulsar.client.api.RawReader;
-import org.apache.pulsar.common.protocol.Commands;
 import org.apache.pulsar.common.api.proto.PulsarApi.MessageMetadata;
 import org.apache.pulsar.common.policies.data.ClusterData;
 import org.apache.pulsar.common.policies.data.TenantInfo;
+import org.apache.pulsar.common.protocol.Commands;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
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 62b6b8a..5328073 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
@@ -18,8 +18,20 @@
  */
 package org.apache.pulsar.client.impl;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 import lombok.Cleanup;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
@@ -45,20 +57,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
 @Slf4j
 public class ReaderTest extends MockedPulsarServiceBaseTest {
 
@@ -278,14 +276,14 @@ public class ReaderTest extends MockedPulsarServiceBaseTest {
 
         @Cleanup
         Reader<byte[]> reader1 = pulsarClient.newReader()
-            .topic(topic)
-            .startMessageId(MessageId.earliest)
+                .topic(topic)
+                .startMessageId(MessageId.earliest)
             .create();
 
         @Cleanup
         Reader<byte[]> reader2 = pulsarClient.newReader()
-            .topic(topic)
-            .startMessageId(MessageId.earliest)
+                .topic(topic)
+                .startMessageId(MessageId.earliest)
             .create();
 
         Assert.assertEquals(admin.topics().getStats(topic).subscriptions.size(), 2);
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 a88ea77..d7e9eb7 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
@@ -25,10 +25,8 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
-
 import com.google.common.collect.Sets;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
-
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
@@ -45,7 +43,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-
 import org.apache.bookkeeper.client.BookKeeper;
 import org.apache.bookkeeper.client.api.OpenBuilder;
 import org.apache.bookkeeper.mledger.ManagedLedgerInfo;
@@ -1655,4 +1652,4 @@ public class CompactionTest extends MockedPulsarServiceBaseTest {
             assertNull(none);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/OffloadProcessStatus.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/OffloadProcessStatus.java
index 7a8b70b..99a2495 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/OffloadProcessStatus.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/OffloadProcessStatus.java
@@ -46,7 +46,7 @@ public class OffloadProcessStatus extends LongRunningProcessStatus {
 
     public static OffloadProcessStatus forError(String lastError) {
         return new OffloadProcessStatus(Status.ERROR, lastError,
-                                        (MessageIdImpl) MessageId.earliest);
+                (MessageIdImpl) MessageId.earliest);
     }
 
     public static OffloadProcessStatus forSuccess(MessageIdImpl messageId) {
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 7c3e149..2c857a6 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
@@ -90,9 +90,9 @@ public class TopicsImpl extends BaseResource implements Topics {
     private final WebTarget adminTopics;
     private final WebTarget adminV2Topics;
     // CHECKSTYLE.OFF: MemberName
-    private final String BATCH_HEADER = "X-Pulsar-num-batch-message";
-    private final String MESSAGE_ID = "X-Pulsar-Message-ID";
-    private final String PUBLISH_TIME = "X-Pulsar-publish-time";
+    static private final String BATCH_HEADER = "X-Pulsar-num-batch-message";
+    static private final String MESSAGE_ID = "X-Pulsar-Message-ID";
+    static private final String PUBLISH_TIME = "X-Pulsar-publish-time";
     // CHECKSTYLE.ON: MemberName
 
     public TopicsImpl(WebTarget web, Authentication auth, long readTimeoutMs) {
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 927ee73..f39916e 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
@@ -27,17 +27,14 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.testng.Assert.assertEquals;
-
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-
 import java.lang.reflect.Field;
 import java.util.EnumSet;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
-
 import org.apache.pulsar.client.admin.Bookies;
 import org.apache.pulsar.client.admin.BrokerStats;
 import org.apache.pulsar.client.admin.Brokers;
@@ -65,9 +62,11 @@ import org.apache.pulsar.common.policies.data.BookieAffinityGroupData;
 import org.apache.pulsar.common.policies.data.BookieInfo;
 import org.apache.pulsar.common.policies.data.BundlesData;
 import org.apache.pulsar.common.policies.data.ClusterData;
-import org.apache.pulsar.common.policies.data.DispatchRate;
 import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies;
+import org.apache.pulsar.common.policies.data.DispatchRate;
 import org.apache.pulsar.common.policies.data.FailureDomain;
+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.PersistencePolicies;
 import org.apache.pulsar.common.policies.data.Policies;
@@ -77,8 +76,6 @@ 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.TopicType;
-import org.apache.pulsar.common.policies.data.InactiveTopicPolicies;
-import org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode;
 import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mockito;
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 4ab275d..d37c6bb 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
@@ -18,11 +18,19 @@
  */
 package org.apache.pulsar.admin.cli;
 
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
+import com.beust.jcommander.Parameter;
+import com.beust.jcommander.Parameters;
+import com.beust.jcommander.converters.CommaParameterSplitter;
+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;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
-
-import static org.apache.commons.lang3.StringUtils.isNotBlank;
 import org.apache.pulsar.client.admin.LongRunningProcessStatus;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.PulsarAdminException;
@@ -33,17 +41,6 @@ import org.apache.pulsar.client.impl.BatchMessageIdImpl;
 import org.apache.pulsar.client.impl.MessageIdImpl;
 import org.apache.pulsar.common.util.RelativeTimeUtil;
 
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.Parameters;
-import com.beust.jcommander.converters.CommaParameterSplitter;
-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;
-
 @Parameters(commandDescription = "Operations on persistent topics. The persistent-topics " +
         "has been deprecated in favor of topics", hidden = true)
 public class CmdPersistentTopics extends CmdBase {
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 4519568..6c6ed61 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
@@ -19,7 +19,6 @@
 package org.apache.pulsar.admin.cli;
 
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
-
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.ParameterException;
 import com.beust.jcommander.Parameters;
@@ -28,17 +27,14 @@ 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;
-
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
-
 import org.apache.pulsar.client.admin.LongRunningProcessStatus;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.PulsarAdminException;
diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java
index d15010d..9efa0d9 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java
@@ -22,17 +22,15 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.scurrilous.circe.checksum.Crc32cIntChecksum.computeChecksum;
 import static org.apache.pulsar.common.protocol.Commands.hasChecksum;
 import static org.apache.pulsar.common.protocol.Commands.readChecksum;
-
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Queues;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
-import io.netty.util.Timeout;
 import io.netty.util.Recycler;
 import io.netty.util.Recycler.Handle;
 import io.netty.util.ReferenceCountUtil;
-
+import io.netty.util.Timeout;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -59,7 +57,6 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.stream.Collectors;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.ConsumerCryptoFailureAction;
@@ -71,19 +68,18 @@ import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.Messages;
 import org.apache.pulsar.client.api.Producer;
 import org.apache.pulsar.client.api.PulsarClientException;
+import org.apache.pulsar.client.api.PulsarClientException.MessageAcknowledgeException;
+import org.apache.pulsar.client.api.PulsarClientException.TopicDoesNotExistException;
 import org.apache.pulsar.client.api.Schema;
 import org.apache.pulsar.client.api.SubscriptionInitialPosition;
 import org.apache.pulsar.client.api.SubscriptionMode;
 import org.apache.pulsar.client.api.SubscriptionType;
 import org.apache.pulsar.client.api.TypedMessageBuilder;
-import org.apache.pulsar.client.api.PulsarClientException.MessageAcknowledgeException;
-import org.apache.pulsar.client.api.PulsarClientException.TopicDoesNotExistException;
 import org.apache.pulsar.client.api.transaction.TxnID;
 import org.apache.pulsar.client.impl.conf.ConsumerConfigurationData;
 import org.apache.pulsar.client.impl.crypto.MessageCryptoBc;
 import org.apache.pulsar.client.impl.transaction.TransactionImpl;
 import org.apache.pulsar.client.util.RetryMessageUtil;
-import org.apache.pulsar.common.protocol.Commands;
 import org.apache.pulsar.common.api.EncryptionContext;
 import org.apache.pulsar.common.api.EncryptionContext.EncryptionKey;
 import org.apache.pulsar.common.api.proto.PulsarApi;
@@ -99,6 +95,7 @@ import org.apache.pulsar.common.api.proto.PulsarApi.ProtocolVersion;
 import org.apache.pulsar.common.compression.CompressionCodec;
 import org.apache.pulsar.common.compression.CompressionCodecProvider;
 import org.apache.pulsar.common.naming.TopicName;
+import org.apache.pulsar.common.protocol.Commands;
 import org.apache.pulsar.common.schema.SchemaInfo;
 import org.apache.pulsar.common.schema.SchemaType;
 import org.apache.pulsar.common.util.FutureUtil;
diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java
index 1a33f4d..9fa397b 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java
@@ -18,6 +18,8 @@
  */
 package org.apache.pulsar.client.impl;
 
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMap.Builder;
@@ -25,25 +27,6 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;
 import io.netty.util.Timeout;
 import io.netty.util.TimerTask;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerStats;
-import org.apache.pulsar.client.api.Message;
-import org.apache.pulsar.client.api.MessageId;
-import org.apache.pulsar.client.api.Messages;
-import org.apache.pulsar.client.api.PulsarClientException;
-import org.apache.pulsar.client.api.PulsarClientException.NotSupportedException;
-import org.apache.pulsar.client.api.Schema;
-import org.apache.pulsar.client.api.SubscriptionType;
-import org.apache.pulsar.client.impl.conf.ConsumerConfigurationData;
-import org.apache.pulsar.client.impl.transaction.TransactionImpl;
-import org.apache.pulsar.client.util.ConsumerName;
-import org.apache.pulsar.common.api.proto.PulsarApi.CommandAck.AckType;
-import org.apache.pulsar.common.naming.TopicName;
-import org.apache.pulsar.common.util.FutureUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -66,9 +49,24 @@ import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkState;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.pulsar.client.api.Consumer;
+import org.apache.pulsar.client.api.ConsumerStats;
+import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.MessageId;
+import org.apache.pulsar.client.api.Messages;
+import org.apache.pulsar.client.api.PulsarClientException;
+import org.apache.pulsar.client.api.PulsarClientException.NotSupportedException;
+import org.apache.pulsar.client.api.Schema;
+import org.apache.pulsar.client.api.SubscriptionType;
+import org.apache.pulsar.client.impl.conf.ConsumerConfigurationData;
+import org.apache.pulsar.client.impl.transaction.TransactionImpl;
+import org.apache.pulsar.client.util.ConsumerName;
+import org.apache.pulsar.common.api.proto.PulsarApi.CommandAck.AckType;
+import org.apache.pulsar.common.naming.TopicName;
+import org.apache.pulsar.common.util.FutureUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class MultiTopicsConsumerImpl<T> extends ConsumerBase<T> {
 
diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PersistentAcknowledgmentsGroupingTracker.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PersistentAcknowledgmentsGroupingTracker.java
index aab4c52..3ae833b 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PersistentAcknowledgmentsGroupingTracker.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PersistentAcknowledgmentsGroupingTracker.java
@@ -20,7 +20,6 @@ package org.apache.pulsar.client.impl;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.EventLoopGroup;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -32,17 +31,15 @@ import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
-
 import lombok.extern.slf4j.Slf4j;
-
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.transaction.TxnID;
 import org.apache.pulsar.client.impl.conf.ConsumerConfigurationData;
 import org.apache.pulsar.client.impl.transaction.TransactionImpl;
-import org.apache.pulsar.common.protocol.Commands;
 import org.apache.pulsar.common.api.proto.PulsarApi.CommandAck.AckType;
 import org.apache.pulsar.common.api.proto.PulsarApi.CommandAck.ValidationError;
+import org.apache.pulsar.common.protocol.Commands;
 import org.apache.pulsar.common.util.collections.BitSetRecyclable;
 import org.apache.pulsar.common.util.collections.ConcurrentBitSetRecyclable;
 
@@ -542,4 +539,4 @@ public class PersistentAcknowledgmentsGroupingTracker implements Acknowledgments
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ReaderBuilderImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ReaderBuilderImpl.java
index 743bd87..7987ec4 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ReaderBuilderImpl.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ReaderBuilderImpl.java
@@ -18,14 +18,14 @@
  */
 package org.apache.pulsar.client.impl;
 
+import static org.apache.pulsar.client.api.KeySharedPolicy.DEFAULT_HASH_RANGE_SIZE;
+import com.google.common.base.Preconditions;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
-
 import lombok.AccessLevel;
 import lombok.Getter;
-import com.google.common.base.Preconditions;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pulsar.client.api.ConsumerCryptoFailureAction;
 import org.apache.pulsar.client.api.CryptoKeyReader;
@@ -39,7 +39,6 @@ import org.apache.pulsar.client.api.Schema;
 import org.apache.pulsar.client.impl.conf.ConfigurationDataUtils;
 import org.apache.pulsar.client.impl.conf.ReaderConfigurationData;
 import org.apache.pulsar.common.util.FutureUtil;
-import static org.apache.pulsar.client.api.KeySharedPolicy.DEFAULT_HASH_RANGE_SIZE;
 
 @Getter(AccessLevel.PUBLIC)
 public class ReaderBuilderImpl<T> implements ReaderBuilder<T> {
diff --git a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/BuildersTest.java b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/BuildersTest.java
index 4f7554e..efd4e48 100644
--- a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/BuildersTest.java
+++ b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/BuildersTest.java
@@ -22,12 +22,10 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotSame;
 import static org.testng.Assert.assertTrue;
-
 import java.lang.reflect.Field;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
-
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.PulsarClient;
 import org.apache.pulsar.client.api.PulsarClientException;
@@ -106,7 +104,8 @@ public class BuildersTest {
     @Test(expectedExceptions = {PulsarClientException.class}, expectedExceptionsMessageRegExp = ".* must be specified but they cannot be specified at the same time.*")
     public void shouldNotSetTwoOptAtTheSameTime() throws Exception {
         PulsarClient client = PulsarClient.builder().serviceUrl("pulsar://localhost:6650").build();
-        try (Reader reader = client.newReader().topic("abc").startMessageId(MessageId.earliest).startMessageFromRollbackDuration(10, TimeUnit.HOURS).create()) {
+        try (Reader reader = client.newReader().topic("abc").startMessageId(MessageId.earliest)
+                .startMessageFromRollbackDuration(10, TimeUnit.HOURS).create()) {
             // no-op
         } finally {
             client.close();
diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionAssignmentTailer.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionAssignmentTailer.java
index 48f087f..f5fc56f 100644
--- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionAssignmentTailer.java
+++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionAssignmentTailer.java
@@ -18,6 +18,9 @@
  */
 package org.apache.pulsar.functions.worker;
 
+import java.io.IOException;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.pulsar.client.api.Message;
@@ -26,10 +29,6 @@ import org.apache.pulsar.client.api.PulsarClientException;
 import org.apache.pulsar.client.api.Reader;
 import org.apache.pulsar.client.api.ReaderBuilder;
 
-import java.io.IOException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
 /**
  * This class is responsible for reading assignments from the 'assignments' functions internal topic.
  * Only functions worker leader writes to the topic while other workers read from the topic.
@@ -53,7 +52,7 @@ public class FunctionAssignmentTailer implements AutoCloseable {
 
     @Getter
     private MessageId lastMessageId = null;
-    
+
     public FunctionAssignmentTailer(
             FunctionRuntimeManager functionRuntimeManager,
             ReaderBuilder readerBuilder,
@@ -128,7 +127,7 @@ public class FunctionAssignmentTailer implements AutoCloseable {
             log.error("Failed to stop function assignment tailer", e);
         }
     }
-    
+
     private Reader<byte[]> createReader(MessageId startMessageId) throws PulsarClientException {
         log.info("Assignment tailer will start reading from message id {}", startMessageId);
 
diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionMetaDataManager.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionMetaDataManager.java
index dfb3a90..7416334 100644
--- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionMetaDataManager.java
+++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionMetaDataManager.java
@@ -19,14 +19,6 @@
 package org.apache.pulsar.functions.worker;
 
 import com.google.common.annotations.VisibleForTesting;
-import lombok.extern.slf4j.Slf4j;
-import lombok.Getter;
-import org.apache.pulsar.client.api.*;
-import org.apache.pulsar.functions.proto.Function;
-import org.apache.pulsar.functions.proto.Function.FunctionMetaData;
-import org.apache.pulsar.functions.proto.Request;
-import org.apache.pulsar.functions.utils.FunctionCommon;
-
 import java.io.IOException;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -35,6 +27,19 @@ import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.pulsar.client.api.Message;
+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.TypedMessageBuilder;
+import org.apache.pulsar.functions.proto.Function;
+import org.apache.pulsar.functions.proto.Function.FunctionMetaData;
+import org.apache.pulsar.functions.proto.Request;
+import org.apache.pulsar.functions.utils.FunctionCommon;
 
 /**
  * FunctionMetaDataManager maintains a global state of all function metadata.
@@ -98,7 +103,7 @@ public class FunctionMetaDataManager implements AutoCloseable {
      */
     public synchronized void initialize() {
         try (Reader reader = FunctionMetaDataTopicTailer.createReader(
-          workerConfig, pulsarClient.newReader(), MessageId.earliest)){
+                workerConfig, pulsarClient.newReader(), MessageId.earliest)) {
             // read all existing messages
             while (reader.hasMessageAvailable()) {
                 processMetaDataTopicMessage(reader.readNext());
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 bb07115..009aaa9 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
@@ -19,6 +19,25 @@
 package org.apache.pulsar.functions.worker;
 
 import com.google.common.annotations.VisibleForTesting;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+import java.util.TreeMap;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriBuilder;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
@@ -29,13 +48,13 @@ import org.apache.pulsar.client.admin.PulsarAdminException;
 import org.apache.pulsar.client.api.Message;
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.Reader;
+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.FunctionStats;
 import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.apache.pulsar.common.util.Reflections;
 import org.apache.pulsar.functions.auth.FunctionAuthProvider;
-import org.apache.pulsar.common.functions.AuthenticationConfig;
 import org.apache.pulsar.functions.proto.Function;
 import org.apache.pulsar.functions.proto.Function.Assignment;
 import org.apache.pulsar.functions.runtime.RuntimeCustomizer;
@@ -49,27 +68,6 @@ import org.apache.pulsar.functions.secretsproviderconfigurator.SecretsProviderCo
 import org.apache.pulsar.functions.utils.FunctionCommon;
 import org.apache.pulsar.functions.utils.FunctionInstanceId;
 
-import java.io.IOException;
-import java.net.URI;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.TreeMap;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriBuilder;
-
 /**
  * This class managers all aspects of functions assignments and running of function assignments for this worker
  */
@@ -227,11 +225,11 @@ public class FunctionRuntimeManager implements AutoCloseable{
      * @return the message id of the message processed during init phase
      */
     public MessageId initialize() {
-        try (Reader<byte[]> reader = WorkerUtils.createReader (
-          workerService.getClient().newReader(),
-          workerConfig.getWorkerId() + "-function-assignment-initialize",
-          workerConfig.getFunctionAssignmentTopic(),
-          MessageId.earliest)) {
+        try (Reader<byte[]> reader = WorkerUtils.createReader(
+                workerService.getClient().newReader(),
+                workerConfig.getWorkerId() + "-function-assignment-initialize",
+                workerConfig.getFunctionAssignmentTopic(),
+                MessageId.earliest)) {
 
             // start init phase
             this.isInitializePhase = true;
diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/SchedulerManager.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/SchedulerManager.java
index 05c3790..5019982 100644
--- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/SchedulerManager.java
+++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/SchedulerManager.java
@@ -24,6 +24,25 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import io.netty.util.concurrent.DefaultThreadFactory;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.stream.Collectors;
 import lombok.Builder;
 import lombok.Data;
 import lombok.Getter;
@@ -49,26 +68,6 @@ import org.apache.pulsar.functions.utils.Actions;
 import org.apache.pulsar.functions.utils.FunctionCommon;
 import org.apache.pulsar.functions.worker.scheduler.IScheduler;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.stream.Collectors;
-
 @Slf4j
 /**
  * The scheduler manager is used to compute scheduling of function instances
@@ -102,7 +101,7 @@ public class SchedulerManager implements AutoCloseable {
     private Producer<byte[]> producer;
 
     private ScheduledExecutorService scheduledExecutorService;
-    
+
     private final PulsarAdmin admin;
 
     @Getter
@@ -111,7 +110,7 @@ public class SchedulerManager implements AutoCloseable {
     private volatile boolean isRunning = false;
 
     AtomicBoolean isCompactionNeeded = new AtomicBoolean(false);
-    private static final long DEFAULT_ADMIN_API_BACKOFF_SEC = 60; 
+    private static final long DEFAULT_ADMIN_API_BACKOFF_SEC = 60;
     public static final String HEARTBEAT_TENANT = "pulsar-function";
     public static final String HEARTBEAT_NAMESPACE = "heartbeat";
 
@@ -252,7 +251,7 @@ public class SchedulerManager implements AutoCloseable {
             throw new RebalanceInProgressException();
         }
     }
-    
+
     @VisibleForTesting
     void invokeScheduler() {
         long startTime = System.nanoTime();
@@ -281,7 +280,7 @@ public class SchedulerManager implements AutoCloseable {
                 if (deleted) {
                     Assignment assignment = entry.getValue();
                     MessageId messageId = publishNewAssignment(assignment.toBuilder().build(), true);
-                    
+
                     // Directly update in memory assignment cache since I am leader
                     log.info("Deleting assignment: {}", assignment);
                     functionRuntimeManager.deleteAssignment(fullyQualifiedInstanceId);
@@ -334,7 +333,7 @@ public class SchedulerManager implements AutoCloseable {
                 .flatMap(stringMapEntry -> stringMapEntry.getValue().values().stream())
                 .collect(Collectors.toList());
 
-        Pair<List<Function.Instance>, List<Assignment>> unassignedInstances 
+        Pair<List<Function.Instance>, List<Assignment>> unassignedInstances
                 = getUnassignedFunctionInstances(workerIdToAssignments, allInstances);
 
         workerStatsManager.scheduleStrategyExecTimeStartStart();
@@ -555,7 +554,7 @@ public class SchedulerManager implements AutoCloseable {
             schedulerLock.unlock();
         }
     }
-    
+
     static String checkHeartBeatFunction(Instance funInstance) {
         if (funInstance.getFunctionMetaData() != null
                 && funInstance.getFunctionMetaData().getFunctionDetails() != null) {
diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerService.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerService.java
index 4255d89..bf4c24c 100644
--- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerService.java
+++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/WorkerService.java
@@ -22,6 +22,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.annotations.VisibleForTesting;
 import io.netty.util.concurrent.DefaultThreadFactory;
+import java.net.URI;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.bookkeeper.clients.StorageClientBuilder;
@@ -38,10 +41,6 @@ import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.PulsarClient;
 import org.apache.pulsar.client.api.PulsarClientException;
 
-import java.net.URI;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-
 /**
  * A service component contains everything to run a worker except rest server.
  */
@@ -182,7 +181,9 @@ public class WorkerService {
             //create membership manager
             String coordinationTopic = workerConfig.getClusterCoordinationTopic();
             if (!brokerAdmin.topics().getSubscriptions(coordinationTopic).contains(MembershipManager.COORDINATION_TOPIC_SUBSCRIPTION)) {
-                brokerAdmin.topics().createSubscription(coordinationTopic, MembershipManager.COORDINATION_TOPIC_SUBSCRIPTION, MessageId.earliest);
+                brokerAdmin.topics()
+                        .createSubscription(coordinationTopic, MembershipManager.COORDINATION_TOPIC_SUBSCRIPTION,
+                                MessageId.earliest);
             }
             this.membershipManager = new MembershipManager(this, client, brokerAdmin);
 
@@ -241,7 +242,7 @@ public class WorkerService {
             // Start function assignment tailer
             log.info("/** Starting Function Assignment Tailer **/");
             functionAssignmentTailer.startFromMessage(lastAssignmentMessageId);
-            
+
             // start function metadata manager
             log.info("/** Starting Metdata Manager **/");
             functionMetaDataManager.start();
diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/FunctionMetaDataTopicTailerTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/FunctionMetaDataTopicTailerTest.java
index 784b7ed..360f448 100644
--- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/FunctionMetaDataTopicTailerTest.java
+++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/FunctionMetaDataTopicTailerTest.java
@@ -25,16 +25,13 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
-
 import lombok.extern.slf4j.Slf4j;
 import org.apache.pulsar.client.api.Message;
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.Reader;
 import org.apache.pulsar.client.api.ReaderBuilder;
-import org.apache.pulsar.functions.proto.Request.ServiceRequest;
 import org.apache.pulsar.functions.proto.Function.FunctionMetaData;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
@@ -63,7 +60,8 @@ public class FunctionMetaDataTopicTailerTest {
         when(readerBuilder.subscriptionRolePrefix(anyString())).thenReturn(readerBuilder);
         when(readerBuilder.create()).thenReturn(reader);
         this.fsm = mock(FunctionMetaDataManager.class);
-        this.fsc = new FunctionMetaDataTopicTailer(fsm, readerBuilder, new WorkerConfig(), MessageId.earliest, ErrorNotifier.getDefaultImpl() );
+        this.fsc = new FunctionMetaDataTopicTailer(fsm, readerBuilder, new WorkerConfig(), MessageId.earliest,
+                ErrorNotifier.getDefaultImpl());
     }
 
     @AfterMethod
diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/SchedulerManagerTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/SchedulerManagerTest.java
index 66174fb..3b048dd 100644
--- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/SchedulerManagerTest.java
+++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/SchedulerManagerTest.java
@@ -31,11 +31,23 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
-
 import com.google.common.collect.Sets;
 import com.google.protobuf.InvalidProtocolBufferException;
 import io.netty.util.concurrent.DefaultThreadFactory;
 import io.prometheus.client.CollectorRegistry;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.pulsar.client.api.CompressionType;
 import org.apache.pulsar.client.api.MessageId;
@@ -59,20 +71,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
 @Slf4j
 public class SchedulerManagerTest {
 
diff --git a/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/PulsarDatabaseHistory.java b/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/PulsarDatabaseHistory.java
index ed7de1f..c3d95a7 100644
--- a/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/PulsarDatabaseHistory.java
+++ b/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/PulsarDatabaseHistory.java
@@ -19,7 +19,6 @@
 package org.apache.pulsar.io.debezium;
 
 import static org.apache.commons.lang.StringUtils.isBlank;
-
 import io.debezium.annotation.ThreadSafe;
 import io.debezium.config.Configuration;
 import io.debezium.config.Field;
@@ -193,8 +192,8 @@ public final class PulsarDatabaseHistory extends AbstractDatabaseHistory {
     protected void recoverRecords(Consumer<HistoryRecord> records) {
         setupClientIfNeeded();
         try (Reader<String> historyReader = pulsarClient.newReader(Schema.STRING)
-            .topic(topicName)
-            .startMessageId(MessageId.earliest)
+                .topic(topicName)
+                .startMessageId(MessageId.earliest)
             .create()
         ) {
             log.info("Scanning the database history topic '{}'", topicName);
@@ -240,8 +239,8 @@ public final class PulsarDatabaseHistory extends AbstractDatabaseHistory {
     public boolean exists() {
         setupClientIfNeeded();
         try (Reader<String> historyReader = pulsarClient.newReader(Schema.STRING)
-            .topic(topicName)
-            .startMessageId(MessageId.earliest)
+                .topic(topicName)
+                .startMessageId(MessageId.earliest)
             .create()
         ) {
             return historyReader.hasMessageAvailable();
diff --git a/pulsar-io/kafka-connect-adaptor/src/main/java/org/apache/pulsar/io/kafka/connect/PulsarOffsetBackingStore.java b/pulsar-io/kafka-connect-adaptor/src/main/java/org/apache/pulsar/io/kafka/connect/PulsarOffsetBackingStore.java
index d7daf82..e616e84 100644
--- a/pulsar-io/kafka-connect-adaptor/src/main/java/org/apache/pulsar/io/kafka/connect/PulsarOffsetBackingStore.java
+++ b/pulsar-io/kafka-connect-adaptor/src/main/java/org/apache/pulsar/io/kafka/connect/PulsarOffsetBackingStore.java
@@ -21,7 +21,6 @@ package org.apache.pulsar.io.kafka.connect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.commons.lang.StringUtils.isBlank;
-
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
 import io.netty.buffer.Unpooled;
@@ -146,8 +145,8 @@ public class PulsarOffsetBackingStore implements OffsetBackingStore {
                 .create();
             log.info("Successfully created producer to produce updates to topic {}", topic);
             reader = client.newReader(Schema.BYTES)
-                .topic(topic)
-                .startMessageId(MessageId.earliest)
+                    .topic(topic)
+                    .startMessageId(MessageId.earliest)
                 .create();
             log.info("Successfully created reader to replay updates from topic {}", topic);
             CompletableFuture<Void> endFuture = new CompletableFuture<>();
diff --git a/pulsar-testclient/src/main/java/org/apache/pulsar/testclient/PerformanceReader.java b/pulsar-testclient/src/main/java/org/apache/pulsar/testclient/PerformanceReader.java
index 0d21196..61933ad 100644
--- a/pulsar-testclient/src/main/java/org/apache/pulsar/testclient/PerformanceReader.java
+++ b/pulsar-testclient/src/main/java/org/apache/pulsar/testclient/PerformanceReader.java
@@ -20,7 +20,13 @@ package org.apache.pulsar.testclient;
 
 import static org.apache.commons.lang3.StringUtils.isBlank;
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
-
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.Parameter;
+import com.beust.jcommander.ParameterException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.google.common.collect.Lists;
+import com.google.common.util.concurrent.RateLimiter;
 import java.io.FileInputStream;
 import java.text.DecimalFormat;
 import java.util.List;
@@ -28,7 +34,6 @@ import java.util.Properties;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.LongAdder;
-
 import org.apache.pulsar.client.api.ClientBuilder;
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.PulsarClient;
@@ -41,14 +46,6 @@ import org.apache.pulsar.common.util.FutureUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.beust.jcommander.JCommander;
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.ParameterException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.RateLimiter;
-
 public class PerformanceReader {
     private static final LongAdder messagesReceived = new LongAdder();
     private static final LongAdder bytesReceived = new LongAdder();
diff --git a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ReaderHandler.java b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ReaderHandler.java
index dc98181..c34c0c0 100644
--- a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ReaderHandler.java
+++ b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ReaderHandler.java
@@ -19,7 +19,6 @@
 package org.apache.pulsar.websocket;
 
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import java.io.IOException;
 import java.util.Base64;
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 d95d1d3..6ca84b5 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
@@ -18,7 +18,21 @@
  */
 package org.apache.pulsar.tests.integration.functions;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 import com.google.gson.Gson;
+import java.time.Duration;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
 import lombok.Cleanup;
 import lombok.extern.slf4j.Slf4j;
 import net.jodah.failsafe.Failsafe;
@@ -81,22 +95,6 @@ import org.testcontainers.shaded.com.google.common.collect.Sets;
 import org.testng.annotations.Test;
 import org.testng.collections.Maps;
 
-import java.time.Duration;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
 /**
  * A test base for testing sink.
  */
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 e0f95a6..4970aed 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
@@ -19,11 +19,8 @@
 package org.apache.pulsar.tests.integration.proxy;
 
 import static org.testng.Assert.assertEquals;
-
 import java.util.Collections;
-
 import lombok.Cleanup;
-
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.api.Producer;
@@ -33,10 +30,9 @@ import org.apache.pulsar.common.policies.data.TenantInfo;
 import org.apache.pulsar.common.policies.data.TopicStats;
 import org.apache.pulsar.tests.integration.suites.PulsarTestSuite;
 import org.apache.pulsar.tests.integration.topologies.PulsarClusterSpec;
-import org.testng.annotations.Test;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.testng.annotations.Test;
 
 /**
  * Test cases for proxy.