dpol1 opened a new pull request, #8790:
URL: https://github.com/apache/storm/pull/8790
## What is the purpose of the change
- A windowed bolt configured with a late tuple stream
(`withLateTupleStream`) fails to deliver late tuples across worker
boundaries. The emit wraps the input `Tuple` as a value, and `TupleImpl`
holds a `GeneralTopologyContext` that Kryo cannot serialize, so the late stream
breaks as soon as it targets a task on another worker (works in local mode
only).
- This adds `DetachedTuple`, a serializable snapshot of a `Tuple` (source
component/task/stream, fields, values, no context). `WindowedBoltExecutor` now
emits a `DetachedTuple` on the late stream instead of the raw `TupleImpl`.
Note: the value in `LATE_TUPLE_FIELD` is now a `DetachedTuple`. It is
unanchored, uses value-based equality, and `getContext()` throws. Docs and
`withLateTupleStream` javadoc updated accordingly.
- Fix #7782
## How was the change tested
- `DetachedTupleTest`: snapshot, field/value access, equals/hashCode,
unanchored message id, `getContext()` throwing.
- `WindowedBoltExecutorTest`: regression test round-tripping a late tuple
through Kryo with `topology.fall.back.on.java.serialization=false` (the path
that failed).
- Updated `PersistentWindowedBoltExecutorTest` mocks for the new
constructor reads.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]