congbobo184 opened a new pull request #8881:
URL: https://github.com/apache/pulsar/pull/8881


   ## Motivation
   in order to handle pending ack persistent.
   
   ## implement
   1. add the transaction pending ack store, it will handle the pending ack 
metadata store.
   2. when the sub unload, we will replay the pendingAckHandle.
   3. we use one manageLedger to store the pending ack metadata by one sub , 
and replay by this managedLedger open cursor.
   4. when we commit or abort the transaction, we will append the marker to the 
pendingAckStore then we will modify state memory in pendingAckHandle
   4. we also modify the in memory state when append fail, because we don't 
know the persistent state, when we replay it, it will produce the wrong 
operation. so we append fail, we should wait tc time out or client abort this 
transaction.
   5. we use a timer task to delete the metadata, we judge whether the position 
of ack stored in metadata is less than the markDeletePosition of sub. when we 
read commit or abort marker, we can delete directly.
   ### Verifying this change
   Add the tests for it
   
   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)
   
   


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

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to