You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Direct follow-up to #38764, agreed with @je-ik on Slack:
Implement Redistribute (arbitrarily) as a runner-native passthrough so the GreedyPipelineFuser splits stages at the Redistribute boundary, enabling a chained ExecutableStage end-to-end test.
Drop the byte[] type bound on ExecutableStageProcessor / KStreamsPayload at the processor edge so the runtime value type isn't silently corrupted for non-byte[] outputs (e.g. Integer from MapElements).
Add a chained Impulse -> MapElements<Integer> -> Redistribute.arbitrarily() -> ParDo(record) test under the EMBEDDED environment to prove non-byte[] flow stage-to-stage.
Scope
RedistributeTranslator registering beam:transform:redistribute_arbitrarily:v1 as a passthrough (no GBK, no state — single-instance topology has no actual redistribution to do).
Wire TrivialNativeTransformExpander.forKnownUrns(pipeline, knownUrns()) into prepareForTranslation so the fuser respects runner-native URNs (matches Spark/Flink pattern).
Type generalization on the ExecutableStageProcessor edge.
High-level chained test using SharedTestCollector<Integer> to assert side-effect arrival.
Out of scope
Redistribute.byKey() URN (rehashing semantics; punt to GBK sub-issue).
Activity
junaiddshaukat commentedon Jun 7, 2026
.take-issue
je-ik commentedon Jun 15, 2026
Closed via #38843