{"record":{"id":"cbb1af64d59132aa","repo":"apache/iceberg","slug":"failed-to-create-new-equality-delete-writer","errorCode":null,"errorMessage":"Failed to create new equality delete writer","messagePattern":"Failed to create new equality delete writer","errorType":"exception","errorClass":"UncheckedIOException","httpStatus":null,"severity":"error","filePath":"data/src/main/java/org/apache/iceberg/data/RegistryBasedFileWriterFactory.java","lineNumber":154,"sourceCode":"\n    try {\n      FileWriterBuilder<EqualityDeleteWriter<T>, S> builder =\n          FormatModelRegistry.equalityDeleteWriteBuilder(deleteFileFormat, inputType, file);\n      return builder\n          .setAll(properties)\n          .setAll(writerProperties)\n          .metricsConfig(metricsConfig)\n          .schema(equalityDeleteRowSchema)\n          .engineSchema(equalityDeleteInputSchema())\n          .equalityFieldIds(equalityFieldIds)\n          .spec(spec)\n          .partition(partition)\n          .keyMetadata(keyMetadata)\n          .sortOrder(equalityDeleteSortOrder)\n          .overwrite()\n          .build();\n    } catch (IOException e) {\n      throw new UncheckedIOException(\"Failed to create new equality delete writer\", e);\n    }\n  }\n\n  @Override\n  public PositionDeleteWriter<T> newPositionDeleteWriter(\n      EncryptedOutputFile file, PartitionSpec spec, StructLike partition) {\n    EncryptionKeyMetadata keyMetadata = file.keyMetadata();\n    Map<String, String> properties = table != null ? table.properties() : ImmutableMap.of();\n    MetricsConfig metricsConfig = MetricsConfig.forPositionDelete();\n\n    try {\n      FileWriterBuilder<PositionDeleteWriter<T>, ?> builder =\n          FormatModelRegistry.positionDeleteWriteBuilder(deleteFileFormat, file);\n      return builder\n          .setAll(properties)\n          .setAll(writerProperties)\n          .metricsConfig(metricsConfig)\n          .spec(spec)","sourceCodeStart":136,"sourceCodeEnd":172,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/data/src/main/java/org/apache/iceberg/data/RegistryBasedFileWriterFactory.java#L136-L172","documentation":"RegistryBasedFileWriterFactory.newEqualityDeleteWriter builds an EqualityDeleteWriter through the writer registry; an IOException while creating/opening the equality delete output file is wrapped in UncheckedIOException with this message.","triggerScenarios":"Calling newEqualityDeleteWriter(file, spec, partition) when opening the EncryptedOutputFile fails or no registered equality-delete writer exists for the configured format.","commonSituations":"Custom writer registries missing equality-delete writer mappings; storage auth/path failures on the delete-file output location; format unsupported for equality deletes.","solutions":["Read the wrapped IOException cause to identify the real open failure.","Ensure the registry has an EqualityDeleteWriter factory registered for the target format.","Verify write credentials and output path for delete files.","Match the delete format to one supported by your writer registry (e.g. parquet)."],"exampleFix":"// before: only data writers registered\n// after: register equality delete writer factory too\nregistry.addFactory(Parquet.EqualityDeleteWriter.class, new ParquetEqualityDeleteWriterFactory());","handlingStrategy":"try-catch","validationCode":"// ensure an equality delete writer factory exists for the format\nif (registry.factory(Parquet.EqualityDeleteWriter.class) == null) {\n  throw new IllegalStateException(\"No equality delete writer registered\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  EqualityDeleteWriter<T> w = factory.newEqualityDeleteWriter(file, spec, partition);\n} catch (UncheckedIOException e) {\n  throw new RuntimeException(\"Equality delete writer open failed: \" + e.getCause().getMessage(), e.getCause());\n}","preventionTips":["Register equality-delete writer factories alongside data writer factories.","Pre-flight check the delete-file output directory for write access.","Keep format choices consistent across data and delete writers."],"tags":["io","writer","equality-deletes","unchecked-ioexception","file-write"],"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"}