This is an automated email from the ASF dual-hosted git repository.
dinglei pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 838854ffc Remove useless GetRouteInfoRequestHeader.split constant to
ensure compatibility (#4718)
838854ffc is described below
commit 838854ffcd7a13c97625730cc9d37cda0d22efaa
Author: rongtong <[email protected]>
AuthorDate: Thu Aug 4 09:59:50 2022 +0800
Remove useless GetRouteInfoRequestHeader.split constant to ensure
compatibility (#4718)
---
.../header/namesrv/GetRouteInfoRequestHeader.java | 1 -
.../common/protocol/route/TopicRouteDatas.java | 36 -------------
.../namesrv/processor/ClientRequestProcessor.java | 62 +++++++++-------------
.../namesrv/processor/DefaultRequestProcessor.java | 1 +
4 files changed, 25 insertions(+), 75 deletions(-)
diff --git
a/common/src/main/java/org/apache/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java
b/common/src/main/java/org/apache/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java
index 068d5d317..8cdd29299 100644
---
a/common/src/main/java/org/apache/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java
+++
b/common/src/main/java/org/apache/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java
@@ -26,7 +26,6 @@ import org.apache.rocketmq.remoting.annotation.CFNullable;
import org.apache.rocketmq.remoting.exception.RemotingCommandException;
public class GetRouteInfoRequestHeader implements CommandCustomHeader {
- public static char split = 1;
@CFNotNull
private String topic;
diff --git
a/common/src/main/java/org/apache/rocketmq/common/protocol/route/TopicRouteDatas.java
b/common/src/main/java/org/apache/rocketmq/common/protocol/route/TopicRouteDatas.java
deleted file mode 100644
index 42a66b67d..000000000
---
a/common/src/main/java/org/apache/rocketmq/common/protocol/route/TopicRouteDatas.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.common.protocol.route;
-
-import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class TopicRouteDatas extends RemotingSerializable {
-
- private Map<String, TopicRouteData> topics = new HashMap<String,
TopicRouteData>();
-
- public Map<String, TopicRouteData> getTopics() {
- return topics;
- }
-
- public void setTopics(Map<String, TopicRouteData> topics) {
- this.topics = topics;
- }
-}
diff --git
a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java
b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java
index 85b36eb4b..007d49a75 100644
---
a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java
+++
b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/ClientRequestProcessor.java
@@ -17,13 +17,14 @@
package org.apache.rocketmq.namesrv.processor;
+import com.alibaba.fastjson.serializer.SerializerFeature;
import io.netty.channel.ChannelHandlerContext;
+import org.apache.rocketmq.common.MQVersion;
import org.apache.rocketmq.common.help.FAQUrl;
import org.apache.rocketmq.common.namesrv.NamesrvUtil;
import org.apache.rocketmq.common.protocol.ResponseCode;
import
org.apache.rocketmq.common.protocol.header.namesrv.GetRouteInfoRequestHeader;
import org.apache.rocketmq.common.protocol.route.TopicRouteData;
-import org.apache.rocketmq.common.protocol.route.TopicRouteDatas;
import org.apache.rocketmq.namesrv.NamesrvController;
import org.apache.rocketmq.remoting.exception.RemotingCommandException;
import org.apache.rocketmq.remoting.netty.NettyRequestProcessor;
@@ -48,50 +49,35 @@ public class ClientRequestProcessor implements
NettyRequestProcessor {
final GetRouteInfoRequestHeader requestHeader =
(GetRouteInfoRequestHeader)
request.decodeCommandCustomHeader(GetRouteInfoRequestHeader.class);
- if (requestHeader.getTopic().indexOf(GetRouteInfoRequestHeader.split)
< 0) {
- TopicRouteData topicRouteData =
this.namesrvController.getRouteInfoManager().pickupTopicRouteData(requestHeader.getTopic());
-
- if (topicRouteData != null) {
- if
(this.namesrvController.getNamesrvConfig().isOrderMessageEnable()) {
- String orderTopicConf =
-
this.namesrvController.getKvConfigManager().getKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG,
- requestHeader.getTopic());
- topicRouteData.setOrderTopicConf(orderTopicConf);
- }
-
- byte[] content = topicRouteData.encode();
- response.setBody(content);
- response.setCode(ResponseCode.SUCCESS);
- response.setRemark(null);
- return response;
- }
-
- response.setCode(ResponseCode.TOPIC_NOT_EXIST);
- response.setRemark("No topic route info in name server for the
topic: " + requestHeader.getTopic()
- + FAQUrl.suggestTodo(FAQUrl.APPLY_TOPIC_URL));
- return response;
- }
-
- String[] topics =
requestHeader.getTopic().split(String.valueOf(GetRouteInfoRequestHeader.split));
- TopicRouteDatas topicRouteDatas = new TopicRouteDatas();
-
- for (String topic : topics) {
- TopicRouteData topicRouteData =
this.namesrvController.getRouteInfoManager().pickupTopicRouteData(topic);
- if (topicRouteData == null) {
- continue;
- }
+ TopicRouteData topicRouteData =
this.namesrvController.getRouteInfoManager().pickupTopicRouteData(requestHeader.getTopic());
+ if (topicRouteData != null) {
if
(this.namesrvController.getNamesrvConfig().isOrderMessageEnable()) {
String orderTopicConf =
-
this.namesrvController.getKvConfigManager().getKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG,
topic);
+
this.namesrvController.getKvConfigManager().getKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG,
+ requestHeader.getTopic());
topicRouteData.setOrderTopicConf(orderTopicConf);
}
- topicRouteDatas.getTopics().put(topic, topicRouteData);
+ byte[] content;
+ Boolean standardJsonOnly =
requestHeader.getAcceptStandardJsonOnly();
+ if (request.getVersion() >= MQVersion.Version.V4_9_4.ordinal() ||
(null != standardJsonOnly && standardJsonOnly)) {
+ content =
topicRouteData.encode(SerializerFeature.BrowserCompatible,
+ SerializerFeature.QuoteFieldNames,
SerializerFeature.SkipTransientField,
+ SerializerFeature.MapSortField);
+ } else {
+ content = topicRouteData.encode();
+ }
+
+ response.setBody(content);
+ response.setCode(ResponseCode.SUCCESS);
+ response.setRemark(null);
+ return response;
}
- response.setBody(topicRouteDatas.encode());
- response.setCode(ResponseCode.SUCCESS);
- response.setRemark(null);
+
+ response.setCode(ResponseCode.TOPIC_NOT_EXIST);
+ response.setRemark("No topic route info in name server for the topic:
" + requestHeader.getTopic()
+ + FAQUrl.suggestTodo(FAQUrl.APPLY_TOPIC_URL));
return response;
}
diff --git
a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java
b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java
index 3f50e4245..278499227 100644
---
a/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java
+++
b/namesrv/src/main/java/org/apache/rocketmq/namesrv/processor/DefaultRequestProcessor.java
@@ -365,6 +365,7 @@ public class DefaultRequestProcessor implements
NettyRequestProcessor {
final BrokerHeartbeatRequestHeader requestHeader =
(BrokerHeartbeatRequestHeader)
request.decodeCommandCustomHeader(BrokerHeartbeatRequestHeader.class);
+
this.namesrvController.getRouteInfoManager().updateBrokerInfoUpdateTimestamp(requestHeader.getClusterName(),
requestHeader.getBrokerAddr());
response.setCode(ResponseCode.SUCCESS);