Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Transaction message functionality has severe data inconsistency #8158

Open
3 tasks done
SeanJi213 opened this issue May 17, 2024 · 0 comments
Open
3 tasks done

Comments

@SeanJi213
Copy link

Before Creating the Bug Report

  • I found a bug, not just asking a question, which should be created in GitHub Discussions.

  • I have searched the GitHub Issues and GitHub Discussions of this repository and believe that this is not a duplicate.

  • I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ.

Runtime platform environment

MacOS 14.1

RocketMQ version

4.9.7

JDK Version

No response

Describe the Bug

  1. Transaction messages can be committed after check is triggered and returns COMMIT, causing committing the same message with identical messageId twice.
  2. Transactional messages can still be committed by the producer after check is triggered and returns ROLLBACK, causing inconsistency.
  3. As long as check is triggered before the producer sends the state of local transaction to the broker, check won't stop until it reaches the maximum check times even the producer already sends the final state of local transaction(COMMIT/ROLLBACK) to the broker, which is certainly not expected.
  4. If check is triggered and reaches its maximum check times and after this, the producer sends a COMMIT to the broker, this message, instead of being rollbacked as expected, can still be consumed by the consumer.

Steps to Reproduce

For ISSUE 1:

The producer executes its local transaction for a relatively long time and does not return the state of its local transaction, long enough to let the check be triggered and return COMMIT before the producer does. In this case, there is a consumer subscribing the topic which we send transaction message to. So, as soon as the check method got a COMMIT, this message is consumed by the consumer. Right after check method returns COMMIT, the producer sends COMMIT to the broker, and the same message is consumed once again.
生产端控制台输出:

发送消息:{"body":"dGVzdCB0cmFuc2FjdGlvbmFsIG1lc3NhZ2UgTk8uMzAx","delayTimeLevel":0,"flag":0,"keys":"Trans_Message_Key","properties":{"KEYS":"Trans_Message_Key","WAIT":"true","TAGS":"trans msg tag 301"},"tags":"trans msg tag 301","topic":"test_topic_2","waitStoreMsgOK":true}
Executing local transaction...  当前时间戳: 2024-05-17 16:44:17
Executing local transaction...  当前时间戳: 2024-05-17 16:44:27
Executing local transaction...  当前时间戳: 2024-05-17 16:44:36
开始回查的时间戳:2024-05-17 16:44:38
事务开始执行 31 秒后Broker端回查 返回回查结果: COMMIT_MESSAGE
本地事务执行完成,生产端返回事务状态: COMMIT_MESSAGE
SendResult [sendStatus=SEND_OK, msgId=7F00000124A87C53A9EB55FD0D130000, offsetMsgId=null, messageQueue=MessageQueue [topic=test_topic_2, brokerName=broker-a, queueId=1], queueOffset=310]

消费端消费到该条消息两次,重复消费:
Xnip2024-05-17_16-46-30

For ISSUE 2:

The producer executes its local transaction for a relatively long time and does not return the state of its local transaction, long enough to let the check be triggered and return ROLLBACK first. In this case, there is also a consumer subscribing the topic which we send transaction message to. And right after the check method returns ROLLBACK, the producer finishes executing local transaction and sends a COMMIT to the broker, and this message can be consumed by the consumer somehow, which causes severe inconsistency.
生产端控制台输出:

发送消息:{"body":"dGVzdCB0cmFuc2FjdGlvbmFsIG1lc3NhZ2UgTk8uNDU1","delayTimeLevel":0,"flag":0,"keys":"Trans_Message_Key","properties":{"KEYS":"Trans_Message_Key","WAIT":"true","TAGS":"trans msg tag 455"},"tags":"trans msg tag 455","topic":"test_topic_2","waitStoreMsgOK":true}
Executing local transaction...  当前时间戳: 2024-05-17 16:51:52
Executing local transaction...  当前时间戳: 2024-05-17 16:52:02
Executing local transaction...  当前时间戳: 2024-05-17 16:52:12
Executing local transaction...  当前时间戳: 2024-05-17 16:52:22
开始回查的时间戳:2024-05-17 16:52:38
事务开始执行 56 秒后Broker端回查 返回回查结果: ROLLBACK_MESSAGE
本地事务执行完成,生产端返回事务状态: COMMIT_MESSAGE
SendResult [sendStatus=SEND_OK, msgId=7F0000012B117C53A9EB5603FF1D0000, offsetMsgId=null, messageQueue=MessageQueue [topic=test_topic_2, brokerName=broker-a, queueId=1], queueOffset=312]

消费端仍然消费到了本应被回滚的消息:
Xnip2024-05-17_16-54-55
(针对这种情况,如果反之,回查先于生产端返回了COMMIT,在这之后生产端返回了本地事务状态-ROLLBACK,该条消息仍然会被消费到,消费时机为回查返回COMMIT时,造成不一致)

For ISSUE 3:

The producer executes its local transaction for a relatively long time and does not return the state of its local transaction, long enough for the check method to be triggered. In this scenario, the check method will return UNKNOW every time. And after a few checks, the producer finishes executing local transaction and sends a COMMIT to the broker. However, after this, check continues until it reaches the maximum check times, which is by default 15.

{"body":"dGVzdCB0cmFuc2FjdGlvbmFsIG1lc3NhZ2UgTk8uNTA1","delayTimeLevel":0,"flag":0,"keys":"Trans_Message_Key","properties":{"KEYS":"Trans_Message_Key","WAIT":"true","TAGS":"trans msg tag 505"},"tags":"trans msg tag 505","topic":"test_topic_2","waitStoreMsgOK":true}
Executing local transaction...  当前时间戳: 2024-05-17 17:10:57
Executing local transaction...  当前时间戳: 2024-05-17 17:11:07
Executing local transaction...  当前时间戳: 2024-05-17 17:11:17
Executing local transaction...  当前时间戳: 2024-05-17 17:11:27
Executing local transaction...  当前时间戳: 2024-05-17 17:11:37
开始回查的时间戳:2024-05-17 17:11:38
事务开始执行 51 秒后Broker端回查 返回回查结果: UNKNOW
Executing local transaction...  当前时间戳: 2024-05-17 17:11:47
Executing local transaction...  当前时间戳: 2024-05-17 17:11:57
Executing local transaction...  当前时间戳: 2024-05-17 17:12:07
Executing local transaction...  当前时间戳: 2024-05-17 17:12:17
Executing local transaction...  当前时间戳: 2024-05-17 17:12:27
Executing local transaction...  当前时间戳: 2024-05-17 17:12:37
开始回查的时间戳:2024-05-17 17:12:38
事务开始执行 111 秒后Broker端回查 返回回查结果: UNKNOW
Executing local transaction...  当前时间戳: 2024-05-17 17:12:47
Executing local transaction...  当前时间戳: 2024-05-17 17:12:57
Executing local transaction...  当前时间戳: 2024-05-17 17:13:07
Executing local transaction...  当前时间戳: 2024-05-17 17:13:17
Executing local transaction...  当前时间戳: 2024-05-17 17:13:27
Executing local transaction...  当前时间戳: 2024-05-17 17:13:37
开始回查的时间戳:2024-05-17 17:13:38
事务开始执行 171 秒后Broker端回查 返回回查结果: UNKNOW
Executing local transaction...  当前时间戳: 2024-05-17 17:13:47
Executing local transaction...  当前时间戳: 2024-05-17 17:13:57
Executing local transaction...  当前时间戳: 2024-05-17 17:14:07
Executing local transaction...  当前时间戳: 2024-05-17 17:14:17
Executing local transaction...  当前时间戳: 2024-05-17 17:14:27
Executing local transaction...  当前时间戳: 2024-05-17 17:14:37
开始回查的时间戳:2024-05-17 17:14:38
事务开始执行 231 秒后Broker端回查 返回回查结果: UNKNOW
本地事务执行完成,生产端返回事务状态: COMMIT_MESSAGE
SendResult [sendStatus=SEND_OK, msgId=7F0000013AE37C53A9EB561578AC0000, offsetMsgId=null, messageQueue=MessageQueue [topic=test_topic_2, brokerName=broker-a, queueId=1], queueOffset=314]
开始回查的时间戳:2024-05-17 17:15:38
事务开始执行 291 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:16:38
事务开始执行 351 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:17:38
事务开始执行 411 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:18:38
事务开始执行 471 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:19:38
事务开始执行 531 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:20:38
事务开始执行 591 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:21:38
事务开始执行 651 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:22:38
事务开始执行 711 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:23:38
事务开始执行 771 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:24:38
事务开始执行 831 秒后Broker端回查 返回回查结果: UNKNOW
开始回查的时间戳:2024-05-17 17:25:38
事务开始执行 891 秒后Broker端回查 返回回查结果: UNKNOW

