只是寻找这段代码的基本原理解释(PoolUtiltites:2.2.4 版中的 293):
dataSource.setLoginTimeout((int) TimeUnit.MILLISECONDS.toSeconds(Math.min(1000L, connectionTimeout)));
这段代码和 setConnectionTimeout 方法意味着我得到了这种行为:
- connectionTimeout == 0,然后 loginTimeout = Integer.MAX_VALUE
- connectionTimeout > 0 && < 100,然后 HikariConfig 抛出 IllegalArgumentException
- connectionTimeout >= 100 && <= 1000,则 loginTimeout = connectionTimeout
- connectionTeimout > 1000,然后 loginTimeout = 1000
这对我来说真的很奇怪!
这几乎就像 Math.min 应该是 Math.max ???
在我当前的项目中,我想在 30 秒后连接失败,这在当前设置中是不可能的。
我正在使用 4.1 postgres jdbc 驱动程序,但我认为这与上述问题无关。
非常感谢 - 很酷的池库!!!