{"record":{"id":"cb93261fde89128c","repo":"apache/iceberg","slug":"unable-to-read-delta-manifests-for-table-at-che-cb9326","errorCode":null,"errorMessage":"Unable to read delta manifests for table {} at checkpoint {}","messagePattern":"Unable to read delta manifests for table (.+?) at checkpoint (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"flink/v2.2/flink/src/main/java/org/apache/iceberg/flink/sink/CommittableToTableChangeConverter.java","lineNumber":91,"sourceCode":"      CommittableMessage<IcebergCommittable> value, Context ctx, Collector<TableChange> out)\n      throws Exception {\n    if (value instanceof CommittableWithLineage) {\n      IcebergCommittable committable =\n          ((CommittableWithLineage<IcebergCommittable>) value).getCommittable();\n\n      if (committable == null || committable.manifest().length == 0) {\n        return;\n      }\n\n      DeltaManifests deltaManifests;\n      WriteResult writeResult;\n      try {\n        deltaManifests =\n            SimpleVersionedSerialization.readVersionAndDeSerialize(\n                DeltaManifestsSerializer.INSTANCE, committable.manifest());\n        writeResult = FlinkManifestUtil.readCompletedFiles(deltaManifests, io, specs);\n      } catch (Exception e) {\n        LOG.warn(\n            \"Unable to read delta manifests for table {} at checkpoint {}\",\n            tableName,\n            committable.checkpointId(),\n            e);\n        return;\n      }\n\n      TableChange tableChange =\n          new TableChange(\n              Arrays.asList(writeResult.dataFiles()), Arrays.asList(writeResult.deleteFiles()));\n      out.collect(tableChange);\n      FlinkManifestUtil.deleteCommittedManifests(\n          tableName, io, deltaManifests.manifests(), flinkJobId, committable.checkpointId());\n    }\n  }\n}\n","sourceCodeStart":73,"sourceCodeEnd":108,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/flink/v2.2/flink/src/main/java/org/apache/iceberg/flink/sink/CommittableToTableChangeConverter.java#L73-L108","documentation":"CommittableToTableChangeConverter.processElement deserializes a Flink write committable's DeltaManifests and converts them into a TableChange for the maintenance committer. If reading/decoding the delta manifests or reading the completed files fails, it logs a warning with the table and checkpoint id and returns early — the committable is dropped, so those files' changes are not applied to the table change summary for that checkpoint.","triggerScenarios":"Raised in processElement when SimpleVersionedSerialization.readVersionAndDeSerialize(DeltaManifestsSerializer...) or FlinkManifestUtil.readCompletedFiles throws — corrupted/truncated manifest payload in the committable, serializer version mismatch (e.g. after an Iceberg upgrade restoring from an old savepoint), or unreadable manifest files in FileIO.","commonSituations":"Restoring a job from a savepoint/checkpoint made with a different Iceberg version whose DeltaManifests serialization differs; manifest data files deleted by orphan cleanup before conversion; io misconfiguration preventing manifest reads; corrupted object-store objects.","solutions":["Verify the savepoint/checkpoint was produced by the same (or compatible) Iceberg/Flink sink version; re-run the pipeline writing fresh checkpoints if versions were mixed","Check whether referenced manifest files still exist and that FileIO on this operator can read the table location","Inspect the nested exception; if manifests are corrupted, the affected checkpoint's committable is lost — reconcile via an Iceberg repair or re-write","Avoid running orphan-file deletion with shorter intervals than checkpoint duration so pending manifests are not deleted"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Before upgrading/restoring, verify serializer compatibility\nPreconditions.checkState(\n    DeltaManifestsSerializer.INSTANCE.getVersion() == savedVersion,\n    \"DeltaManifests version mismatch: recheck checkpoint/savepoint compatibility\");","typeGuard":null,"tryCatchPattern":"// The converter swallows the error and returns; detect via logs/metrics\n// grep 'Unable to read delta manifests for table' taskmanager.log","preventionTips":["Restore jobs only from checkpoints/savepoints written by a compatible Iceberg version","Keep orphan-cleanup olderThan greater than the checkpoint interval so pending manifests survive","Ensure FileIO on the committer can read the manifest location","Alert on this log line — dropped committables mean lost change summaries for that checkpoint"],"tags":["flink","serialization","committable","manifests"],"backgroundTag":"protobuf-unmarshal-failed","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}