Back-end/spring boot

Hikaricp에서 초기화 시 DB(Datasource) 자동 연결을 피할 수 없다. Hikaricp, automatic DB (Datasource) connection cannot be avoided during initialization. [spring boot]

은성 개발자 2024. 7. 27. 09:42
728x90

 

영어 검색이든,, 어디든 다 뒤져보고

chatGPT도 답이 없던 문제였기에 다른 사람은 고생하지 않았으면 해서 기록한다.


[ 문제 상황 ]

  • hikari Datasource를 이용해서 3개의 DB를 다루고 있다.
  • 3개 중 1개의 DB는 처음 실행 시 hikari pool에서 초기화하지 않고 필요할 때마다 연결 확인 후 이용
  • 다만, 3개다 초기에 DB 연결 시도를 하려고 함.

 

그러면 DB가 connect 되지 않는 상황을 exception처리하면 되지 않나?

-> Hikaricp에서 자동으로 연결 시도를 하기 때문에 처음에는 모두 연결 시도를 하려고 함.

-> Hikari Pool에서 발생하는 exception은 처리하기가 어려움. (할 수 있는지는 모르겠음)

 

 

< 인터넷에서 찾아본 결과 >

나중에 연결 시도할 Datasource에 설정을 이렇게 한다.

  • LazyConnectionDataSourceProxy(DataSource)
  • initializationfailtimeout: -1 (application.yml)
  • minimumidle: 0 (application.yml)

모두 소용이 없음 -> 전부 다 초기에 연결 확인 후 DB 연결이 되지 않으면 Exception 발생

 

 

결론적으로는 Hikari Datasource를 지정하면 안된다.

-> 그러면 Datasource로만 쓰면 되지 않나?

=> Nope. 기본적으로 Spring boot는 Datasource로만 지정해도 Hikari로 자동으로 연결짓는다.

 

그래서 일부러 다른 DataSource를 활용해야 하는데.. 

common dbcp2의 BasicDataSource를 지정해서 가져온다.

여기까지가 Hikaricp관련 내용이니 DB 연결을 따로 하는 것은 아래 포스팅을 참고하길

 

 

아래 포스팅 전제 상황은

  • DB를 실행 초기에 연결 확인을 하지 않고 시작
  • DB가 필요할 때 연결 확인 후 SQL문 등의 DB 처리 실행
  • DB가 연결되지 않았을 때는 error log 발생하고 실행에 지장이 없도록 함.

https://jangmay.tistory.com/110

 

DB 연결 확인하지 않고 실행 시작 처리 & DB server가 끊기면 에러 로그 발생하고 시스템 중단되지

spring boot 버전 3정도를 사용하고 있는데datasource를 굳이 hikariDatasource로 지정하지 않아도 spring boot에서 자동으로 hikariDatasource로 해준다. 그래서 HikariPool에서 DB 연결을 확인하고 연결이 잘되면 예

jangmay.tistory.com


 

고생이 덜어졌으면 합니다... 모두 개발 파이팅

728x90
반응형