Skip to content

Improve scalability of the Watch transform #18459

Description

@kennknowles

#3565 introduces the Watch transform http://s.apache.org/beam-watch-transform.

The implementation leaves several scalability-related TODOs:

  1. 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.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions