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 producer didn't receive CheckTransacationState request of pending message #8316

Open
3 tasks done
redlsz opened this issue Jun 20, 2024 · 1 comment · May be fixed by #8320
Open
3 tasks done

[Bug] Transaction producer didn't receive CheckTransacationState request of pending message #8316

redlsz opened this issue Jun 20, 2024 · 1 comment · May be fixed by #8320

Comments

@redlsz
Copy link
Contributor

redlsz commented Jun 20, 2024

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

unreleated

RocketMQ version

5.x

JDK Version

1.8

Describe the Bug

image

In transaction message scenario, the first time execution result was UNKNOW. We expected to receive broker's check request later, but did not.

Steps to Reproduce

  1. Startup server in proxy cluster mode
  2. Startup a remoting TransactionProducer
  3. Sleep 5 seconds before sending one transaction message, and return UNKNOW in TransactionListener#executeLocalTransaction
  4. Keep TransactionProducer running and don't send more messages
  5. Observe whether TransactionListener#checkLocalTransaction will be called

What Did You Expect to See?

TransactionListener#checkLocalTransaction will be called

What Did You See Instead?

TransactionListener#checkLocalTransaction has not been called

Additional Context

No response

@redlsz
Copy link
Contributor Author

redlsz commented Jun 20, 2024

image

Transaction log indicates that the broker cannot find producer channel when trying to call client CheckTransactionState.

image

In this case, the producer send message before its first heartbeat, which causes offline misjudgement when scanning at ClusterTransactionService#scanProducerHeartBeat. Eventually, this producer will not be registered to brokers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
1 participant