최근 관련 업무에서 Jira issue로 올라온 내용
"db file 삭제가 안됨"
sqlite를 사용하고 있고 ORM으로는 ibatis를 쓰고 있는 환경.
Eclipse plugin인데 일단 한번 ibatis가 호출되고 나서는
db file을 삭제할수 없는 상태인 것이다.
호출한 서비스를 해제하고, 강제로 system gc를 호출하고 별 짓을 해봤는데도
db file은 삭제되지 않았다.
sqlite의 문제인지, ibatis의 버그인지 이것저것 찾아보았는데,
실마리를 찾지 못했다.
포기하고 해결하는 대신 삭제를 못하게 하는 방향으로 가려다가
마침내 관련 글을 발견.
원인은.... ibatis의 기본기능으로 일단 맺어졌던 connection에 대해서 Pool에 담아 보관하기 때문이었다.
해결책으로 ibatis 설정시 connectionPool의 idle 갯수를 지정할수 있었는데, 0으로 셋팅하면 된다.
sql-map-config.xml
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
...
<property name="Pool.MaximumIdleConnections" value="0" />
</dataSource>
</transactionManager>
물론 이경우 발생하는 이슈는 당연히 작업할때마다 connection을 맺어야 하니까(놀고있는 커넥션이 없으므로) 커넥션
타임비용이 추가로 발생한는 점이다.
하지만 프로그램의 성격이 성능목표는 다소 낮은 편이라서 스킵...
이 글은 스프링노트에서 작성되었습니다.