Flink是否以有效的方式创建渠道?

时间:2018-02-27 13:59:14

标签: java multithreading apache-flink

我正在检查Apache如何创建连接客户端的Flink代码: https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/netty/PartitionRequestClientFactory.java#L55-L108

我正在考虑2秒后超时的waitForChannel()方法: https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/netty/PartitionRequestClientFactory.java#L191

我不喜欢此超时,我认为如果发生errorpartitionRequestClient到达时notifyall()就足够了。

我说错了吗? 或者我们是否希望在等待2秒后不断尝试连接?

1 个答案:

答案 0 :(得分:0)

我们实际上并没有在等待之后尝试(重新)连接,我们只是重新进入循环来检查条件,并且一旦执行任何connectLock.notifyAll()调用就会唤醒,也是在超时结束之前。

通常情况下,这使您有机会对永远不会有这样的通知的情况做出反应,但上面的xTrollxDudex实际上我没有看到任何可能导致循环的其他地方。