[ 
https://issues.apache.org/jira/browse/FLINK-11286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16775928#comment-16775928
 ] 

Jark Wu commented on FLINK-11286:
---------------------------------

Hi [~aljoscha], [~tzulitai], [~yanghua], I want to push this discussion a bit 
forward. We have also seen the same requirement.

In general, I agree with [~yanghua]'s opinion that usually the source logic and 
watermark logic are decoupled. Because the event timestamp may be existed in a 
complex data field (e.g. nested json, unstructured log), we have to extract the 
event time using a json-function/regex/udf which can only be applied AFTER the 
source.  IMO, that's 

We have suffered a similar problem, that one of the source partitions may have 
no more records in a period of time (e.g. IoT), which causes the window 
aggregate blocked. As mentioned above, the source logic and watermark logic are 
decoupled, we can't use {{markAsTemporarilyIdle}} to fix this. 

I dig into the source code and find a workaround: implementing a user-defined 
StreamOperator and use the {{getContainingTask().getStreamStatusMaintainer()}} 
to mark idle. I'm not sure if it's a good way but it works.

However, I think it's a common case for Flink users, and maybe we should 
propose a standard API to do that. 

> Support to send StreamStatus.IDLE for non-source operators 
> -----------------------------------------------------------
>
>                 Key: FLINK-11286
>                 URL: https://issues.apache.org/jira/browse/FLINK-11286
>             Project: Flink
>          Issue Type: Improvement
>          Components: DataStream API
>            Reporter: vinoyang
>            Assignee: vinoyang
>            Priority: Major
>
> Currently, only stream source tasks can be marked as temporary idle. But many 
> times, this approach has limitations.
> Considering such a scenario, there is a DAG as follows: 
> {{source->map->filter->flatmap->keyBy->window}}, with a degree of parallelism 
> of 10. Among them, the watermark is not sent by the source operator, but is 
> downstream, such as flatmap. Every source subtask will not be idle. However, 
> after the filter, some pipelines generate "idle". For example, there are 3 
> pipelines that will no longer have data sent downstream. At this time, we 
> can't call the {{markAsTemporarilyIdle}} method to mark the current pipeline 
> in the idle state. This will affect the downstream window.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to