It is actually low priority, no issue can arise from that aside from waste of resources
Medium: CORRUPTED_DATA at commit is treated as retryable
Impact: All-parts-done with empty paths_in_destination throws CORRUPTED_DATA, which is not in isNonRetryableExportError. Plain tryCommit leaves PENDING and retries every tick until task_timeout_seconds.
Anchor: MergeTreePartitionExportScheduler::tryCommit + ExportPartitionUtils::isNonRetryableExportError
Trigger: Descriptor with all parts done but empty exported paths, then commit.
Why defect: Local corruption cannot succeed by retrying; should fail closed.
Fix direction (short): Treat CORRUPTED_DATA (at least on commit) as non-retryable → FAILED.
Regression test direction (short): Force empty paths at commit; expect FAILED, not prolonged PENDING.
It is actually low priority, no issue can arise from that aside from waste of resources
Medium:
CORRUPTED_DATAat commit is treated as retryableImpact: All-parts-done with empty
paths_in_destinationthrowsCORRUPTED_DATA, which is not inisNonRetryableExportError. PlaintryCommitleavesPENDINGand retries every tick untiltask_timeout_seconds.Anchor:
MergeTreePartitionExportScheduler::tryCommit+ExportPartitionUtils::isNonRetryableExportErrorTrigger: Descriptor with all parts
donebut empty exported paths, then commit.Why defect: Local corruption cannot succeed by retrying; should fail closed.
Fix direction (short): Treat
CORRUPTED_DATA(at least on commit) as non-retryable →FAILED.Regression test direction (short): Force empty paths at commit; expect
FAILED, not prolongedPENDING.