liangyepianzhou opened a new pull request #12219:
URL: https://github.com/apache/pulsar/pull/12219


   ### Motivation
   In the previous implementation of transactionBuffer, if no transaction 
committed or aborted, TransactionBuffer will not take a snapshot. Even if it is 
a timed task, it will judge whether there has been a transaction committed or 
aborted. If no, the timer will  be skipped.
   **This will have two disadvantages:**
   * If there is no snapshot , maxReadPosition needs to be restored from the 
earliest when the broker restarts
   * If there is no snapShot,  transaction data offload will not get an 
accurate reference
   
   ### Modifications
   We hope that every modification of maxReadPosition will modify 
changeMaxReadPositionAndAddAbortTimes too, so that takeSnapshotByTimeout can 
save the latest modification of maxReadPosition in time.
   
   Since it always starts at takeSnapshot and the initial value of 
maxReadPosition is earliest, when persistentTopic get the snapshot,  don't need 
to wait for TransactionBufferReady, it can return maxReadPosition directly. 
Because we know that this must not be a value that will cause an error.
   ### Verifying this change
   
   - [ ] Make sure that the change passes the CI checks.
   
   This change added tests :
   Added unit test testTakeSnapshot() in TransactionTest.
   
   ### 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): (yes / no)
     - The public API: (yes / no)
     - The schema: (yes / no / don't know)
     - The default values of configurations: (yes / no)
     - The wire protocol: (yes / no)
     - The rest endpoints: (yes / no)
     - The admin cli options: (yes / no)
     - Anything that affects deployment: (yes / no / don't know)
   
   ### Documentation
   
   Check the box below and label this PR (if you have committer privilege).
   
   Need to update docs? 
   
   - [ ] doc-required 
     
     (If you need help on updating docs, create a doc issue)
     
   - [ ] no-need-doc 
     
     (Please explain why)
     
   - [ ] doc 
     
     (If this PR contains doc changes)
   
   
   


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