You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by du...@apache.org on 2022/07/13 06:54:35 UTC

[rocketmq] 01/01: Merge pull request #4578 from apache/develop-merge-5.0.0

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

duhengforever pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git

commit 10326b479af2282310ea0f496f6c08229e4ae126
Merge: 6f5cd4aa4 a2c96fd7b
Author: Heng Du <du...@apache.org>
AuthorDate: Wed Jul 13 14:54:23 2022 +0800

    Merge pull request #4578 from apache/develop-merge-5.0.0
    
    The code of 5.0.0-beta merge into develop branch

 .travis.yml                                        |    4 +-
 acl/pom.xml                                        |    2 +-
 .../org/apache/rocketmq/acl/common/AclUtils.java   |   39 +
 .../apache/rocketmq/acl/common/AclUtilsTest.java   |   21 +
 acl/src/test/resources/conf/plain_acl.yml          |    5 -
 broker/pom.xml                                     |   10 +-
 .../apache/rocketmq/broker/BrokerController.java   | 1761 ++++++++++++++-----
 .../rocketmq/broker/BrokerPathConfigHelper.java    |   12 +
 .../rocketmq/broker/BrokerPreOnlineService.java    |  277 +++
 .../org/apache/rocketmq/broker/BrokerStartup.java  |   58 +-
 .../org/apache/rocketmq/broker/ShutdownHook.java   |   15 +-
 .../broker/client/ClientHousekeepingService.java   |   12 +-
 .../rocketmq/broker/client/ConsumerGroupInfo.java  |   25 +-
 .../broker/client/ConsumerIdsChangeListener.java   |    2 +
 .../rocketmq/broker/client/ConsumerManager.java    |   42 +-
 .../client/DefaultConsumerIdsChangeListener.java   |   68 +-
 .../rocketmq/broker/client/ProducerManager.java    |   23 +-
 .../rocketmq/broker/client/net/Broker2Client.java  |    8 +-
 .../client/rebalance/RebalanceLockManager.java     |   99 +-
 .../broker/dledger/DLedgerRoleChangeHandler.java   |   90 +-
 .../rocketmq/broker/failover/EscapeBridge.java     |  268 +++
 .../broker/filtersrv/FilterServerManager.java      |    6 +-
 .../rocketmq/broker/latency/BrokerFastFailure.java |   44 +-
 .../broker/loadbalance/AssignmentManager.java      |  140 ++
 .../loadbalance/MessageRequestModeManager.java     |   95 +
 .../longpolling/LmqPullRequestHoldService.java     |    3 +
 .../broker/longpolling/ManyPullRequest.java        |    4 +
 .../broker/longpolling/NotificationRequest.java    |   57 +
 .../longpolling/NotifyMessageArrivingListener.java |   12 +-
 .../rocketmq/broker/longpolling/PopRequest.java    |   89 +
 .../broker/longpolling/PullRequestHoldService.java |   36 +-
 .../broker/mqtrace/AbortProcessException.java      |   69 +
 .../broker/mqtrace/ConsumeMessageContext.java      |   77 +-
 .../broker/mqtrace/SendMessageContext.java         |  102 +-
 .../broker/offset/ConsumerOffsetManager.java       |   85 +-
 .../broker/offset/ConsumerOrderInfoManager.java    |  426 +++++
 .../apache/rocketmq/broker/out/BrokerOuterAPI.java |  750 +++++++-
 .../broker/pagecache/OneMessageTransfer.java       |    1 +
 .../broker/plugin/AbstractPluginMessageStore.java  |  296 +++-
 .../broker/plugin/BrokerAttachedPlugin.java        |   74 +
 .../broker/plugin/MessageStoreFactory.java         |   15 +-
 .../broker/plugin/MessageStorePluginContext.java   |   16 +-
 .../broker/plugin/PullMessageResultHandler.java    |   53 +
 .../processor/AbstractSendMessageProcessor.java    |  457 ++++-
 .../broker/processor/AckMessageProcessor.java      |  214 +++
 .../broker/processor/AdminBrokerProcessor.java     |  992 +++++++++--
 .../processor/ChangeInvisibleTimeProcessor.java    |  206 +++
 .../broker/processor/ClientManageProcessor.java    |   52 +-
 .../broker/processor/ConsumerManageProcessor.java  |  188 +-
 .../processor/DefaultPullMessageResultHandler.java |  244 +++
 .../broker/processor/EndTransactionProcessor.java  |   10 +-
 .../broker/processor/ForwardRequestProcessor.java  |    4 +-
 .../broker/processor/NotificationProcessor.java    |  318 ++++
 .../broker/processor/PeekMessageProcessor.java     |  271 +++
 .../broker/processor/PollingInfoProcessor.java     |  119 ++
 .../broker/processor/PopBufferMergeService.java    |  776 +++++++++
 .../broker/processor/PopMessageProcessor.java      |  983 +++++++++++
 .../broker/processor/PopReviveService.java         |  488 ++++++
 .../broker/processor/PullMessageProcessor.java     |  574 +++---
 .../broker/processor/QueryAssignmentProcessor.java |  324 ++++
 .../broker/processor/QueryMessageProcessor.java    |   15 +-
 .../broker/processor/ReplyMessageProcessor.java    |   13 +-
 .../broker/processor/SendMessageCallback.java      |   22 +-
 .../broker/processor/SendMessageProcessor.java     |  603 +++----
 .../schedule/DelayOffsetSerializeWrapper.java      |   13 +-
 .../broker}/schedule/ScheduleMessageService.java   |  183 +-
 .../rocketmq/broker/slave/SlaveSynchronize.java    |   73 +-
 .../subscription/SubscriptionGroupManager.java     |  112 +-
 .../rocketmq/broker/topic/TopicConfigManager.java  |  287 ++-
 .../topic/TopicQueueMappingCleanService.java       |  337 ++++
 .../broker/topic/TopicQueueMappingManager.java     |  259 +++
 .../AbstractTransactionalMessageCheckListener.java |   45 +-
 .../broker/transaction/OperationResult.java        |    8 +-
 .../TransactionalMessageCheckService.java          |    3 +
 .../transaction/TransactionalMessageService.java   |    2 +-
 .../transaction/jdbc/JDBCTransactionStore.java     |  242 ---
 .../jdbc/JDBCTransactionStoreConfig.java           |   57 -
 .../DefaultTransactionalMessageCheckListener.java  |    2 +-
 .../queue/TransactionalMessageBridge.java          |    2 +-
 .../queue/TransactionalMessageServiceImpl.java     |    2 +-
 .../org/apache/rocketmq/broker/util/HookUtils.java |  164 ++
 .../OperationResult.java => util/MsgUtil.java}     |   35 +-
 .../rocketmq/broker/BrokerControllerTest.java      |    3 +-
 .../apache/rocketmq/broker/BrokerOuterAPITest.java |   61 +-
 .../apache/rocketmq/broker/BrokerStartupTest.java  |   20 +-
 .../broker/filter/MessageStoreWithFilterTest.java  |   56 +-
 .../broker/offset/ConsumerOffsetManagerTest.java   |   55 +
 .../broker/pagecache/OneMessageTransferTest.java   |    8 +-
 ...essorTest.java => AckMessageProcessorTest.java} |   97 +-
 .../broker/processor/AdminBrokerProcessorTest.java |  107 +-
 ....java => ChangeInvisibleTimeProcessorTest.java} |   96 +-
 .../processor/ClientManageProcessorTest.java       |    1 -
 .../processor/ConsumerManageProcessorTest.java     |   91 +
 .../processor/EndTransactionProcessorTest.java     |    2 +-
 .../processor/PopBufferMergeServiceTest.java       |  120 ++
 ...essorTest.java => PopMessageProcessorTest.java} |  163 +-
 .../broker/processor/PullMessageProcessorTest.java |   28 +-
 .../processor/QueryAssignmentProcessorTest.java    |  227 +++
 .../processor/ReplyMessageProcessorTest.java       |    2 +-
 .../broker/processor/SendMessageProcessorTest.java |  217 ++-
 .../schedule/ScheduleMessageServiceTest.java       |  145 +-
 .../broker/substription/ForbiddenTest.java         |   64 +
 .../broker/topic/TopicConfigManagerTest.java       |  324 ++++
 .../broker/topic/TopicQueueMappingManagerTest.java |  112 ++
 ...faultTransactionalMessageCheckListenerTest.java |    2 +-
 .../queue/TransactionalMessageBridgeTest.java      |    2 +-
 .../queue/TransactionalMessageServiceImplTest.java |    2 +-
 .../rocketmq/broker/util/ServiceProviderTest.java  |    7 +-
 .../util/TransactionalMessageServiceImpl.java      |    2 +-
 client/pom.xml                                     |   11 +-
 .../java/org/apache/rocketmq/client/MQAdmin.java   |   14 +-
 .../rocketmq/client/consumer/AckCallback.java      |   10 +-
 .../apache/rocketmq/client/consumer/AckResult.java |   40 +-
 .../apache/rocketmq/client/consumer/AckStatus.java |   17 +-
 .../client/consumer/DefaultMQPullConsumer.java     |   14 +-
 .../client/consumer/DefaultMQPushConsumer.java     |   70 +-
 .../rocketmq/client/consumer/MQPullConsumer.java   |    7 +
 .../rocketmq/client/consumer/PopCallback.java      |   13 +-
 .../consumer/{PullResult.java => PopResult.java}   |   59 +-
 .../apache/rocketmq/client/consumer/PopStatus.java |   29 +-
 .../rocketmq/client/consumer/PullResult.java       |    1 +
 .../AbstractAllocateMessageQueueStrategy.java      |    2 +-
 .../rebalance/AllocateMessageQueueAveragely.java   |   10 +
 .../AllocateMessageQueueAveragelyByCircle.java     |   10 +
 .../consumer/store/RemoteBrokerOffsetStore.java    |   31 +-
 .../client/exception/MQBrokerException.java        |    6 +
 .../client/exception/MQRedirectException.java      |   26 +-
 .../client/exception/OffsetNotFoundException.java  |   23 +-
 .../rocketmq/client/impl/BaseInvokeCallback.java   |   26 +-
 .../client/impl/ClientRemotingProcessor.java       |    3 +-
 .../apache/rocketmq/client/impl/MQAdminImpl.java   |   64 +-
 .../rocketmq/client/impl/MQClientAPIImpl.java      |  632 ++++++-
 .../ConsumeMessageConcurrentlyService.java         |   11 +-
 .../consumer/ConsumeMessageOrderlyService.java     |   14 +-
 ...a => ConsumeMessagePopConcurrentlyService.java} |  260 +--
 .../consumer/ConsumeMessagePopOrderlyService.java  |  408 +++++
 .../impl/consumer/ConsumeMessageService.java       |    5 +
 .../impl/consumer/DefaultLitePullConsumerImpl.java |   45 +-
 .../impl/consumer/DefaultMQPullConsumerImpl.java   |   43 +-
 .../impl/consumer/DefaultMQPushConsumerImpl.java   |  412 ++++-
 .../client/impl/consumer/MessageQueueLock.java     |   29 +-
 .../client/impl/consumer/MessageRequest.java       |   10 +-
 .../client/impl/consumer/PopProcessQueue.java      |   84 +
 .../consumer/{PullRequest.java => PopRequest.java} |   71 +-
 .../client/impl/consumer/PullAPIWrapper.java       |  141 +-
 .../client/impl/consumer/PullMessageService.java   |   47 +-
 .../rocketmq/client/impl/consumer/PullRequest.java |    8 +-
 .../client/impl/consumer/PullResultExt.java        |   12 +
 .../client/impl/consumer/RebalanceImpl.java        |  479 ++++-
 .../impl/consumer/RebalanceLitePullImpl.java       |   25 +-
 .../client/impl/consumer/RebalancePullImpl.java    |   26 +-
 .../client/impl/consumer/RebalancePushImpl.java    |   71 +-
 .../client/impl/factory/MQClientInstance.java      |  174 +-
 .../impl/producer/DefaultMQProducerImpl.java       |   20 +-
 .../rocketmq/client/latency/MQFaultStrategy.java   |    2 +-
 .../client/producer/DefaultMQProducer.java         |   16 +-
 .../rocketmq/client/producer/SendResult.java       |    9 +
 .../consumer/DefaultLitePullConsumerTest.java      |   32 +-
 .../client/consumer/DefaultMQPushConsumerTest.java |   83 +-
 .../store/RemoteBrokerOffsetStoreTest.java         |   10 +-
 .../rocketmq/client/impl/MQClientAPIImplTest.java  |  463 ++++-
 .../consumer/DefaultMQPushConsumerImplTest.java    |   63 +
 .../impl/consumer/RebalancePushImplTest.java       |   13 -
 .../client/impl/factory/MQClientInstanceTest.java  |    1 +
 .../client/producer/DefaultMQProducerTest.java     |    2 +-
 .../selector/SelectMessageQueueRetryTest.java      |    1 -
 .../powermock/extensions/configuration.properties  |   16 +
 common/pom.xml                                     |    6 +-
 ...uestHeader.java => AbstractBrokerRunnable.java} |   31 +-
 .../org/apache/rocketmq/common/BrokerConfig.java   |  621 ++++++-
 .../org/apache/rocketmq/common/BrokerIdentity.java |  149 ++
 .../org/apache/rocketmq/common/BrokerSyncInfo.java |   70 +
 .../org/apache/rocketmq/common/ConfigManager.java  |   11 +
 .../org/apache/rocketmq/common/Configuration.java  |   41 +
 .../org/apache/rocketmq/common/DataVersion.java    |   49 +-
 .../{ThreadFactoryImpl.java => KeyBuilder.java}    |   32 +-
 .../org/apache/rocketmq/common/LockCallback.java   |   12 +-
 .../java/org/apache/rocketmq/common/MQVersion.java |    2 +-
 .../java/org/apache/rocketmq/common/MixAll.java    |   25 +-
 .../apache/rocketmq/common/PopAckConstants.java    |   44 +
 .../org/apache/rocketmq/common/ServiceThread.java  |    8 +-
 .../apache/rocketmq/common/ThreadFactoryImpl.java  |   13 +
 .../apache/rocketmq/common/TopicAttributes.java    |   47 +
 .../org/apache/rocketmq/common/TopicConfig.java    |  122 +-
 .../org/apache/rocketmq/common/TopicQueueId.java   |   54 +
 .../MessageType.java => UnlockCallback.java}       |   10 +-
 .../java/org/apache/rocketmq/common/UtilAll.java   |  129 +-
 .../apache/rocketmq/common/admin/TopicOffset.java  |    9 +
 .../rocketmq/common/attribute/Attribute.java       |   36 +-
 .../rocketmq/common/attribute/AttributeParser.java |   79 +
 .../BooleanAttribute.java}                         |   28 +-
 .../MessageType.java => attribute/CQType.java}     |   10 +-
 .../EnumAttribute.java}                            |   30 +-
 .../LongRangeAttribute.java}                       |   33 +-
 .../TopicMessageType.java}                         |   29 +-
 .../ConsumeInitMode.java}                          |   11 +-
 .../rocketmq/common/constant/LoggerName.java       |    9 +-
 .../apache/rocketmq/common/constant/PermName.java  |   18 +-
 .../fastjson/GenericMapSuperclassDeserializer.java |   58 +
 .../rocketmq/common/future/FutureTaskExt.java      |   31 +-
 .../rocketmq/common/message/MessageConst.java      |   34 +-
 .../rocketmq/common/message/MessageDecoder.java    |  201 ++-
 .../apache/rocketmq/common/message/MessageExt.java |   55 +
 .../rocketmq/common/message/MessageExtBatch.java   |   15 +-
 .../common/message}/MessageExtBrokerInner.java     |    3 +-
 .../rocketmq/common/message/MessageQueue.java      |    6 +
 .../common/message/MessageQueueAssignment.java     |   83 +
 .../{MessageType.java => MessageRequestMode.java}  |   30 +-
 .../rocketmq/common/message/MessageType.java       |   28 +-
 .../rocketmq/common/message/MessageVersion.java    |   70 +
 .../common/namesrv/DefaultTopAddressing.java       |  165 ++
 .../NameServerUpdateCallback.java}                 |   10 +-
 .../rocketmq/common/namesrv/NamesrvConfig.java     |  134 +-
 .../rocketmq/common/namesrv/TopAddressing.java     |   88 +-
 .../rocketmq/common/protocol/ForbiddenType.java    |   38 +-
 .../rocketmq/common/protocol/RequestCode.java      |   42 +
 .../rocketmq/common/protocol/ResponseCode.java     |   18 +
 .../common/protocol/body/BrokerMemberGroup.java    |   90 +
 .../protocol/body/CheckClientRequestBody.java      |    9 +
 .../rocketmq/common/protocol/body/ClusterInfo.java |   28 +-
 .../body/ConsumerOffsetSerializeWrapper.java       |   10 +
 .../common/protocol/body/ConsumerRunningInfo.java  |   63 +-
 .../body/GetBrokerMemberGroupResponseBody.java     |   19 +-
 .../protocol/body/GetRemoteClientConfigBody.java   |   26 +-
 .../common/protocol/body/HARuntimeInfo.java        |  188 ++
 .../common/protocol/body/LockBatchRequestBody.java |    9 +
 ...ava => MessageRequestModeSerializeWrapper.java} |   20 +-
 ...ntRequestBody.java => PopProcessQueueInfo.java} |   45 +-
 ...stBody.java => QueryAssignmentRequestBody.java} |   39 +-
 .../protocol/body/QueryAssignmentResponseBody.java |   22 +-
 ...ody.java => QuerySubscriptionResponseBody.java} |   22 +-
 .../common/protocol/body/RegisterBrokerBody.java   |   32 +-
 .../SetMessageRequestModeRequestBody.java}         |   54 +-
 .../TopicConfigAndMappingSerializeWrapper.java     |   68 +
 ...java => TopicQueueMappingSerializeWrapper.java} |   35 +-
 .../protocol/body/UnlockBatchRequestBody.java      |    9 +
 ...estHeader.java => AckMessageRequestHeader.java} |   37 +-
 ...uestHeader.java => AddBrokerRequestHeader.java} |   21 +-
 ....java => ChangeInvisibleTimeRequestHeader.java} |   51 +-
 ...java => ChangeInvisibleTimeResponseHeader.java} |   39 +-
 .../ConsumeMessageDirectlyResultRequestHeader.java |   30 +
 .../protocol/header/CreateTopicRequestHeader.java  |   21 +
 .../DeleteSubscriptionGroupRequestHeader.java      |   10 +-
 ...eader.java => ExchangeHAInfoRequestHeader.java} |   44 +-
 ...ader.java => ExchangeHAInfoResponseHeader.java} |   44 +-
 .../common/protocol/header/ExtraInfoUtil.java      |  258 +++
 ...java => GetBrokerMemberGroupRequestHeader.java} |   31 +-
 .../GetEarliestMsgStoretimeRequestHeader.java      |    8 +-
 .../protocol/header/GetMaxOffsetRequestHeader.java |   26 +-
 .../protocol/header/GetMinOffsetRequestHeader.java |    8 +-
 ...> GetSubscriptionGroupConfigRequestHeader.java} |   24 +-
 ...eader.java => GetTopicConfigRequestHeader.java} |   19 +-
 .../header/GetTopicStatsInfoRequestHeader.java     |    4 +-
 ...r.java => InitConsumerOffsetRequestHeader.java} |   17 +-
 ...tHeader.java => NotificationRequestHeader.java} |   44 +-
 ...Header.java => NotificationResponseHeader.java} |   19 +-
 ...a => NotifyMinBrokerIdChangeRequestHeader.java} |   52 +-
 ...stHeader.java => PeekMessageRequestHeader.java} |   28 +-
 ...stHeader.java => PollingInfoRequestHeader.java} |   16 +-
 ...tHeader.java => PollingInfoResponseHeader.java} |   18 +-
 .../protocol/header/PopMessageRequestHeader.java   |  155 ++
 .../protocol/header/PopMessageResponseHeader.java  |  102 ++
 .../protocol/header/PullMessageRequestHeader.java  |   56 +-
 .../protocol/header/PullMessageResponseHeader.java |   66 +
 .../header/QueryConsumerOffsetRequestHeader.java   |   18 +-
 ... QuerySubscriptionByConsumerRequestHeader.java} |   24 +-
 ...ava => QueryTopicsByConsumerRequestHeader.java} |   16 +-
 ...tHeader.java => RemoveBrokerRequestHeader.java} |   39 +-
 ...ader.java => ResetMasterFlushOffsetHeader.java} |   13 +-
 .../protocol/header/SearchOffsetRequestHeader.java |    8 +-
 .../protocol/header/SendMessageRequestHeader.java  |    8 +-
 .../protocol/header/SendMessageResponseHeader.java |   15 +
 ...r.java => StatisticsMessagesRequestHeader.java} |   37 +-
 .../header/UpdateConsumerOffsetRequestHeader.java  |    8 +-
 ...java => UpdateGroupForbiddenRequestHeader.java} |   28 +-
 ...ader.java => BrokerHeartbeatRequestHeader.java} |   58 +-
 .../header/namesrv/GetRouteInfoRequestHeader.java  |    2 +
 .../namesrv/RegisterBrokerRequestHeader.java       |   22 +
 .../RegisterTopicRequestHeader.java}               |    5 +-
 .../rocketmq/common/protocol/route/BrokerData.java |   55 +-
 .../route/MessageQueueRouteState.java}             |   15 +-
 .../rocketmq/common/protocol/route/QueueData.java  |   13 +
 .../common/protocol/route/TopicRouteData.java      |   92 +-
 .../common/protocol/route/TopicRouteDatas.java     |   21 +-
 .../apache/rocketmq/common/rpc/ClientMetadata.java |  176 ++
 .../apache/rocketmq/common/rpc/RequestBuilder.java |   81 +
 .../org/apache/rocketmq/common/rpc/RpcClient.java  |   29 +-
 .../apache/rocketmq/common/rpc/RpcClientHook.java  |   12 +-
 .../apache/rocketmq/common/rpc/RpcClientImpl.java  |  340 ++++
 .../apache/rocketmq/common/rpc/RpcClientUtils.java |   58 +
 .../apache/rocketmq/common/rpc/RpcException.java   |   31 +-
 .../org/apache/rocketmq/common/rpc/RpcRequest.java |   33 +-
 .../RpcRequestHeader.java}                         |   54 +-
 .../apache/rocketmq/common/rpc/RpcResponse.java    |   70 +
 .../common/rpc/TopicQueueRequestHeader.java        |   10 +-
 .../rocketmq/common/rpc/TopicRequestHeader.java    |   19 +-
 .../common/statictopic/LogicQueueMappingItem.java  |  212 +++
 .../statictopic/TopicConfigAndQueueMapping.java    |   63 +
 .../statictopic/TopicQueueMappingContext.java      |   99 ++
 .../statictopic/TopicQueueMappingDetail.java       |  144 ++
 .../common/statictopic/TopicQueueMappingInfo.java  |  161 ++
 .../common/statictopic/TopicQueueMappingOne.java   |   85 +
 .../common/statictopic/TopicQueueMappingUtils.java |  694 ++++++++
 .../statictopic/TopicRemappingDetailWrapper.java   |  104 ++
 .../rocketmq/common/statistics/FutureHolder.java   |   53 +
 .../Interceptor.java}                              |   18 +-
 .../common/statistics/StatisticsBrief.java         |  184 ++
 .../statistics/StatisticsBriefInterceptor.java     |   76 +
 .../rocketmq/common/statistics/StatisticsItem.java |  175 ++
 .../StatisticsItemFormatter.java}                  |   32 +-
 .../common/statistics/StatisticsItemPrinter.java   |   50 +
 .../StatisticsItemScheduledIncrementPrinter.java   |  290 +++
 .../statistics/StatisticsItemScheduledPrinter.java |   97 ++
 .../StatisticsItemStateGetter.java}                |   10 +-
 .../StatisticsKindMeta.java}                       |   39 +-
 .../common/statistics/StatisticsManager.java       |  157 ++
 .../common/subscription/CustomizedRetryPolicy.java |   85 +
 .../subscription/ExponentialRetryPolicy.java       |   74 +
 .../common/subscription/GroupForbidden.java        |   86 +
 .../common/subscription/GroupRetryPolicy.java      |   78 +
 .../GroupRetryPolicyType.java}                     |   12 +-
 .../rocketmq/common/subscription/RetryPolicy.java  |   17 +-
 .../subscription/SubscriptionGroupConfig.java      |   95 +-
 .../rocketmq/common/sysflag/MessageSysFlag.java    |    5 +-
 .../rocketmq/common/sysflag/PullSysFlag.java       |    4 +
 .../rocketmq/common/topic/TopicValidator.java      |    2 +
 .../rocketmq/common/utils/DataConverter.java       |   35 +-
 .../apache/rocketmq/common/utils/MessageUtils.java |   49 +
 .../common/utils/PositiveAtomicCounter.java        |   32 +-
 .../rocketmq/common/utils/QueueTypeUtils.java      |   51 +
 .../rocketmq/common/utils}/ServiceProvider.java    |   27 +-
 .../apache/rocketmq/common/utils/ThreadUtils.java  |   17 +-
 .../apache/rocketmq/common/ConfigManagerTest.java  |    5 +-
 .../apache/rocketmq/common/DataVersionTest.java    |    7 +
 .../rocketmq/common/RegisterBrokerBodyTest.java    |    5 +-
 .../apache/rocketmq/common/TopicConfigTest.java    |   78 +
 .../org/apache/rocketmq/common/UtilAllTest.java    |   21 +-
 .../common/attribute/AttributeParserTest.java      |   70 +
 .../rocketmq/common/attribute/AttributeTest.java   |   70 +
 .../common/message/MessageClientIDSetterTest.java  |    2 -
 .../common/message/MessageDecoderTest.java         |   12 +-
 .../rocketmq/common/message/MessageTest.java       |    1 -
 .../rocketmq/common/protocol/body/KVTableTest.java |    1 -
 .../MessageRequestModeSerializeWrapperTest.java    |   58 +
 .../common/protocol/route/TopicRouteDataTest.java  |   11 +-
 .../common/statictopic/TopicQueueMappingTest.java  |   78 +
 .../statictopic/TopicQueueMappingUtilsTest.java    |  320 ++++
 .../subscription/CustomizedRetryPolicyTest.java    |   44 +
 .../subscription/ExponentialRetryPolicyTest.java   |   44 +
 .../common/subscription/GroupRetryPolicyTest.java  |   49 +
 {logging => container}/pom.xml                     |   23 +-
 .../apache/rocketmq/container/BrokerBootHook.java  |   36 +-
 .../apache/rocketmq/container/BrokerContainer.java |  478 +++++
 .../rocketmq/container/BrokerContainerConfig.java  |   75 +
 .../container/BrokerContainerProcessor.java        |  280 +++
 .../rocketmq/container/BrokerContainerStartup.java |  445 +++++
 .../ContainerClientHouseKeepingService.java        |  104 ++
 .../rocketmq/container/IBrokerContainer.java       |  142 ++
 .../rocketmq/container/InnerBrokerController.java  |  204 +++
 .../container/InnerSalveBrokerController.java      |   46 +
 .../logback/BrokerLogbackConfigurator.java         |  187 ++
 .../container/BrokerContainerStartupTest.java      |  140 ++
 .../rocketmq/container/BrokerContainerTest.java    |  371 ++++
 .../rocketmq/container/BrokerPreOnlineTest.java    |  102 ++
 distribution/bin/{mqshutdown => mqbrokercontainer} |   46 +-
 distribution/bin/mqshutdown                        |   14 +
 distribution/bin/runbroker.cmd                     |    1 +
 distribution/bin/runbroker.sh                      |    3 +-
 .../2container-2m-2s/broker-a-in-container1.conf   |   48 +-
 .../2container-2m-2s/broker-a-in-container2.conf   |   48 +-
 .../2container-2m-2s/broker-b-in-container1.conf   |   48 +-
 .../2container-2m-2s/broker-b-in-container2.conf   |   48 +-
 .../2container-2m-2s/broker-container1.conf        |   38 +-
 .../2container-2m-2s/broker-container2.conf        |   38 +-
 .../container/2container-2m-2s/nameserver.conf     |   30 +-
 distribution/conf/logback_broker.xml               |   29 +
 distribution/conf/logback_tools.xml                |    5 +
 distribution/pom.xml                               |    6 +-
 distribution/release.xml                           |    1 +
 docs/cn/BrokerContainer.md                         |  152 ++
 docs/cn/QuorumACK.md                               |   70 +
 docs/cn/README.md                                  |   12 +-
 docs/cn/SlaveActingMasterMode.md                   |  164 ++
 ..._Topic_Logic_Queue_\350\256\276\350\256\241.md" |  503 ++++++
 docs/cn/statictopic/The_Scope_Of_Static_Topic.md   |  116 ++
 docs/en/Feature.md                                 |    7 +-
 example/pom.xml                                    |    6 +-
 .../rocketmq/example/benchmark/Consumer.java       |    2 +
 .../rocketmq/example/simple/PopPushConsumer.java   |   62 +
 filter/pom.xml                                     |    2 +-
 logging/pom.xml                                    |    2 +-
 .../rocketmq/logging/InternalLoggerFactory.java    |   11 +
 .../rocketmq/logging/Slf4jLoggerFactory.java       |   87 +-
 .../apache/rocketmq/logging/inner/SysLogger.java   |    4 +-
 .../rocketmq/logging/Slf4jLoggerFactoryTest.java   |    2 +-
 .../rocketmq/logging/inner/LoggingBuilderTest.java |    8 +-
 namesrv/pom.xml                                    |   14 +-
 .../apache/rocketmq/namesrv/NamesrvController.java |  149 +-
 .../apache/rocketmq/namesrv/NamesrvStartup.java    |   11 +-
 .../namesrv/processor/ClientRequestProcessor.java  |  102 ++
 .../processor/ClusterTestRequestProcessor.java     |    2 +-
 .../namesrv/processor/DefaultRequestProcessor.java |  364 ++--
 .../namesrv/routeinfo/BatchUnRegisterService.java  |   85 +
 .../routeinfo/BrokerHousekeepingService.java       |    6 +-
 .../namesrv/routeinfo/RouteInfoManager.java        | 1027 ++++++++---
 ...rocessorTest.java => RequestProcessorTest.java} |  159 +-
 .../namesrv/routeinfo/GetRouteInfoBenchmark.java   |  148 ++
 .../namesrv/routeinfo/RegisterBrokerBenchmark.java |  177 ++
 .../routeinfo/RouteInfoManagerBrokerPermTest.java  |   24 +-
 .../RouteInfoManagerBrokerRegisterTest.java        |   61 +-
 .../RouteInfoManagerStaticRegisterTest.java        |   19 +-
 .../namesrv/routeinfo/RouteInfoManagerTest.java    |  223 +++
 .../routeinfo/RouteInfoManagerTestBase.java        |    1 +
 .../routeinfo/RouteInfoManager_NewTest.java        |  783 +++++++++
 openmessaging/pom.xml                              |    2 +-
 pom.xml                                            |   22 +-
 remoting/pom.xml                                   |    2 +-
 .../java/org/apache/rocketmq/remoting/RPCHook.java |    2 +-
 .../apache/rocketmq/remoting/RemotingClient.java   |    6 +-
 .../apache/rocketmq/remoting/RemotingServer.java   |    6 +
 .../apache/rocketmq/remoting/RemotingService.java  |    5 +
 .../rocketmq/remoting/common/RemotingHelper.java   |   39 +
 .../rocketmq/remoting/common/RemotingUtil.java     |   18 +-
 .../rocketmq/remoting/netty/NettyClientConfig.java |   15 +
 .../remoting/netty/NettyRemotingAbstract.java      |  103 +-
 .../remoting/netty/NettyRemotingClient.java        |  361 +++-
 .../remoting/netty/NettyRemotingServer.java        |  158 +-
 .../remoting/netty/NettyRequestProcessor.java      |    1 -
 .../rocketmq/remoting/netty/ResponseFuture.java    |   42 +-
 .../remoting/protocol/FastCodesHeader.java         |    2 +-
 .../remoting/protocol/RemotingCommand.java         |   54 +-
 .../remoting/protocol/RemotingSerializable.java    |    7 +-
 .../rocketmq/remoting/RemotingServerTest.java      |    5 +-
 .../rocketmq/remoting/SubRemotingServerTest.java   |  109 ++
 .../remoting/netty/NettyRemotingAbstractTest.java  |    6 +-
 .../remoting/protocol/RemotingCommandTest.java     |   99 +-
 srvutil/pom.xml                                    |   10 +-
 .../rocketmq/srvutil/ConcurrentHashMapUtil.java    |   50 +
 .../apache/rocketmq/srvutil/FileWatchService.java  |    4 +-
 .../rocketmq/util/cache/CacheEvictHandler.java     |   10 +-
 .../apache/rocketmq/util/cache/CacheObject.java    |   28 +-
 .../rocketmq/util/cache/ExpiredLocalCache.java     |   84 +
 .../org/apache/rocketmq/util/cache/LocalCache.java |   58 +
 .../apache/rocketmq/util/cache/LockManager.java    |   54 +
 store/pom.xml                                      |    2 +-
 .../rocketmq/store/AllocateMappedFileService.java  |   11 +-
 .../rocketmq/store/AppendMessageCallback.java      |    2 +-
 .../apache/rocketmq/store/AppendMessageResult.java |   12 +
 .../java/org/apache/rocketmq/store/CommitLog.java  | 1138 ++++++++----
 .../org/apache/rocketmq/store/ConsumeQueue.java    |  313 +++-
 .../org/apache/rocketmq/store/ConsumeQueueExt.java |    5 +
 .../apache/rocketmq/store/DefaultMessageStore.java | 1842 ++++++++++++--------
 .../org/apache/rocketmq/store/DispatchRequest.java |   45 +
 .../apache/rocketmq/store/FileQueueSnapshot.java   |   90 +
 .../apache/rocketmq/store/GetMessageResult.java    |   37 +-
 .../org/apache/rocketmq/store/MappedFileQueue.java |  189 +-
 .../org/apache/rocketmq/store/MessageStore.java    |  422 ++++-
 .../org/apache/rocketmq/store/MultiDispatch.java   |  184 --
 .../rocketmq/store/MultiPathMappedFileQueue.java   |    6 +-
 .../apache/rocketmq/store/PutMessageContext.java   |   48 +
 .../apache/rocketmq/store/PutMessageResult.java    |   26 +-
 .../apache/rocketmq/store/PutMessageStatus.java    |    6 +-
 .../apache/rocketmq/store/QueryMessageResult.java  |    4 +
 .../rocketmq/store/SelectMappedBufferResult.java   |   11 +-
 .../rocketmq/store/SelectMappedFileResult.java     |   34 +-
 .../org/apache/rocketmq/store/StoreCheckpoint.java |   21 +-
 .../apache/rocketmq/store/StoreStatsService.java   |   11 +
 .../java/org/apache/rocketmq/store/StoreUtil.java  |   44 +
 .../java/org/apache/rocketmq/store/Swappable.java  |   14 +-
 .../org/apache/rocketmq/store/TopicQueueLock.java  |   46 +
 .../rocketmq/store/config/MessageStoreConfig.java  |  484 ++++-
 .../store/config/StorePathConfigHelper.java        |    3 +
 .../rocketmq/store/dledger/DLedgerCommitLog.java   |  275 ++-
 .../apache/rocketmq/store/ha/DefaultHAClient.java  |  392 +++++
 ...{HAConnection.java => DefaultHAConnection.java} |  187 +-
 .../apache/rocketmq/store/ha/DefaultHAService.java |  339 ++++
 .../org/apache/rocketmq/store/ha/FlowMonitor.java  |   76 +
 .../rocketmq/store/ha/GroupTransferService.java    |  140 ++
 .../org/apache/rocketmq/store/ha/HAClient.java     |  104 ++
 .../org/apache/rocketmq/store/ha/HAConnection.java |  428 +----
 .../rocketmq/store/ha/HAConnectionState.java       |   31 +-
 .../ha/HAConnectionStateNotificationRequest.java   |   49 +
 .../ha/HAConnectionStateNotificationService.java   |  150 ++
 .../org/apache/rocketmq/store/ha/HAService.java    |  665 +------
 .../apache/rocketmq/store/ha/WaitNotifyObject.java |   67 +-
 .../apache/rocketmq/store/hook/PutMessageHook.java |   25 +-
 .../rocketmq/store/hook/SendMessageBackHook.java   |   25 +-
 .../org/apache/rocketmq/store/index/IndexFile.java |   21 +-
 .../apache/rocketmq/store/index/IndexService.java  |   75 +-
 .../rocketmq/store/logfile/AbstractMappedFile.java |    9 +-
 .../DefaultMappedFile.java}                        |  302 ++--
 .../apache/rocketmq/store/logfile/MappedFile.java  |  340 ++++
 .../java/org/apache/rocketmq/store/pop/AckMsg.java |   97 ++
 .../apache/rocketmq/store/pop/PopCheckPoint.java   |  184 ++
 .../rocketmq/store/queue/BatchConsumeQueue.java    |  980 +++++++++++
 .../rocketmq/store/queue/BatchOffsetIndex.java     |   57 +
 .../store/queue/ConsumeQueueInterface.java         |  142 ++
 .../rocketmq/store/queue/ConsumeQueueStore.java    |  483 +++++
 .../org/apache/rocketmq/store/queue/CqUnit.java    |  115 ++
 .../rocketmq/store/queue/FileQueueLifeCycle.java   |   84 +
 .../rocketmq/store/queue/QueueOffsetAssigner.java  |   92 +
 .../rocketmq/store/queue/ReferredIterator.java     |   14 +-
 .../apache/rocketmq/store/stats/BrokerStats.java   |    6 +-
 .../rocketmq/store/stats/BrokerStatsManager.java   |  435 ++++-
 .../apache/rocketmq/store/util/PerfCounter.java    |  370 ++++
 .../apache/rocketmq/store/AppendCallbackTest.java  |    4 +-
 .../apache/rocketmq/store/BatchPutMessageTest.java |   61 +-
 .../apache/rocketmq/store/ConsumeQueueTest.java    |   80 +-
 .../store/DefaultMessageStoreCleanFilesTest.java   |   92 +-
 .../store/DefaultMessageStoreShutDownTest.java     |    2 +-
 .../rocketmq/store/DefaultMessageStoreTest.java    |  285 ++-
 .../java/org/apache/rocketmq/store/HATest.java     |  130 +-
 .../apache/rocketmq/store/MappedFileQueueTest.java |  156 +-
 .../org/apache/rocketmq/store/MappedFileTest.java  |    4 +-
 .../apache/rocketmq/store/MultiDispatchTest.java   |   63 +-
 .../store/MultiPathMappedFileQueueTest.java        |   32 +-
 .../rocketmq/store/ScheduleMessageServiceTest.java |  194 ---
 .../org/apache/rocketmq/store/StoreTestBase.java   |   13 +-
 .../store/dledger/DLedgerCommitlogTest.java        |   20 +-
 .../store/dledger/MessageStoreTestBase.java        |    5 +-
 .../rocketmq/store/dledger/MixCommitlogTest.java   |    2 -
 .../apache/rocketmq/store/ha/FlowMonitorTest.java  |   61 +
 .../org/apache/rocketmq/store/ha/HAClientTest.java |   72 +
 .../org/apache/rocketmq/store/ha/HAServerTest.java |  295 ++++
 .../rocketmq/store/ha/WaitNotifyObjectTest.java    |    2 -
 .../store/queue/BatchConsumeMessageTest.java       |  454 +++++
 .../store/queue/BatchConsumeQueueTest.java         |  312 ++++
 .../store/queue/ConsumeQueueStoreTest.java         |  100 ++
 .../rocketmq/store/queue/ConsumeQueueTest.java     |  102 ++
 .../apache/rocketmq/store/queue/QueueTestBase.java |  114 ++
 test/pom.xml                                       |    6 +-
 .../test/client/rmq/RMQNormalConsumer.java         |    5 +
 .../test/client/rmq/RMQNormalProducer.java         |    7 +
 .../rocketmq/test/client/rmq/RMQPopConsumer.java   |   33 +
 .../test/clientinterface/AbstractMQProducer.java   |    1 +
 .../rocketmq/test/factory/ConsumerFactory.java     |   10 +
 .../rocketmq/test/listener/AbstractListener.java   |    2 +-
 .../org/apache/rocketmq/test/util/MQAdmin.java     |  166 --
 .../rocketmq/test/util/MQAdminTestUtils.java       |  310 ++++
 .../org/apache/rocketmq/test/base/BaseConf.java    |  168 +-
 .../rocketmq/test/base/IntegrationTestBase.java    |   40 +-
 .../base/dledger/DLedgerProduceAndConsumeIT.java   |    3 +-
 .../consumer/balance/NormalMsgStaticBalanceIT.java |   18 +-
 .../normal/BroadCastNormalMsgRecvFailIT.java       |    2 +
 .../test/client/consumer/pop/PopSubCheckIT.java    |   97 ++
 .../test/client/producer/batch/BatchSendIT.java    |  161 ++
 .../client/producer/oneway/OneWaySendWithMQIT.java |   10 -
 .../client/producer/order/OrderMsgRebalanceIT.java |    2 +-
 .../test/container/AddAndRemoveBrokerIT.java       |   83 +
 .../rocketmq/test/container/BrokerFailoverIT.java  |   86 +
 .../test/container/BrokerMemberGroupIT.java        |   71 +
 .../container/ContainerIntegrationTestBase.java    |  666 +++++++
 .../test/container/GetMaxOffsetFromSlaveIT.java    |  100 ++
 .../test/container/GetMetadataReverseIT.java       |  231 +++
 .../test/container/PullMultipleReplicasIT.java     |  201 +++
 .../test/container/PushMultipleReplicasIT.java     |  114 ++
 .../test/container/RebalanceLockOnSlaveIT.java     |  209 +++
 .../container/ScheduleSlaveActingMasterIT.java     |  220 +++
 .../test/container/ScheduledMessageIT.java         |  153 ++
 .../test/container/SendMultipleReplicasIT.java     |  159 ++
 .../rocketmq/test/container/SlaveBrokerIT.java     |  117 ++
 .../test/container/SyncConsumerOffsetIT.java       |  148 ++
 .../rocketmq/test/delay/NormalMsgDelayIT.java      |    1 -
 .../rocketmq/test/offset/OffsetNotFoundIT.java     |  132 ++
 .../test/smoke/NormalMessageSendAndRecvIT.java     |   39 +-
 .../rocketmq/test/statictopic/StaticTopicIT.java   |  523 ++++++
 tools/pom.xml                                      |    6 +-
 .../rocketmq/tools/admin/DefaultMQAdminExt.java    |  208 ++-
 .../tools/admin/DefaultMQAdminExtImpl.java         | 1158 ++++++++----
 .../apache/rocketmq/tools/admin/MQAdminExt.java    |  128 +-
 .../apache/rocketmq/tools/admin/MQAdminUtils.java  |  343 ++++
 .../tools/admin/api/BrokerOperatorResult.java      |   37 +-
 .../tools/admin/common/AdminToolHandler.java       |   10 +-
 .../tools/admin/common/AdminToolResult.java        |   76 +
 .../common/AdminToolsResultCodeEnum.java}          |   31 +-
 .../apache/rocketmq/tools/command/CommandUtil.java |   17 +-
 .../rocketmq/tools/command/MQAdminStartup.java     |   38 +-
 .../tools/command/SubCommandException.java         |    4 +
 .../command/broker/GetBrokerConfigCommand.java     |   29 +-
 .../broker/ResetMasterFlushOffsetSubCommand.java   |   71 +
 .../broker/UpdateBrokerConfigSubCommand.java       |   16 +-
 .../command/cluster/CLusterSendMsgRTCommand.java   |    4 +-
 .../command/cluster/ClusterListSubCommand.java     |  108 +-
 .../consumer/ConsumerProgressSubCommand.java       |   17 +-
 .../consumer/DeleteSubscriptionGroupCommand.java   |   19 +-
 .../consumer/GetConsumerConfigSubCommand.java      |    2 +-
 .../SetConsumeModeSubCommand.java}                 |   71 +-
 .../command/consumer/UpdateSubGroupSubCommand.java |   26 +
 .../command/container/AddBrokerSubCommand.java     |   66 +
 .../command/container/RemoveBrokerSubCommand.java  |   79 +
 .../tools/command/ha/HAStatusSubCommand.java       |  151 ++
 .../command/offset/ResetOffsetByTimeCommand.java   |   34 +
 .../tools/command/topic/DeleteTopicSubCommand.java |    2 +-
 .../topic/RemappingStaticTopicSubCommand.java      |  207 +++
 .../command/topic/UpdateStaticTopicSubCommand.java |  208 +++
 .../tools/command/topic/UpdateTopicSubCommand.java |   14 +
 .../tools/admin/DefaultMQAdminExtTest.java         |   74 +-
 .../rocketmq/tools/command/CommandUtilTest.java    |    2 +-
 .../consumer/ConsumerProgressSubCommandTest.java   |    2 +
 .../message/QueryMsgByUniqueKeySubCommandTest.java |   18 +-
 600 files changed, 52593 insertions(+), 9243 deletions(-)

