The GitHub Actions job "Required Checks" on texera.git/xinyuan-loop-feb has 
failed.
Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).

Head commit for run:
620edeb4fc5280c5b6d50580e7e6c5b0f81cd102 / Xinyuan Lin <[email protected]>
fix+test(loop): drop pickle and name-mangled table access from loop state path

Addresses PR #4206 review feedback
(https://github.com/apache/texera/pull/4206#discussion_r3400851484): the
loop state path still (1) read the parent's private field via the mangled
name self._TableOperator__table_data[port] -- silently breaking if
TableOperator is renamed -- and (2) moved the table with pickle
(dumps in LoopStart.produce_state_on_finish, loads in LoopEnd.run_update),
an RCE surface for data that lives in iceberg. (Fixed earlier but lost in
a force-rebase.)

* Add TableOperator._buffered_table(port): inside the class
  self.__table_data resolves via normal name mangling, so subclasses read
  the buffer without the mangled prefix and a rename stays transparent.
  LoopStart.produce_state_on_finish uses it.
* Replace pickle with Apache Arrow IPC (structured, typed, no callable
  payload): new table_to_ipc_bytes / table_from_ipc_bytes in table.py
  (pyarrow.ipc). produce_state_on_finish encodes; run_update decodes.
  Wire shape (bytes in state["table"]) is unchanged; only the format.
* Tests: TestBufferedTableAccessor pins the accessor; the produce-state
  test now asserts the bytes parse as an Arrow IPC stream and round-trip
  back to the same tuples (would fail if pickle returned); the matching-
  branch tests feed Arrow bytes. 14 tests pass.

Verified: 14 loop-operator tests pass; ruff clean. (The 1 failure in
test_tuple.py::test_hash is a pre-existing Windows OSError in tuple.py
hashing, unrelated to this change.)

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

With regards,
GitHub Actions via GitBox

Reply via email to