thetumbled opened a new pull request, #19662:
URL: https://github.com/apache/pulsar/pull/19662

   <!-- Either this PR fixes an issue, -->
   
   Fixes #19629
   PIP: https://github.com/apache/pulsar/issues/19744
   
   **WARN: this PR implement Solution1 in PIP-255, which may be deprecated. 
Solution2 may be a better solution.**
   
   ### Motivation
   when client try to commit a transaction which have been committed already, 
the broker will return exception. The client will regard that it fail to commit 
the transaction and resend the messages in this transaction, which will result 
into message duplication.
   It should be emphasized that, there is retry logic in the internal logic of 
pulsar `tcClient`. We will meet problem above though we commit only once. For 
example, if broker restart, commit request may arrive to broker twice though we 
only commit once.
   As a result, we should avoid throwing exceptions to client when the 
transaction is committed successfully.  
   One of exceptions `Expect Txn `(7,24726)` to be in COMMITTING status but it 
is in COMMITTED status` is resulted by race condition.
   
   ### Modifications
   - fix the race condition to avoid throwing exceptions like `Expect Txn 
`(7,24726)` to be in COMMITTING status but it is in COMMITTED status` .
   - persist txnMeta for `transactionTimeout` to avoid `TransactionNotFound`.
   
   ### Verifying this change
   
   - [x] Make sure that the change passes the CI checks.
   
   *(Please pick either of the following options)*
   
   This change is a trivial rework / code cleanup without any test coverage.
   
   ### Does this pull request potentially affect one of the following parts:
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   *If the box was checked, please highlight the changes*
   
   - [ ] Dependencies (add or upgrade a dependency)
   - [ ] The public API
   - [ ] The schema
   - [ ] The default values of configurations
   - [ ] The threading model
   - [ ] The binary protocol
   - [ ] The admin CLI options
   - [ ] The metrics
   - [ ] Anything that affects deployment
   - [ ] The REST endpoints
   
   ### Documentation
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   - [ ] `doc` <!-- Your PR contains doc changes. -->
   - [ ] `doc-required` <!-- Your PR changes impact docs and you will update 
later -->
   - [x] `doc-not-needed` <!-- Your PR changes do not impact docs -->
   - [ ] `doc-complete` <!-- Docs have been already added -->
   
   ### Matching PR in forked repository
   
   PR in forked repository: https://github.com/thetumbled/pulsar/pull/15
   
   


-- 
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]

Reply via email to