{"record":{"id":"932fa5692e17e0b9","repo":"apache/iceberg","slug":"unsupported-status-getresult-status","errorCode":null,"errorMessage":"Unsupported status: {getResult.status()}","messagePattern":"Unsupported status: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/source/enumerator/AbstractIcebergEnumerator.java","lineNumber":156,"sourceCode":"      GetSplitResult getResult = assigner.getNext(hostname);\n      if (getResult.status() == GetSplitResult.Status.AVAILABLE) {\n        LOG.info(\"Assign split to subtask {}: {}\", awaitingSubtask, getResult.split());\n        enumeratorContext.assignSplit(getResult.split(), awaitingSubtask);\n        awaitingReader.remove();\n      } else if (getResult.status() == GetSplitResult.Status.CONSTRAINED) {\n        getAvailableFutureIfNeeded();\n        break;\n      } else if (getResult.status() == GetSplitResult.Status.UNAVAILABLE) {\n        if (shouldWaitForMoreSplits()) {\n          getAvailableFutureIfNeeded();\n          break;\n        } else {\n          LOG.info(\"No more splits available for subtask {}\", awaitingSubtask);\n          enumeratorContext.signalNoMoreSplits(awaitingSubtask);\n          awaitingReader.remove();\n        }\n      } else {\n        throw new IllegalArgumentException(\"Unsupported status: \" + getResult.status());\n      }\n    }\n  }\n\n  /** return true if enumerator should wait for splits like in the continuous enumerator case */\n  protected abstract boolean shouldWaitForMoreSplits();\n\n  private synchronized void getAvailableFutureIfNeeded() {\n    if (availableFuture.get() != null) {\n      return;\n    }\n\n    CompletableFuture<Void> future =\n        assigner\n            .isAvailable()\n            .thenAccept(\n                ignore ->\n                    // Must run assignSplits in coordinator thread","sourceCodeStart":138,"sourceCodeEnd":174,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/source/enumerator/AbstractIcebergEnumerator.java#L138-L174","documentation":"Thrown by AbstractIcebergEnumerator.assignSplitsData when the SplitResult from split assignment returns a status the enumerator does not recognize. The enumerator only expects the known Flink SourceEvents split-result statuses; anything else indicates an internal incompatibility between the source reader and enumerator (typically a mixed Flink/Iceberg version deployment).","triggerScenarios":"assignSplitsData is called from handleSourceEvent, addSplitsBack, or a pending assignment future, and getResult.status() is a value outside the expected enum/status set.","commonSituations":"Running an Iceberg Flink source jar whose SplitResult status constants don't match the Flink runtime version; upgrading Flink or the Iceberg connector on only some TaskManagers so serialized events carry unknown statuses.","solutions":["Ensure all TaskManagers and the job jar use the same Iceberg connector and Flink version; redeploy the whole cluster consistently.","Clear savepoints/checkpoints created by an older connector version and restart from a fresh state.","Upgrade the Iceberg flink-runtime jar to match the Flink minor version (e.g. iceberg-flink-runtime-1.20 for Flink 1.20).","If reproducible, capture getResult.status() value and file an issue against the connector."],"exampleFix":"// before: mixed jars\nclasspath: iceberg-flink-runtime-1.19.jar with Flink 1.20\n// after: aligned versions\nclasspath: iceberg-flink-runtime-1.20.jar with Flink 1.20","handlingStrategy":"validation","validationCode":"// before constructing/enabling the source, verify version alignment\nString flink = org.apache.flink.util.FlinkVersion\n    .fromVersionString(env.getConfiguration().getString(\"pipeline.version\", \"\"));\n// log connector build version\nLOGGER.info(\"Iceberg connector: {}\", IcebergBuild.fullVersion());","typeGuard":null,"tryCatchPattern":"try { enumerator.assignSplitsData(...); } catch (IllegalArgumentException e) { /* fail fast and redeploy with aligned versions */ }","preventionTips":["Pin the iceberg-flink-runtime version to the exact Flink minor version in build/CI.","Deploy identical jars to JobManager and all TaskManagers.","Test savepoint restore across the exact version pair you plan to upgrade to."],"tags":["flink","enumerator","version-mismatch"],"backgroundTag":"invalid-enum-value","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"}