!32 backport Utilizing cache to avoid duplicate parsing
From: @zhiliatox Reviewed-by: @hu-zongtang Signed-off-by: @hu-zongtang
This commit is contained in:
commit
26a87e2173
@ -0,0 +1,116 @@
|
|||||||
|
From f0f15b5e21acd3caf9141375be5db3ef726a2173 Mon Sep 17 00:00:00 2001
|
||||||
|
From: guyinyou <36399867+guyinyou@users.noreply.github.com>
|
||||||
|
Date: Thu, 19 Oct 2023 10:14:29 +0800
|
||||||
|
Subject: [PATCH 1/2] [ISSUE #7454] Utilizing cache to avoid duplicate parsing
|
||||||
|
(#7455)
|
||||||
|
|
||||||
|
* Utilizing cache to avoid duplicate parsing
|
||||||
|
|
||||||
|
* add a method argument to decide cacheable
|
||||||
|
|
||||||
|
* Renaming variable names from cacheAble to isCached
|
||||||
|
|
||||||
|
---------
|
||||||
|
|
||||||
|
Co-authored-by: guyinyou <guyinyou.gyy@alibaba-inc.com>
|
||||||
|
Co-authored-by: RongtongJin <jinrongtong16@mails.ucas.ac.cn>
|
||||||
|
---
|
||||||
|
.../broker/processor/PopMessageProcessor.java | 2 +-
|
||||||
|
.../remoting/protocol/RemotingCommand.java | 14 ++++++++++++--
|
||||||
|
.../protocol/header/FastCodesHeaderTest.java | 2 +-
|
||||||
|
3 files changed, 14 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
|
||||||
|
index f5d07c5aa..7ed4d53ab 100644
|
||||||
|
--- a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
|
||||||
|
+++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
|
||||||
|
@@ -204,7 +204,7 @@ public class PopMessageProcessor implements NettyRequestProcessor {
|
||||||
|
RemotingCommand response = RemotingCommand.createResponseCommand(PopMessageResponseHeader.class);
|
||||||
|
final PopMessageResponseHeader responseHeader = (PopMessageResponseHeader) response.readCustomHeader();
|
||||||
|
final PopMessageRequestHeader requestHeader =
|
||||||
|
- (PopMessageRequestHeader) request.decodeCommandCustomHeader(PopMessageRequestHeader.class);
|
||||||
|
+ (PopMessageRequestHeader) request.decodeCommandCustomHeader(PopMessageRequestHeader.class, true);
|
||||||
|
StringBuilder startOffsetInfo = new StringBuilder(64);
|
||||||
|
StringBuilder msgOffsetInfo = new StringBuilder(64);
|
||||||
|
StringBuilder orderCountInfo = null;
|
||||||
|
diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
|
||||||
|
index d27135132..e93072adf 100644
|
||||||
|
--- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
|
||||||
|
+++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
|
||||||
|
@@ -89,6 +89,7 @@ public class RemotingCommand {
|
||||||
|
private String remark;
|
||||||
|
private HashMap<String, String> extFields;
|
||||||
|
private transient CommandCustomHeader customHeader;
|
||||||
|
+ private transient CommandCustomHeader cachedHeader;
|
||||||
|
|
||||||
|
private SerializeType serializeTypeCurrentRPC = serializeTypeConfigInThisServer;
|
||||||
|
|
||||||
|
@@ -260,10 +261,19 @@ public class RemotingCommand {
|
||||||
|
|
||||||
|
public CommandCustomHeader decodeCommandCustomHeader(
|
||||||
|
Class<? extends CommandCustomHeader> classHeader) throws RemotingCommandException {
|
||||||
|
- return decodeCommandCustomHeader(classHeader, true);
|
||||||
|
+ return decodeCommandCustomHeader(classHeader, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
- public CommandCustomHeader decodeCommandCustomHeader(Class<? extends CommandCustomHeader> classHeader,
|
||||||
|
+ public CommandCustomHeader decodeCommandCustomHeader(
|
||||||
|
+ Class<? extends CommandCustomHeader> classHeader, boolean isCached) throws RemotingCommandException {
|
||||||
|
+ if (isCached && cachedHeader != null) {
|
||||||
|
+ return cachedHeader;
|
||||||
|
+ }
|
||||||
|
+ cachedHeader = decodeCommandCustomHeaderDirectly(classHeader, true);
|
||||||
|
+ return cachedHeader;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public CommandCustomHeader decodeCommandCustomHeaderDirectly(Class<? extends CommandCustomHeader> classHeader,
|
||||||
|
boolean useFastEncode) throws RemotingCommandException {
|
||||||
|
CommandCustomHeader objectHeader;
|
||||||
|
try {
|
||||||
|
diff --git a/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/header/FastCodesHeaderTest.java b/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/header/FastCodesHeaderTest.java
|
||||||
|
index 6bb100f57..b6a0d6311 100644
|
||||||
|
--- a/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/header/FastCodesHeaderTest.java
|
||||||
|
+++ b/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/header/FastCodesHeaderTest.java
|
||||||
|
@@ -73,7 +73,7 @@ public class FastCodesHeaderTest {
|
||||||
|
|
||||||
|
private void check(RemotingCommand command, List<Field> fields,
|
||||||
|
Class<? extends CommandCustomHeader> classHeader) throws Exception {
|
||||||
|
- CommandCustomHeader o1 = command.decodeCommandCustomHeader(classHeader, false);
|
||||||
|
+ CommandCustomHeader o1 = command.decodeCommandCustomHeaderDirectly(classHeader, false);
|
||||||
|
CommandCustomHeader o2 = classHeader.getDeclaredConstructor().newInstance();
|
||||||
|
((FastCodesHeader)o2).decode(command.getExtFields());
|
||||||
|
for (Field f : fields) {
|
||||||
|
--
|
||||||
|
2.32.0.windows.2
|
||||||
|
|
||||||
|
|
||||||
|
From dbc633d92b6c8c35922234611d698d3cb0a1a234 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ji Juntao <juntao.jjt@alibaba-inc.com>
|
||||||
|
Date: Thu, 19 Oct 2023 14:12:33 +0800
|
||||||
|
Subject: [PATCH 2/2] Check the input yaml and the path in ACL (#7475)
|
||||||
|
|
||||||
|
* check the input yaml and the path.
|
||||||
|
|
||||||
|
* only modify the path, no yaml.
|
||||||
|
|
||||||
|
* remove useless import
|
||||||
|
---
|
||||||
|
.../org/apache/rocketmq/acl/plain/PlainPermissionManager.java | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java b/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java
|
||||||
|
index f6699fa13..345aed06c 100644
|
||||||
|
--- a/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java
|
||||||
|
+++ b/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java
|
||||||
|
@@ -484,7 +484,7 @@ public class PlainPermissionManager {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!fileName.startsWith(fileHome)) {
|
||||||
|
+ if (!file.getAbsolutePath().startsWith(fileHome)) {
|
||||||
|
log.error("Parameter value " + fileName + " is not in the directory rocketmq.home.dir " + fileHome);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.32.0.windows.2
|
||||||
|
|
||||||
@ -5,7 +5,7 @@
|
|||||||
Summary: Cloud-Native, Distributed Messaging and Streaming
|
Summary: Cloud-Native, Distributed Messaging and Streaming
|
||||||
Name: rocketmq
|
Name: rocketmq
|
||||||
Version: 5.1.5
|
Version: 5.1.5
|
||||||
Release: 27
|
Release: 28
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
Group: Applications/Message
|
Group: Applications/Message
|
||||||
URL: https://rocketmq.apache.org/
|
URL: https://rocketmq.apache.org/
|
||||||
@ -36,6 +36,7 @@ Patch0023: patch023-backport-some-bugfixes.patch
|
|||||||
Patch0024: patch024-backport-some-format.patch
|
Patch0024: patch024-backport-some-format.patch
|
||||||
Patch0025: patch025-backport-Fix-channel-connect-issue.patch
|
Patch0025: patch025-backport-Fix-channel-connect-issue.patch
|
||||||
Patch0026: patch026-backport-AddBroker-removes-parsing-configuration-from-body.patch
|
Patch0026: patch026-backport-AddBroker-removes-parsing-configuration-from-body.patch
|
||||||
|
Patch0027: patch027-backport-Utilizing-cache-to-avoid-duplicate-parsing.patch
|
||||||
BuildRequires: java-1.8.0-openjdk-devel, maven, maven-local, git
|
BuildRequires: java-1.8.0-openjdk-devel, maven, maven-local, git
|
||||||
Requires: java-1.8.0-openjdk-devel
|
Requires: java-1.8.0-openjdk-devel
|
||||||
|
|
||||||
@ -76,6 +77,9 @@ exit 0
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Dec 8 2023 ShiZhili <shizhili_yewu@cmss.chinamobile.com> - 5.1.3-28
|
||||||
|
- backport Utilizing cache to avoid duplicate parsing
|
||||||
|
|
||||||
* Fri Dec 8 2023 ShiZhili <shizhili_yewu@cmss.chinamobile.com> - 5.1.3-27
|
* Fri Dec 8 2023 ShiZhili <shizhili_yewu@cmss.chinamobile.com> - 5.1.3-27
|
||||||
- backport AddBroker removes parsing configuration from body
|
- backport AddBroker removes parsing configuration from body
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user