刚开始遇到这个问题,最先想到的是是否当前项目所属网络限制了,但最终排除调tomcat等相关配置,然后将问题定位到Flink本身,是否有相关配置影响到,由于Flink本身的配置太多,关于超时时间的设置也有不少,最终一一尝试都还是没生效,最终只能在开发环境上DEBUG调式。
最先在本地调式此问题,若是任务失败,立即就结束并返回了,但在开发环境则不会,原因是两种启动模式下,使用的启动Flink客户端不同,本地启动是:MinClusterClient,开发环境启动是:RestClusterClient,两者本身实现都差不多的。
经过调式,若任务处于失败,则内部会重新轮询请求任务的状态,最终问题定位到是RestClusterClient内部默认最大尝试20次,源码可参考:https://cloud.tencent.com/developer/article/1400315
其重试和重试间隔配置:
默认尝试:20次,每次间隔:3秒,也就是为什么若任务提交失败不立即返回,而是一致后台重试,直到60秒后返回的原因,解决办法:可以根据需求更改配置
```
awaitLeaderTimeout读取的是rest.await-leader-timeout配置,默认是30秒;retryMaxAttempts读取的是rest.retry.max-attempts配置,默认是20;retryDelay读取的是rest.retry.delay配置,默认是3秒
```