[improve][txn] Add getState in transaction for client API
Motivation
now org.apache.pulsar.client.api.transaction.Transaction dont have a interface for user to get the transaction state.
user can get the transaction state to do user's own op.
Modifications
- add the interface in
org.apache.pulsar.client.api.transaction.TransactiongetState - TransactionImpl implement the interface
* Get transaction state.
*
* @return {@link State} the state of the transaction.
*/
State getState();
Verifying this change
add the test
Does this pull request potentially affect one of the following parts:
If yes was chosen, please highlight the changes
- Dependencies (does it add or upgrade a dependency): (no)
- The public API: (no)
- The schema: (no)
- The default values of configurations: (no)
- The wire protocol: (no)
- The rest endpoints: (no)
- The admin cli options: (no)
- Anything that affects deployment: (no)
Documentation
-
Does this pull request introduce a new feature? (yes)
-
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)
-
If a feature is not applicable for documentation, explain why?
-
If a feature is not documented yet in this PR, please create a followup issue for adding the documentation
-
[x]
doc-not-needed
I hope it can be cherry-picked to release branches from branch-2.9.
So that users can use the new method to check the transaction state.
And the change will not introduce risk to release branches.
@Anonymitaet Please help review the Java Doc
@Anonymitaet @codelipenghui I have fixed the comments, please review again. Thanks! :)
@nicoloboschi I see a transaction production user. They are using TransactionImpl.checkIfOpen() to do some checks when they using transactions. Otherwise, they can only do it by catching exceptions, but it's a bad experience. The ideal case is users don't need to care about the transaction state, just commit it or abort it. Always under some complex use cases, users depend on the state check (same as client.isConnected(); consumer.isConnected();)
Cherry-picked by #19834