[ https://issues.apache.org/jira/browse/FLINK-18011?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated FLINK-18011: ----------------------------------- Labels: pull-request-available (was: ) > Make WatermarkStrategy/WatermarkStrategies more ergonomic > --------------------------------------------------------- > > Key: FLINK-18011 > URL: https://issues.apache.org/jira/browse/FLINK-18011 > Project: Flink > Issue Type: Sub-task > Components: API / Core, API / DataStream > Reporter: Aljoscha Krettek > Assignee: Aljoscha Krettek > Priority: Blocker > Labels: pull-request-available > Fix For: 1.11.0 > > > Currently, we have an interface {{WatermarkStrategy}}, which is a > {{TimestampAssignerSupplier}} and {{WatermarkGeneratorSupplier}}. The very > first design (which is also currently implemented) also added > {{WatermarkStrategies}} as a convenience builder for a {{WatermarkStrategy}}. > However, I don't think users will ever implement a {{WatermarkStrategy}} but > always wrap it in a builder. I also think that {{WatermarkStrategy}} itself > is already that builder and we currently have two levels of builders, which > also makes them harder to use in the {{DataStream API}} because of type > checking issues. > I'm proposing to remove {{WatermarkStrategies}} and to instead put the static > methods directly into {{WatermarkStrategy}} and also to remove the > {{build()}} method. Instead of a {{build()}} method, API methods on > {{WatermarkStrategy}} just keep "piling" features on top of a base > {{WatermarkStrategy}} via wrapping. > Example to show what I mean for the API (current): > {code} > DataStream<MyType> input = ...; > input.assignTimestampsAndWatermarks( > WatermarkStrategies.<MyType>.forMonotonousTimestamps().build()); > {code} > with the proposed change: > {code} > DataStream<MyType> input = ...; > input.assignTimestampsAndWatermarks( > WatermarkStrategy.forMonotonousTimestamps()); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)