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 caseView on GitHub (pinned to 86d9c8fc54)
Solutions
- Upgrade the iceberg-delta module to a version supporting the action type
- Exclude/skip the unsupported version range, or re-run migration from a full snapshot
- 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
- Keep iceberg-delta and Delta Standalone versions up to date
- Avoid unsupported Delta operations (new writer features) in tables under incremental migration
- Fall back to full snapshot migration when a version log contains unsupported actions
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
- Delta Lake table at %s contains no constructable snapshot
- Unexpected action type for Delta Lake: %s
- AboveMax has no comparator
- BelowMin has no value
- BelowMin has no comparator
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/2e20abab02cf30df.
Report an issue: GitHub.