{"record":{"id":"a48c4311c5c96df3","repo":"apache/iceberg","slug":"failed-to-delete-uncommitted-dv-for-table-ta-a48c43","errorCode":null,"errorMessage":"Failed to delete uncommitted DV {} for table {} task {}","messagePattern":"Failed to delete uncommitted DV (.+?) for table (.+?) task (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"flink/v2.2/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/EqualityConvertCommitter.java","lineNumber":281,"sourceCode":"    return removedEqDeleteNumCounter.getCount();\n  }\n\n  /**\n   * Deletes the DVs this cycle wrote but did not commit (abort or definite commit failure). Only\n   * the newly written DVs are removed; rewritten DVs remain referenced on the target branch. Best\n   * effort: a delete failure is logged, not propagated, so it never masks the original error.\n   */\n  private void deleteUncommittedDVs() {\n    for (DVWriteResult result : bufferedResults) {\n      if (result.isAbort()) {\n        continue;\n      }\n\n      for (DeleteFile dvFile : result.dvFiles()) {\n        try {\n          table.io().deleteFile(dvFile.location());\n        } catch (RuntimeException e) {\n          LOG.warn(\n              \"Failed to delete uncommitted DV {} for table {} task {}\",\n              dvFile.location(),\n              tableName,\n              taskName,\n              e);\n        }\n      }\n    }\n  }\n\n  private RowDelta buildRowDelta(\n      List<DataFile> dataFiles, List<DeleteFile> allDvFiles, List<DeleteFile> allRewrittenDvFiles) {\n    RowDelta rowDelta = table.newRowDelta();\n\n    // Fail the commit on external target-branch activity since the planner's snapshot. The next\n    // trigger detects the change and reindexes.\n    if (planResult.mainSnapshotId() != null) {\n      rowDelta.validateFromSnapshot(planResult.mainSnapshotId());","sourceCodeStart":263,"sourceCodeEnd":299,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/flink/v2.2/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/EqualityConvertCommitter.java#L263-L299","documentation":"This warning comes from EqualityConvertCommitter.deleteUncommittedDVs, which cleans up deletion-vector (DV) files produced by the equality-to-DV conversion task when they were never committed. When table.io().deleteFile() throws a RuntimeException for one of these orphan DV files, the committer logs the file location, table, and task name and continues cleaning the remaining files rather than aborting. Leftover files become potential orphans, recoverable by the RemoveOrphanFiles action.","triggerScenarios":"Raised in deleteUncommittedDVs (called from commitIfNeeded) when table.io().deleteFile(dvFile.location()) throws RuntimeException for a DV file written by a task whose commit never landed — e.g. after an abort/cleanup following a failed checkpoint.","commonSituations":"DV file already removed by a concurrent orphan-files cleanup; object-store permission errors on the data prefix; transient S3/GCS deletion errors; FileIO misconfiguration on the committer TaskManager.","solutions":["Treat as mostly benign: uncommitted DVs are garbage; run the DeleteOrphanFiles action to remove leftovers","Check the nested RuntimeException for permissions or object-store throttling and fix credentials/ACLs","Ensure FileIO on the committer has delete permissions for the table's data location","If a specific file consistently fails, verify it exists and that no concurrent job holds locks on it"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Library catches internally; run orphan cleanup periodically as the safety net\n// DeleteOrphanFiles action with olderThan > checkpoint interval","preventionTips":["Grant the committer's FileIO delete permission on the data location","Schedule RemoveOrphanFiles regularly to sweep uncommitted DV files","Check nested RuntimeException for throttling; back off object-store request rates"],"tags":["flink","deletion-vector","cleanup","file-deletion"],"backgroundTag":"file-delete-failed","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}