{"record":{"id":"26ba2526df1217f4","repo":"apache/iceberg","slug":"failed-to-create-manifest-writer-for-path-s","errorCode":null,"errorMessage":"Failed to create manifest writer for path: %s","messagePattern":"Failed to create manifest writer for path: (.+?)","errorType":"exception","errorClass":"RuntimeIOException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/apache/iceberg/ManifestWriter.java","lineNumber":306,"sourceCode":"\n    @Override\n    protected FileAppender<ManifestEntry<DataFile>> newAppender(\n        PartitionSpec spec, OutputFile file) {\n      Schema manifestSchema = V4Metadata.entrySchema(spec.partitionType());\n      try {\n        return InternalData.write(format(), file)\n            .schema(manifestSchema)\n            .named(\"manifest_entry\")\n            .meta(\"schema\", SchemaParser.toJson(spec.schema()))\n            .meta(\"partition-spec\", PartitionSpecParser.toJsonFields(spec))\n            .meta(\"partition-spec-id\", String.valueOf(spec.specId()))\n            .meta(\"format-version\", \"4\")\n            .meta(\"content\", \"data\")\n            .set(writerProperties())\n            .overwrite()\n            .build();\n      } catch (IOException e) {\n        throw new RuntimeIOException(\n            e, \"Failed to create manifest writer for path: %s\", file.location());\n      }\n    }\n  }\n\n  static class V4DeleteWriter extends ManifestWriter<DeleteFile> {\n    private final V4Metadata.ManifestEntryWrapper<DeleteFile> entryWrapper;\n\n    V4DeleteWriter(\n        PartitionSpec spec,\n        EncryptedOutputFile file,\n        Long snapshotId,\n        Map<String, String> writerProperties) {\n      super(spec, file, snapshotId, null, writerProperties);\n      this.entryWrapper = new V4Metadata.ManifestEntryWrapper<>(snapshotId, spec.partitionType());\n    }\n\n    @Override","sourceCodeStart":288,"sourceCodeEnd":324,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/core/src/main/java/org/apache/iceberg/ManifestWriter.java#L288-L324","documentation":"Thrown when the Avro manifest writer appender for a format-version-4 data manifest cannot be created at the output location; the IOException is wrapped as RuntimeIOException. Creating the manifest writer is part of every snapshot commit that writes data manifests.","triggerScenarios":"ManifestWriter.V4DataWriter.newAppender fails while opening the output file via FileIO when writing a format-version 4 data manifest.","commonSituations":"Cloud storage auth failures, missing bucket/prefix permissions, transient network errors during commits, misconfigured FileIO in executors, disk quota exceeded on local FS.","solutions":["Examine the wrapped IOException cause for the concrete storage error.","Verify FileIO provider configuration (impl, credentials, endpoint) used by the table.","Confirm write permission and existence of the target location/bucket.","Retry the commit; use commit retries for transient object-store faults."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// pre-flight write probe on the metadata prefix\ntry (var out = table.io().newOutputFile(probeManifestPath).createOrOverwrite()) {\n  // writable\n} catch (IOException e) {\n  throw new IllegalStateException(\"Cannot write manifests: \" + probeManifestPath, e);\n}","typeGuard":null,"tryCatchPattern":"try {\n  snapshotProducer.commit();\n} catch (RuntimeIOException e) {\n  logger.error(\"v4 manifest write failed: {}\", e.getCause(), e);\n  // fix FileIO/credentials then retry\n}","preventionTips":["Pre-create and ACL the metadata prefix for format-v4 tables","Distribute provider credentials to executors","Retry commits on transient storage faults","Monitor token expiry during long jobs"],"tags":["io","filesystem","avro","v4"],"backgroundTag":"file-write-failed","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}