This is an automated email from the ASF dual-hosted git repository.
lizhimins 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 fd2dc2ffc2 [ISSUE #11000] Extract user-property validation in
SendMessageActivity#buildMessageProperty into an overridable
checkUserProperties method (#11001)
fd2dc2ffc2 is described below
commit fd2dc2ffc2acb0515f5f810096de842aa0a80812
Author: ymwneu <[email protected]>
AuthorDate: Tue Sep 8 15:39:58 2026 +0800
[ISSUE #11000] Extract user-property validation in
SendMessageActivity#buildMessageProperty into an overridable
checkUserProperties method (#11001)
Extract the user property validation logic (property count limit,
reserved-key check, control character check) from buildMessageProperty()
into a standalone protected checkUserProperties() method. The property
size accumulation stays in buildMessageProperty().
---
.../proxy/grpc/v2/producer/SendMessageActivity.java | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git
a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/producer/SendMessageActivity.java
b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/producer/SendMessageActivity.java
index c0138cae7f..62fbb4ae96 100644
---
a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/producer/SendMessageActivity.java
+++
b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/producer/SendMessageActivity.java
@@ -195,12 +195,8 @@ public class SendMessageActivity extends
AbstractMessagingActivity {
}
}
- protected Map<String, String> buildMessageProperty(ProxyContext context,
apache.rocketmq.v2.Message message, String producerGroup) {
- long userPropertySize = 0;
+ protected void checkUserProperties(Map<String, String> userProperties) {
ProxyConfig config = ConfigurationManager.getProxyConfig();
- org.apache.rocketmq.common.message.Message messageWithHeader = new
org.apache.rocketmq.common.message.Message();
- // set user properties
- Map<String, String> userProperties = message.getUserPropertiesMap();
if (userProperties.size() > config.getUserPropertyMaxNum()) {
throw new GrpcProxyException(Code.MESSAGE_PROPERTIES_TOO_LARGE,
"too many user properties, max is " + config.getUserPropertyMaxNum());
}
@@ -214,6 +210,17 @@ public class SendMessageActivity extends
AbstractMessagingActivity {
if
(GrpcValidator.getInstance().containControlCharacter(userPropertiesEntry.getValue()))
{
throw new
GrpcProxyException(Code.ILLEGAL_MESSAGE_PROPERTY_KEY, "the value of property
cannot contain control character");
}
+ }
+ }
+
+ protected Map<String, String> buildMessageProperty(ProxyContext context,
apache.rocketmq.v2.Message message, String producerGroup) {
+ long userPropertySize = 0;
+ ProxyConfig config = ConfigurationManager.getProxyConfig();
+ org.apache.rocketmq.common.message.Message messageWithHeader = new
org.apache.rocketmq.common.message.Message();
+ // set user properties
+ Map<String, String> userProperties = message.getUserPropertiesMap();
+ checkUserProperties(userProperties);
+ for (Map.Entry<String, String> userPropertiesEntry :
userProperties.entrySet()) {
userPropertySize +=
userPropertiesEntry.getKey().getBytes(StandardCharsets.UTF_8).length;
userPropertySize +=
userPropertiesEntry.getValue().getBytes(StandardCharsets.UTF_8).length;
}