[Task][Go SDK] Disallow iterators with initial timestamp values (ET,V) and (ET, K,V) -> not in the beam model. #22404
Labels
done & done
Issue has been reviewed after it was closed for verification, followups, etc.
go
P1
task
What needs to happen?
Timestamp metadata for individual elements is lost after sending values through a GroupByKey. This is not an issue, and is WAI as a consequence of the post GBK coder (WindowedValueHeader+KV<K, Iter>), as the runner has combined timestamps.
We need to disallow usage of those iterators: They don't work because they're not in the beam model.
After a GBK, the whole <K, V*> element has a single timestamp, and while side inputs are placed into the corresponding windows, they do not preserve their timestamps.
As such, it's just a painpoint waiting to happen.
The best path forward is to have a clear error when we detect these forms instructing users that this is decomissioned and not part of the model and instruct them on the model instead. The existing code that allows them here can return this error instead.
See next comment for other places that need updating as a result.
This is separate from whether the SDK supports specifying timestamp combine strategies for a window. Presently it does not, and should default to "End Of Window" for a given Post GBK element.
Issue Priority
Priority: 2
Issue Component
Component: sdk-go
The text was updated successfully, but these errors were encountered: