[ 
https://issues.apache.org/jira/browse/HDDS-15661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Priyesh K updated HDDS-15661:
-----------------------------
    Epic Link: HDDS-15233

> DN reports inflated pendingDeletionBytes on out-of-order delete transaction 
> replay
> ----------------------------------------------------------------------------------
>
>                 Key: HDDS-15661
>                 URL: https://issues.apache.org/jira/browse/HDDS-15661
>             Project: Apache Ozone
>          Issue Type: Bug
>          Components: Ozone Datanode
>            Reporter: Priyesh K
>            Assignee: Priyesh K
>            Priority: Major
>
> When a datanode (DN) receives a {{DeleteBlocksCommand}} from SCM, it 
> processes each {{DeletedBlocksTransaction}} through 
> {{{}markBlocksForDeletionTransaction{}}}. Before writing to the 
> delete-transaction table, the handler calls {{isDuplicateTransaction()}} to 
> skip already-seen transactions. However, {{isDuplicateTransaction}} only 
> guards against the exact-equal case ({{{}txID == deleteTransactionId{}}}). It 
> deliberately passes through out-of-order replays where {{{}txID < 
> deleteTransactionId{}}}, because those may arrive legitimately.
> In this out-of-order replay scenario, the transaction may already exist in 
> the RocksDB delete-transaction table from an earlier command. The 
> {{marker.apply()}} PUT is idempotent, so the DB write is harmless. But the 
> code unconditionally incremented {{pendingDeletionBlocks}} and 
> {{pendingDeletionBytes}} by the full block count of the transaction 
> regardless of whether it was already counted. This caused the DN to report 
> inflated {{pendingDeletionBytes}} for the container, which in turn led to 
> incorrect space accounting observed in Recon and SCM.
> For out of order one we may need to do a db check to confirm whether its 
> already present delete_txn table. It may introduce a db read in the flow.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to