priyeshkaratha opened a new pull request, #11307:
URL: https://github.com/apache/ozone/pull/11307

   ## What changes were proposed in this pull request?
   
   `SCMDeletedBlockTransactionStatusManager.commitTransactions` decides whether 
to purge a delete-block transaction from the log using a replica-set read taken 
at that decision point, but the durable removal (`removeTransactions`) happens 
later, after the rest of the ACK batch has been processed. If 
`ReplicationManager` copies the container to a new datanode in that window, the 
new replica never receives or acknowledges the deletion. SCM has no mechanism to
   reconcile a replica's delete-transaction progress against the container, so 
once the transaction is purged, that replica's blocks are never deleted and it 
may cause a permanent space leak.
   
   So we have to defer clearing `transactionToDNsCommitMap` / 
`transactionToRetryCountMap` for a transaction that looks purge-eligible, and 
re-validate its replica set against `ContainerManager` immediately before the 
durable removal at the end of the batch. If a replica appears that isn't in the 
committed-DN set, the purge is skipped and the transaction stays
   in the log, so normal resend logic (`getTransactions` 
/`checkInadequateReplica`) picks it up and delivers the delete command to the 
new replica once it is healthy.
   
   ## What is the link to the Apache JIRA
   
   HDDS-16144
   
   ## How was this patch tested?
   
   Added testcase to validate
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to