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

Till Rohrmann commented on FLINK-6958:
--------------------------------------

Ah I see. So the problem is that we first call 
{{TimeService#quiesceAndAwaitPending}} at {{StreamTask.java:274}}, which 
cancels all registered timer tasks, before closing the operators in 
{{StreamTask.java:287}}.

I think the underlying problem is that the operator uses a component, the 
{{ProcessingTimeService}}, which is closed/quiesced before the lifetime of the 
operator has ended (by calling {{StreamOperator#close}}). This is done because 
we have in other operators the assumption that no timer tasks are triggered 
when the operator is being closed.

A solution could be to introduce the same timeout for the 
{{AsyncWaitOperator#close}} operation ({{AsyncWaitOperator.java:280-284}}) 
which will fail all remaining {{StreamElementQueueEntries}} after the timeout.

> Async I/O timeout not work
> --------------------------
>
>                 Key: FLINK-6958
>                 URL: https://issues.apache.org/jira/browse/FLINK-6958
>             Project: Flink
>          Issue Type: Bug
>          Components: Streaming
>    Affects Versions: 1.2.1
>            Reporter: feng xiaojie
>            Assignee: Jark Wu
>
> when use Async I/O with UnorderedStreamElementQueue, the queue will always 
> full if you don't  call the AsyncCollector.collect to ack them.
> Timeout shall collect these entries when the timeout trigger,but it isn't work
> I debug find,
> when time out, it will call resultFuture.completeExceptionally(error);
> but not call  UnorderedStreamElementQueue.onCompleteHandler
> it will cause that async i/o hang always



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to