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
The implementation leaves several scalability-related TODOs:
The state stores hashes and timestamps of outputs that have already been output and should be omitted from future polls. We could garbage-collect this state, e.g. dropping elements from "completed" and from addNewAsPending() if their timestamp is more than X behind the watermark.
When a poll returns a huge number of elements, we don't necessarily have to add all of them into state.pending - instead we could add only N oldest elements and ignore others, relying on future poll rounds to provide them, in order to avoid blowing up the state. Combined with garbage collection of GrowthState.completed, this would make the transform scalable to very large poll results.
Imported from Jira BEAM-2680. Original Jira may contain additional context.
Reported by: jkff.
Activity
zhengbuqian commentedon Mar 27, 2023
This has caused a dataflow customer to experience error: too many hashes/timestamps stored causing this ValueState to exceed max allowed single value size limit of 80MB(https://cloud.google.com/dataflow/quotas#limits).
[Python] Harden Watch transform: watermark contract and dedup scalabi…
Abacn commentedon Aug 26, 2026
Point 1 is addressed in upcoming Beam 2.77.0, by #39746 (Java) and #39461 (Python)
goutamadwant commentedon Sep 27, 2026
.take-issue
goutamadwant commentedon Sep 27, 2026
I verified this remains unresolved and have a tested Java fix ready on #40294