消费端能消费到该条消息:
Xnip2024-05-17_17-45-40

For ISSUE 4:

If check is triggered and reaches its maximum check times and after this, the producer sends a COMMIT to the broker, this message, instead of being rollbacked as expected, can still be consumed by the consumer.

This is the message trace of this transaction message, indicating the message can be consumed after the number of check times reaches its maximum, which is by default 15.

[
  {
    "clientHost": "127.0.0.1",
    "costTime": 37,
    "fromTransactionCheck": false,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_Msg_Half",
    "offSetMsgId": "7F00000100002A9F000000000006F8A5",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149262016,
    "topic": "test_topic_1",
    "traceType": "Pub",
    "transactionState": "NOT_YET_CHECK_STATE"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149274610,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149334622,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149394625,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149454664,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149514694,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149574692,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149634705,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149694709,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149754717,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149814730,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149874738,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149934754,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715149994756,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715150054765,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": true,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715150114782,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "UNKNOW"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": false,
    "groupName": "TEST_PRODUCER_GROUP",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "msgType": "Trans_msg_Commit",
    "offSetMsgId": "",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1:10911",
    "tags": "trans msg tag 553",
    "timeStamp": 1715150232508,
    "topic": "test_topic_1",
    "traceType": "EndTransaction",
    "transactionId": "7F0000017E837C53A9EB2720D0BF0000",
    "transactionState": "COMMIT_MESSAGE"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": -1,
    "fromTransactionCheck": false,
    "groupName": "trans_msg_consumer_group_621",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "offSetMsgId": "",
    "requestId": "7F00000129F87C53A9EB272F9FDA000B",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1",
    "tags": "",
    "timeStamp": 1715150232539,
    "topic": "",
    "traceType": "SubBefore",
    "transactionState": "NOT_YET_CHECK_STATE"
  },
  {
    "clientHost": "127.0.0.1",
    "costTime": 0,
    "fromTransactionCheck": false,
    "groupName": "trans_msg_consumer_group_621",
    "keys": "trans msg key 553",
    "msgId": "7F0000017E837C53A9EB2720D0BF0000",
    "offSetMsgId": "",
    "requestId": "7F00000129F87C53A9EB272F9FDA000B",
    "retryTimes": 0,
    "status": "success",
    "storeHost": "127.0.0.1",
    "tags": "",
    "timeStamp": 1715150232539,
    "topic": "",
    "traceType": "SubAfter",
    "transactionState": "NOT_YET_CHECK_STATE"
  }
]

What Did You Expect to See?

For scenario 1: The message should have been consumed only once.
For scenario 2: The message shouldn't have been consumed after being rollbacked.
For scenario 3: The check method should have stopped after the producer sends the final state of local transaction(commit/rollback).
For scenario 4: The message should have been rollbacked after the number of check times reaches its maximum, which is by default 15.

What Did You See Instead?

For scenario 1: The message is consumed twice.
For scenario 2: The message can still be consumed after being rollbacked first.
For scenario 3: The check method continues after the producer sends the final state of local transaction(commit/rollback).
For scenario 4: The message can still be consumed by sending COMMIT to the broker even after the number of check times reaches its maximum, which is by default 15.

Additional Context

No response

@SeanJi213 SeanJi213 changed the title [Bug] Transaction message data consistency violation problems: 1. transaction messages can be committed after check is triggered and returns COMMIT, causing committing the same message with identical messageId twice; 2. transactional messages can still be committed by the producer after check is triggered and returns ROLLBACK, causing inconsistency; 3. as long as check is triggered before the producer sends the state of local transaction to the broker, check won't stop until it reaches the maximum check times even the producer already sends the final state of local transaction(COMMIT/ROLLBACK) to the broker, which is certainly not expected; 4. If check is triggered and reaches its maximum check times and after this, the producer sends a COMMIT to the broker, this message, instead of being rollbacked as expected, can still be consumed by the consumer. [Bug] Transaction message functionality has severe data inconsistency May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant