Trouble Shooting

validationQuery didn't return a row

[혜안] 2022. 12. 9. 11:16
728x90

Problem

org.apache.commons.dbcp로 DB connection pool을 생성하는 경우,

어플리케이션 기동 시 validationQuery didn't return a row 라는 에러가 발생하며 제대로 기동이 안될 수 있다.

의미로만 보자면,

DB connection pool을 생성하기 위해 DB 연결이 유효한지 valication query를 DB에 날렸으나,

응답을 받지못해 DB connection pool을 제대로 생성하지 못했다는 뜻이다.

 

Solution

1. DB status check

아마 문제 없을 것이다. DB에 접속이 막혀있거나, DB 기동이 안되었다면 다른 에러가 발생했을 것이다.

 

2. Valication Query check

이것도 비교적 유추 가능하고, 제일먼저 체크했을 것이므로, 만역 여기까지 검색해서 들어왔다면 이미 체크해봤을 것이다.

문제없을 가능성이 높다.

 

3. Monitoring agent check

JAVA 어플리케이션 모니터링을 위해 Jennifer나 Scouter 등 JMX agent를 시작 스크립트에 걸면

dbcp의 validation query의 동작을 홀딩시키는 경우가 있다.

해결방법은 Jennifer BE 서버에서 애플리케이션 시작점을 등록하면 된다.

실제로 어플리케이션 기동 후, BE 웹포탈에서 애플리케이션 시작점을 등록하면

그 시점에 비로소 어플리케이션 콘솔에서 Jennifer Runtime Module initialized 라는 로그가 올라가는걸 확인 할 수 있다.

즉, 애플리케이션 시작점이 없어, Jennifer agent가 어플리케이션 동작을 홀딩하고 있었던 셈이다.

 

 

 

728x90