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