This is an automated email from the ASF dual-hosted git repository. github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/release/v1.2/pr-7104-a9fa9bc091e2a8a3861c0d05586c0ab5c5bece8d in repository https://gitbox.apache.org/repos/asf/texera.git
commit d3915afe1c81e9d591bba40ffc002a072c9965f2 Author: Yicong Huang <[email protected]> AuthorDate: Thu Jul 30 03:40:32 2026 -0400 fix(amber, v1.2): surface real cause when output port schema is unavailable (#7104) ### What changes were proposed in this PR? Backport of #5784 to `release/v1.2`, cherry-picked from 6433e713a08606eb952581828e8f9c360a763013. Follows the Direct Backport Push convention; opened as a PR (rather than a direct push) as part of a backport-coverage audit for fixes merged to `main` since early June that were never labeled for backport. ### Any related issues, documentation, discussions? Backport of #5784. Originally linked #3546. ### How was this PR tested? Release-branch CI runs once the conflicts are resolved and this PR is marked ready for review. The cherry-pick **conflicted** and was committed with conflict markers. ### Was this PR authored or co-authored using generative AI tooling? Yes — backport prepared with Claude Code (mechanical cherry-pick; conflicts left as markers for the original author to resolve; the change itself is #5784 by its original author). Co-authored-by: Tanishq Gandhi <[email protected]> --- .../scheduling/RegionExecutionCoordinator.scala | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/amber/src/main/scala/org/apache/texera/amber/engine/architecture/scheduling/RegionExecutionCoordinator.scala b/amber/src/main/scala/org/apache/texera/amber/engine/architecture/scheduling/RegionExecutionCoordinator.scala index 510893e82c..9e30b11e92 100644 --- a/amber/src/main/scala/org/apache/texera/amber/engine/architecture/scheduling/RegionExecutionCoordinator.scala +++ b/amber/src/main/scala/org/apache/texera/amber/engine/architecture/scheduling/RegionExecutionCoordinator.scala @@ -609,10 +609,20 @@ class RegionExecutionCoordinator( val portBaseURI = portConfig.storageURIBase val resultURI = VFSURIFactory.resultURI(portBaseURI) val stateURI = VFSURIFactory.stateURI(portBaseURI) - val schemaOptional = - region.getOperator(outputPortId.opId).outputPorts(outputPortId.portId)._3 val schema = - schemaOptional.getOrElse(throw new IllegalStateException("Schema is missing")) + region.getOperator(outputPortId.opId).outputPorts(outputPortId.portId)._3 match { + case Right(resolvedSchema) => resolvedSchema + case Left(cause) => + // The output port schema failed to resolve (e.g. a dataset the workflow reads is not + // shared with the running user, making its file and inferred schema unavailable). + // Surface the underlying cause instead of a generic "Schema is missing" (issue #3546). + val reason = Option(cause.getMessage).getOrElse(cause.toString) + logger.error(s"Output schema unavailable for port $outputPortId", cause) + throw new IllegalStateException( + s"Failed to resolve the output schema: $reason", + cause + ) + } DocumentFactory.createDocument(resultURI, schema) DocumentFactory.createDocument(stateURI, State.schema) if (!isRestart) {
