The GitHub Actions job "Backport Auto Label" on texera.git/loop-table-by-uri 
has failed.
Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).

Head commit for run:
9204ed1848258ac0d7c7b3d20bbafe740084cb01 / Xinyuan Lin <[email protected]>
refactor(amber): read the loop input table from its materialization instead of 
shipping it in state

The loop's input table used to ride INSIDE the State content: LoopStart
encoded its buffered input as Arrow IPC bytes, base64'd inside the JSON
content, and that payload was re-written and re-read at every loop-body
hop, every iteration (~33% base64 bloat, JSON-column size limits, and a
second, divergent Arrow codec via pa.Table.from_pandas inference).

That data already exists: in the fully-materialized mode loops require,
the Loop Start's input-port materialization holds exactly the loop's
input table for the whole loop (Loop Start re-reads it every iteration;
the back-edge truncates only the state doc at the same base URI, never
the result doc). So ship the port's BASE URI in the setup config and
derive both addresses from it:

- proto: InitializeExecutorRequest.loopStartStateUris ->
  loopStartPortUris (field 4 unchanged); the value is now the base URI.
  WorkflowExecutionManager ships storagePairs.head._1 directly.
- back-edge write: main_loop derives state_uri(base) (unchanged
  behavior, one derivation later).
- table read: on the matching consume, MainLoop reads result_uri(base)
  and injects the table into the LoopEnd via a new runtime-only
  attach_loop_table hook; a read failure is reported like a UDF error
  (report_exception) instead of silently dropping the consume.
- LoopStartOperator.produce_state_on_finish emits only the user loop
  variables (the reserved-`table` collision raise stays: a user var
  named `table` would now be silently shadowed by the injected table);
  run_update uses the attached table; the "consumed" marker
  (_loop_table) is still set only by a successful update, so
  condition()'s short-circuit semantics are unchanged.
- table_to_ipc_bytes / table_from_ipc_bytes and the now-unused
  TableOperator._buffered_table accessor are deleted.

Nested loops keep working by construction: the inner Loop Start's map
entry points at the outer Loop Start's output port, whose result doc is
recreated per OUTER iteration but persists across inner iterations (the
jump rewinds to the inner level only).

Tests updated across test_loop_operators (attach-based flow, plus new
pins: attach alone does not mark the loop consumed; run_update fails
loud when no table was attached; produced state carries no table),
test_main_loop (base-URI derivation for the back-edge write, consume
injects the read table), test_initialize_executor_handler (renamed
field), and the Scala ctor sites. The four LoopIntegrationSpec e2e
cases exercise the full path in CI.

Report URL: https://github.com/apache/texera/actions/runs/30336805243

With regards,
GitHub Actions via GitBox

Reply via email to