2016-09-13 2 views
0

Die HikariCP Dokumentation sagt:Woher weiß ich, ob mein HikariCP-Pool wirklich erschöpft ist, wenn SQLTransientConnectionException ausgelöst wird?

connection: Diese Eigenschaft gibt die maximale Anzahl von Millisekunden steuert, die ein Client für eine Verbindung aus dem Pool warten. Wenn diese Zeit überschritten wird, ohne dass eine Verbindung verfügbar wird, wird eine SQLException ausgelöst.

Durch das Testen, sehe ich, dass in diesem Fall SQLTransientConnectionException geworfen wird.

Wenn mein Pool erschöpft ist, bekomme ich diese Ausnahme. Wenn mein Datenbankhost vom Netzwerk getrennt ist, erhalte ich diese Ausnahme. Wenn mein Datenbankinstanz-Dienst beendet wird, erhalte ich diese Ausnahme.

Das Problem ist, dass der Pool, egal aus welchem ​​Grund, immer diese Ausnahme mit der gleichen Nachricht auslösen wird.

So kann ich die Benutzer nicht informieren, was vor sich geht. Wenn der Pool wirklich erschöpft ist (eine normale Sache unter starker Belastung), sollte der Benutzer informiert werden und aufgefordert werden, es später erneut zu versuchen.

Aber wenn mein Datenbankserver heruntergefahren ist, ist es eine andere Geschichte, und der Benutzer sollte entsprechend informiert werden.

Antwort

0

check yourException.getNextException() oder yourException.getCause(), wenn es nicht Null ist, bedeutet dies normalerweise Netzwerk/Datenbank-Problem.

Hinweis: Hikaricp behält diese Ausnahme nicht bei. getNextException()/getCause() kann für den nächsten Aufruf von getConnection() fehlschlagen.

Berichtet dies bei https://github.com/brettwooldridge/HikariCP/issues/719 und gute Sache ist Brett Änderungen sofort getan.

+0

Er änderte eine Sache, aber nicht die andere. Ist das genug? – Gustavo

+0

mit dieser Änderung sollten Sie Fortschritte machen können. Bitte melden Sie 'in Ausgabe 719', wenn Sie mit Ausnahme der Zeitlimit Ausnahme mit Ausnahme als Verbindungserstellungsfehler konfrontiert Ich hoffe, dies ist eine akzeptable Antwort – Nitin

Verwandte Themen