2016-09-13 4 views
0

HikariCPのドキュメントは言う:SQLTransientConnectionExceptionがスローされたときに自分のHikariCPプールが本当に枯渇しているかどうかを知るにはどうすればよいですか?

のConnectionTimeout:このプロパティは、クライアントがプールからの接続を待ちます(ミリ秒)の最大数を制御します。この時間が経過して接続が使用可能にならない場合は、SQLExceptionがスローされます。

このテストでは、このケースではSQLTransientConnectionExceptionがスローされています。

プールが使い果たされた場合は、この例外が発生します。 データベースホストがネットワークから切断されている場合、この例外が発生します。 データベースインスタンスサービスが停止している場合、この例外が発生します。

理由は何であれ、プールは常に同じメッセージでこの例外をスローします。

このように、私は何が起こっているのかをユーザーに知らせることはできません。プールが本当に使い果たされている場合(重い負荷のもとでは正常なもの)、ユーザーに通知して、後でやり直すように頼んでください。

私のデータベースサーバーがダウンしている場合、それは別の話です。それに応じてユーザーに通知する必要があります。

答えて

0

通常、ネットワーク/データベースの問題を意味するヌルでない場合は、yourException.getNextException()またはyourException.getCause()を確認します。

注:Hikaricpはこの例外を保持しません。 getNextException()/ getCause()は、失敗したgetConnection()の次回の呼び出しではnullになることがあります。

これはhttps://github.com/brettwooldridge/HikariCP/issues/719で報告されており、すぐに良いことはブレットが変更しました。

+0

彼はあることを変更しましたが、他は変更しませんでした。これで十分ですか?その変更を進めることができるはずです – Gustavo

+0

。 接続の作成エラー以外の例外としてタイムアウト例外が発生した場合は、 'issue on 719'を報告してください。 これは受け入れられる回答です – Nitin

関連する問題