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

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

commit 274a531321bb10afb2f0bfb0b8d837ced2d8e7af
Author: zhouxiang <[email protected]>
AuthorDate: Fri Nov 18 15:46:17 2022 +0800

    [ISSUE #5406] Fix brokerName for SEND_MESSAGE_V2
---
 .../remoting/activity/AbstractRemotingActivity.java   | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git 
a/proxy/src/main/java/org/apache/rocketmq/proxy/remoting/activity/AbstractRemotingActivity.java
 
b/proxy/src/main/java/org/apache/rocketmq/proxy/remoting/activity/AbstractRemotingActivity.java
index 54ef7bfa7..650c38614 100644
--- 
a/proxy/src/main/java/org/apache/rocketmq/proxy/remoting/activity/AbstractRemotingActivity.java
+++ 
b/proxy/src/main/java/org/apache/rocketmq/proxy/remoting/activity/AbstractRemotingActivity.java
@@ -25,6 +25,7 @@ import org.apache.rocketmq.client.exception.MQBrokerException;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.common.constant.LoggerName;
 import org.apache.rocketmq.common.message.MessageConst;
+import org.apache.rocketmq.common.protocol.RequestCode;
 import org.apache.rocketmq.common.protocol.ResponseCode;
 import org.apache.rocketmq.proxy.common.ProxyContext;
 import org.apache.rocketmq.proxy.common.ProxyException;
@@ -44,6 +45,7 @@ public abstract class AbstractRemotingActivity implements 
NettyRequestProcessor
     protected final static Logger log = 
LoggerFactory.getLogger(LoggerName.PROXY_LOGGER_NAME);
     protected final MessagingProcessor messagingProcessor;
     protected static final String BROKER_NAME_FIELD = "bname";
+    protected static final String BROKER_NAME_FIELD_FOR_SEND_MESSAGE_V2 = "n";
     private static final Map<ProxyExceptionCode, Integer> 
PROXY_EXCEPTION_RESPONSE_CODE_MAP = new HashMap<ProxyExceptionCode, Integer>() {
         {
             put(ProxyExceptionCode.FORBIDDEN, ResponseCode.NO_PERMISSION);
@@ -61,11 +63,20 @@ public abstract class AbstractRemotingActivity implements 
NettyRequestProcessor
 
     protected RemotingCommand request(ChannelHandlerContext ctx, 
RemotingCommand request,
         ProxyContext context, long timeoutMillis) throws Exception {
-        if (request.getExtFields().get(BROKER_NAME_FIELD) == null) {
-            return 
RemotingCommand.buildErrorResponse(ResponseCode.VERSION_NOT_SUPPORTED,
-                "Request doesn't have field bname");
+        String brokerName;
+        if (request.getCode() == RequestCode.SEND_MESSAGE_V2) {
+            if 
(request.getExtFields().get(BROKER_NAME_FIELD_FOR_SEND_MESSAGE_V2) == null) {
+                return 
RemotingCommand.buildErrorResponse(ResponseCode.VERSION_NOT_SUPPORTED,
+                    "Request doesn't have field bname");
+            }
+            brokerName = 
request.getExtFields().get(BROKER_NAME_FIELD_FOR_SEND_MESSAGE_V2);
+        } else {
+            if (request.getExtFields().get(BROKER_NAME_FIELD) == null) {
+                return 
RemotingCommand.buildErrorResponse(ResponseCode.VERSION_NOT_SUPPORTED,
+                    "Request doesn't have field bname");
+            }
+            brokerName = request.getExtFields().get(BROKER_NAME_FIELD);
         }
-        String brokerName = request.getExtFields().get(BROKER_NAME_FIELD);
         if (request.isOnewayRPC()) {
             messagingProcessor.requestOneway(context, brokerName, request, 
timeoutMillis);
             return null;

Reply via email to