You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "medoer (via GitHub)" <gi...@apache.org> on 2023/04/26 05:49:46 UTC
[GitHub] [rocketmq] medoer opened a new issue, #6655: Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1
medoer opened a new issue, #6655:
URL: https://github.com/apache/rocketmq/issues/6655
The issue tracker is used for bug reporting purposes **ONLY** whereas feature request needs to follow the [RIP process](https://github.com/apache/rocketmq/wiki/RocketMQ-Improvement-Proposal). To avoid unnecessary duplication, please check whether there is a previous issue before filing a new one.
It is recommended to start a discussion thread in the [mailing lists](http://rocketmq.apache.org/about/contact/) or [github discussions](https://github.com/apache/rocketmq/discussions) in cases of discussing your deployment plan, API clarification, and other non-bug-reporting issues.
We welcome any friendly suggestions, bug fixes, collaboration, and other improvements.
Please ensure that your bug report is clear and self-contained. Otherwise, it would take additional rounds of communication, thus more time, to understand the problem itself.
Generally, fixing an issue goes through the following steps:
1. Understand the issue reported;
1. Reproduce the unexpected behavior locally;
1. Perform root cause analysis to identify the underlying problem;
1. Create test cases to cover the identified problem;
1. Work out a solution to rectify the behavior and make the newly created test cases pass;
1. Make a pull request and go through peer review;
As a result, it would be very helpful yet challenging if you could provide an isolated project reproducing your reported issue. Anyway, please ensure your issue report is informative enough for the community to pick up. At a minimum, include the following hints:
**BUG REPORT**
1. Please describe the issue you observed:
- Send transactional message which message size is close to message size limit of broker
- The message send succeed and the transactional message's check can be invoked succeed
- The message send succeed, but when the transactional message check produce a dead cycle
2. Please tell us about your environment:
3. Other information (e.g. detailed explanation, logs, related issues, suggestions on how to fix, etc):
`org.apache.rocketmq.broker.transaction.queue.TransactionalMessageBridge#renewHalfMessageInner` method add more message `msgInner.setTagsCode(MessageExtBrokerInner.tagsString2tagsCode(msgInner.getTags()))` witch do the message size check
**FEATURE REQUEST**
1. Please describe the feature you are requesting.
Transactional Message check
2. Provide any additional detail on your proposed use case for this feature.
send message witch size is close to maxMessageSize
3. Indicate the importance of this issue to you (blocker, must-have, should-have, nice-to-have). Are you currently using any workarounds to address this issue?
must-have
Has the issue been fixed? If so, could you please let me know which version it has been fixed in? Thank you for your help!
--
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: commits-unsubscribe@rocketmq.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1 [rocketmq]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-2676461435
This issue was closed because it has been inactive for 3 days since being marked as stale.
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1 [rocketmq]
Posted by "medoer (via GitHub)" <gi...@apache.org>.
medoer commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-1951843567
> I figure it out message length include message body length , message properties length , topic length and so on. when transaction message check back, message properties will insert TRANSACTION_CHECK_TIMES property, so increase message size may over message size limit.
>
> So it is recommended that the message body size of the transaction message be smaller than broker maxMessageSize。 We will strengthen the check of message size sent by transaction clients
Hi @Focus-rth ,
Any updates on when it might be fixed?
Thanks
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq] medoer commented on issue #6655: Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1
Posted by "medoer (via GitHub)" <gi...@apache.org>.
medoer commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-1527123087
> I send transaction message of 4194303 bytes, but I don't reproduce the problem. Can you show your client test code?
@Focus-rth
The issue is found in our production env twice with no limit of the message body, but our broker maxMessageSize id 64KB.
But no limit on client.
I read the code and found the client will be compress the message body, so you send the 4194303 bytes maybe not close to the broker's limit.
I can reproduce this in our local env, with modify the broker maxMessageSize = 3072 and compress size to 512 bytes.
and send message one by one byte in a loop
`
byte[] by = JSON.toJSONString(message.getPayload()).getBytes(StandardCharsets.UTF_8);
byte[] headerBytes = JSON.toJSONString(message.getHeaders()).getBytes(StandardCharsets.UTF_8);
byte[] compress = UtilAll.compress(by, 5);
log.info("size: {}, compress size: {}, header size: {}", by.length, compress.length, headerBytes.length);
if (compress.length > 1024 - 500) {
headers.put("KEYS", compress.length);
// send message
}`
<img width="1216" alt="image" src="https://user-images.githubusercontent.com/20471718/235083476-1c535e48-30bc-4d3c-b296-86d8876b4046.png">
the logger
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
2023-04-27 08:57:18 ERROR TransactionalMessageCheckService - PutBackToHalfQueueReturnResult write failed, topic: RMQ_SYS_TRANS_HALF_TOPIC, queueId: 0, msgId: 0ADC043300002A9F000000000056C9ED
And I think maybe that's the problem `msgInner.setTagsCode(MessageExtBrokerInner.tagsString2tagsCode(msgInner.getTags()))` , this lead to more size than the client send
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq] medoer commented on issue #6655: Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1
Posted by "medoer (via GitHub)" <gi...@apache.org>.
medoer commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-1527131480
This the console after the issue was reproduced.
<img width="1216" alt="image" src="https://user-images.githubusercontent.com/20471718/235085693-d81d3a8e-7d5f-427d-9ecc-f8e162f820dd.png">
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq] Focus-rth commented on issue #6655: Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1
Posted by "Focus-rth (via GitHub)" <gi...@apache.org>.
Focus-rth commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-1530684450
I figure it out
message length include message body length , message properties length , topic length and so on.
when transaction message check back, message properties will insert TRANSACTION_CHECK_TIMES property, so increase message size may over message size limit.
So it is recommended that the message body size of the transaction message be smaller than broker maxMessageSize。
We will strengthen the check of message size sent by transaction clients
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq] Focus-rth commented on issue #6655: Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1
Posted by "Focus-rth (via GitHub)" <gi...@apache.org>.
Focus-rth commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-1526905261
I send transaction message of 4194303 bytes, but I don't reproduce the problem. Can you show your client test code?
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1 [rocketmq]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-2667202995
This issue is stale because it has been open for 365 days with no activity. It will be closed in 3 days if no further activity occurs.
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1 [rocketmq]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] closed issue #6655: Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1
URL: https://github.com/apache/rocketmq/issues/6655
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq] medoer commented on issue #6655: Dead cycle when send a transactional message which message size is approach message size limit. Version 4.7.1
Posted by "medoer (via GitHub)" <gi...@apache.org>.
medoer commented on issue #6655:
URL: https://github.com/apache/rocketmq/issues/6655#issuecomment-1527125854
>
I know that if i set the limit of the message size in client this will be ok, but because the compress, the broker can receipt more message.
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org