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]