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

Jark Wu commented on FLINK-6958:
--------------------------------

I have dug into this issue.  When the source is a bounded source, such as 
{{env.fromCollection}} ,  and the {{AsyncFunction}} do nothing. The async i/o 
operator will hang on the {{close()}} method to wait the pending element queue 
finished. 

The reason is that we register the timeout timer using 
{{ProcessingTimeService}}. The source complete very soon, and then the 
AsyncOperator exit the {{run()}} block and call {{quiesceAndAwaitPending}} on 
the TimeService.  But we remove all pending timers in it , because we set the 
policy: 
{{timeService.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);}}. 
That's why all the pending element will never complete and result in the dead 
lock.

[~till.rohrmann] Why do we remove all the pending timers ?  Can we set the 
policy to true? 

> 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
>
> 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