[
https://issues.apache.org/jira/browse/HDDS-15038?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HDDS-15038:
----------------------------------
Labels: pull-request-available (was: )
> Change cleanupFailedImport() to delete chunks before metadata to avoid
> chunks-only residual state
> -------------------------------------------------------------------------------------------------
>
> Key: HDDS-15038
> URL: https://issues.apache.org/jira/browse/HDDS-15038
> Project: Apache Ozone
> Issue Type: Task
> Components: Ozone Datanode
> Affects Versions: 2.1.0
> Reporter: Devesh Kumar Singh
> Assignee: Devesh Kumar Singh
> Priority: Major
> Labels: pull-request-available
>
> *Description:*
> cleanupFailedImport() currently deletes the container metadata directory
> before deleting the chunks directory. If cleanup is interrupted or partially
> fails between those two steps, the resulting residual on-disk state can be
> chunks/ present with metadata/ missing.
> *Current behavior:*
> cleanupFailedImport() performs cleanup in this order:
> - remove container from DB if schema v3
> - delete metadata/
> - delete chunks/
> - delete parent container directory
> *Why this is a problem:*
> A chunks-only residual state is the more dangerous partial state for later
> container handling because metadata-based delete / identification paths
> depend on the metadata path being present. Leaving metadata/ intact is not
> ideal either, but it is more diagnosable and more recoverable than leaving a
> chunks-only directory behind.
> This ticket is intended as a hardening fix. It does not claim to be the
> sole confirmed root cause of the reviewed case, but it reduces the likelihood
> of creating the most problematic partial residual state when import cleanup
> fails midway.
> *Proposed fix:*
> - reverse the directory cleanup order inside cleanupFailedImport()
> - delete chunks/ before metadata/
> - keep the final parent directory cleanup step unchanged
> Suggested target order:
> - remove container DB state if needed
> - delete chunks/
> - delete metadata/
> - delete parent container directory
> Acceptance criteria:
> - cleanupFailedImport() deletes chunks/ before metadata/
> - if cleanup fails midway, the remaining partial on-disk state
> preferentially preserves metadata rather than leaving chunks-only
> - add a focused test that injects cleanup failure between child-directory
> deletions and verifies the resulting residual layout
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]