Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the cause of "RecoverableDataAccessException" received when checking health of database?

I am using spring-boot along with oracle database.

On accessing http://localhost:8888/health health end-point, I get following response:

{"status":"DOWN","error":"org.springframework.dao.RecoverableDataAccessException: ConnectionCallback; SQL []; Closed Connection; nested exception is java.sql.SQLRecoverableException: Closed Connection"}

While searching for the above issue details, I found this link https://github.com/spring-projects/spring-boot/issues/1303. It describes the issue in detail but it has very brief mention the resolution part.

As we can see at the above mentioned source that it is an issue in new state. Once I observed that even though this exception was returned in response, application continued to insert records into database.

How can we resolve above exception and what are its impacts on the boot application which is running?

like image 980
Anand Pandey Avatar asked Nov 21 '14 09:11

Anand Pandey


1 Answers

You need to configure the Tomcat JDBC connection pool to test connections. This should prevent the DB health indicator from being left stuck with a broken connection.

You can do so by adding some configuration to application.properties. For example:

spring.datasource.test-on-borrow: true
spring.datasource.validation-query: SELECT 1 FROM DUAL
spring.datasource.log-validation-errors: true
like image 181
Andy Wilkinson Avatar answered Nov 07 '22 05:11

Andy Wilkinson