我正在检查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
我不喜欢这个超时,我认为如果发生error
或partitionRequestClient
到达时,notifyall()
就足够了。
我对么?或者我们是否希望在等待2秒后不断尝试连接?
我们实际上并没有在等待之后尝试(重新)连接,我们只是重新进入循环来检查条件,并且一旦执行任何connectLock.notifyAll()
调用就会唤醒,也就在超时结束之前。
通常情况下,这使您有机会对永远不会有这样的通知的情况作出反应但是因为上面的xTrollxDudex
我实际上没有看到任何可能导致循环的其他地方。