diff --cc broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java
index 503bf0bfa,9bfcc0f21..656e87245
--- a/broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java
@@@ -86,9 -141,9 +141,9 @@@ public class BrokerOuterAPI 
      public String fetchNameServerAddr() {
          try {
              String addrs = this.topAddressing.fetchNSAddr();
 -            if (addrs != null) {
 +            if (!UtilAll.isBlank(addrs)) {
                  if (!addrs.equals(this.nameSrvAddr)) {
-                     log.info("name server address changed, old: {} new: {}", this.nameSrvAddr, addrs);
+                     LOGGER.info("name server address changed, old: {} new: {}", this.nameSrvAddr, addrs);
                      this.updateNameServerAddressList(addrs);
                      this.nameSrvAddr = addrs;
                      return nameSrvAddr;
diff --cc pom.xml
index f67ae7a00,8eef3bccc..7f14a1d86
--- a/pom.xml
+++ b/pom.xml
@@@ -119,9 -120,10 +120,10 @@@
          <lz4-java.version>1.8.0</lz4-java.version>
          <opentracing.version>0.33.0</opentracing.version>
          <jaeger.version>1.6.0</jaeger.version>
 -        <dleger.version>0.2.6</dleger.version>
 +        <dleger.version>0.2.7</dleger.version>
          <annotations-api.version>6.0.53</annotations-api.version>
          <extra-enforcer-rules.version>1.0-beta-4</extra-enforcer-rules.version>
+         <concurrentlinkedhashmap-lru.version>1.4.2</concurrentlinkedhashmap-lru.version>
  
          <!-- Test dependencies -->
          <junit.version>4.13.2</junit.version>