[
https://issues.apache.org/jira/browse/HDDS-15997?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chi-Hsuan Huang updated HDDS-15997:
-----------------------------------
Status: Patch Available (was: Open)
> QuotaRepairTask scan can hang or report partial counts on worker failure or
> interrupt
> -------------------------------------------------------------------------------------
>
> Key: HDDS-15997
> URL: https://issues.apache.org/jira/browse/HDDS-15997
> Project: Apache Ozone
> Issue Type: Bug
> Reporter: Chi-Hsuan Huang
> Assignee: Chi-Hsuan Huang
> Priority: Major
> Labels: pull-request-available
>
> QuotaRepairTask scans each table with one producer thread feeding batches to
> worker threads through a bounded queue. Two failure paths are broken:
> # If all worker threads die with an exception, the producer blocks forever on
> queue.put() because nobody drains the queue. The repair task hangs and the
> IN_PROGRESS flag is never cleared, so no further repair can be triggered.
> # InterruptedException is swallowed: both producer and workers restore the
> interrupt flag and return normally, so repairCount treats partially scanned
> counts as a successful result and submits a wrong quota diff through Ratis.
> In addition, on failure the scan must still await all worker threads before
> returning, because the DB checkpoint is removed in a finally block and no
> worker may outlive it.
> These paths are currently hard to hit because the per-record work never
> touches the DB, but HDDS-15835 (counting incomplete MPU parts) adds a
> consumer that reads RocksDB per record, making worker failure realistic. This
> change is a prerequisite for HDDS-15835.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]