このコードの根拠の説明を探しているだけです (バージョン 2.2.4 の PoolUtiltites: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 ドライバーを使用していますが、これは上記の問題とは関係ないと思います。
多くの感謝 - そしてクールなプーリングライブラリ!!!