2016-09-13 7 views
0

HikariCP 문서는 말한다 :SQLTransientConnectionException이 발생했을 때 HikariCP 풀이 실제로 소모되었는지 어떻게 알 수 있습니까?

은 ConnectionTimeout :이 속성은 클라이언트가 풀에서 연결을 기다립니다 (밀리 초)의 최대 수를 제어합니다. 접속이 이용 가능하게되지 않고이 시간이 초과하면 (자), SQLException가 Throw됩니다.

테스트를 통해이 경우 SQLTransientConnectionException이 발생합니다.

내 수영장이 고갈되면이 예외가 발생합니다. 데이터베이스 호스트가 네트워크에서 연결이 끊어지면이 예외가 발생합니다. 데이터베이스 인스턴스 서비스가 중지되면이 예외가 발생합니다.

이유는 무엇이든지간에 풀은 항상 같은 메시지로이 예외를 throw합니다.

이렇게하면 사용자에게 어떤 일이 일어나는지 알 수 없습니다. 수영장이 실제로 고갈되면 (부하가 많은 정상적인 상황) 사용자에게 알리고 나중에 다시 시도해야합니다.

내 데이터베이스 서버가 다운 된 경우에는 다른 이야기이므로 사용자에게 그에 대한 정보를 제공해야합니다.

답변

0

일반적으로 네트워크/데이터베이스 문제를 의미하는 null이 아닌 경우 yourException.getNextException() 또는 yourException.getCause()를 확인하십시오.

참고 : Hikaricp는이 예외를 보유하지 않습니다. getNextException()/getCause()는 실패한 getConnection()의 다음 호출을 위해 null 일 수 있습니다.

https://github.com/brettwooldridge/HikariCP/issues/719에 신고 했으므로 브렛이 좋은 점은 즉시 바뀌 었습니다.

+0

그는 한 가지만 변경했지만 다른 것은 변경하지 않았습니다. 이것이 충분하나요? 변경이 가능한 – Gustavo

+0

을 진행해야합니다. 연결 예외 생성 이외의 다른 예외로 인해 시간 초과 예외가 발생하는 경우 '문제 719'를보고하십시오. 응답이 만족 스럽습니다. – Nitin