tianliuliu commented on code in PR #4059:
URL: https://github.com/apache/rocketmq/pull/4059#discussion_r839393355
##########
store/src/main/java/org/apache/rocketmq/store/dledger/DLedgerCommitLog.java:
##########
@@ -426,17 +426,31 @@ private void setMessageInfo(MessageExtBrokerInner msg,
int tranType) {
// Back to Results
AppendMessageResult appendResult;
AppendFuture<AppendEntryResponse> dledgerFuture;
- EncodeResult encodeResult;
+ EncodeResult encodeResult = null;
- encodeResult = this.messageSerializer.serialize(msg);
- if (encodeResult.status != AppendMessageStatus.PUT_OK) {
- return CompletableFuture.completedFuture(new
PutMessageResult(PutMessageStatus.MESSAGE_ILLEGAL, new
AppendMessageResult(encodeResult.status)));
+ boolean isMultiDispatch = multiDispatch.isMultiDispatchMsg(msg);
+ if (!isMultiDispatch) {
+ encodeResult = this.messageSerializer.serialize(msg);
+ if (encodeResult.status != AppendMessageStatus.PUT_OK) {
+ return CompletableFuture.completedFuture(new
PutMessageResult(PutMessageStatus.MESSAGE_ILLEGAL, new
AppendMessageResult(encodeResult.status)));
+ }
}
putMessageLock.lock(); //spin or ReentrantLock ,depending on store
config
long elapsedTimeInLock;
long queueOffset;
try {
beginTimeInDledgerLock =
this.defaultMessageStore.getSystemClock().now();
+ if (isMultiDispatch) {
+ boolean multiDispatchWrapResult =
multiDispatch.wrapMultiDispatch(msg);
Review Comment:
make wrapMultiDispatch method thread safety and not use lock ,because if
this the lock will be larger, not good idea
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]