apache/iceberg · error · ValidationException

The action %s's is unsupported

Error message

The action %s's is unsupported

What it means

ValidationException thrown when a Delta log version contains an action type other than AddFile or RemoveFile, which the Delta-to-Iceberg migration does not support converting into Iceberg data file operations.

Source

Thrown at delta-lake/src/main/java/org/apache/iceberg/delta/BaseSnapshotDeltaLakeTableAction.java:308

      VersionLog versionLog,
      Transaction transaction,
      ImmutableSet.Builder<String> migratedDataFilesBuilder) {
    // Only need actions related to data change: AddFile and RemoveFile
    List<Action> dataFileActions =
        versionLog.getActions().stream()
            .filter(action -> action instanceof AddFile || action instanceof RemoveFile)
            .collect(Collectors.toList());

    List<DataFile> filesToAdd = Lists.newArrayList();
    List<DataFile> filesToRemove = Lists.newArrayList();
    for (Action action : dataFileActions) {
      DataFile dataFile = buildDataFileFromAction(action, transaction.table());
      if (action instanceof AddFile) {
        filesToAdd.add(dataFile);
      } else if (action instanceof RemoveFile) {
        filesToRemove.add(dataFile);
      } else {
        throw new ValidationException(
            "The action %s's is unsupported", action.getClass().getSimpleName());
      }
      migratedDataFilesBuilder.add(dataFile.location());
    }

    if (!filesToAdd.isEmpty() && !filesToRemove.isEmpty()) {
      // OverwriteFiles case
      OverwriteFiles overwriteFiles = transaction.newOverwrite();
      filesToAdd.forEach(overwriteFiles::addFile);
      filesToRemove.forEach(overwriteFiles::deleteFile);
      overwriteFiles.commit();
    } else if (!filesToAdd.isEmpty()) {
      // AppendFiles case
      AppendFiles appendFiles = transaction.newAppend();
      filesToAdd.forEach(appendFiles::appendFile);
      appendFiles.commit();
    } else if (!filesToRemove.isEmpty()) {
      // DeleteFiles case

View on GitHub (pinned to 86d9c8fc54)

Solutions

  1. Upgrade the iceberg-delta module to a version supporting the action type
  2. Exclude/skip the unsupported version range, or re-run migration from a full snapshot
  3. Avoid operations generating unsupported actions between incremental snapshot versions

Example fix

null
Defensive patterns

Strategy: try-catch

Try / catch

try { action.execute(); } catch (ValidationException e) { /* unsupported Delta action: fall back to full re-snapshot */ }

Prevention

When it happens

Trigger: commitDeltaVersionLogToIcebergTransaction encounters a Delta action (e.g. metadata, protocol, txn or newer action types) in a version log where only AddFile/RemoveFile are expected.

Common situations: Delta tables using features the migration doesn't handle (e.g. checkpoint-only changes, OPTIMIZE/clone metadata actions in the chosen version range), newer Delta writer versions introducing new action types.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12). Data as JSON: /api/errors/2e20abab02cf30df. Report an issue: GitHub.