You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Sebb (JIRA)" <ji...@apache.org> on 2014/04/03 21:01:23 UTC
[jira] [Created] (JCS-113) Potential NPE in JDBCDiskCache
Sebb created JCS-113:
------------------------
Summary: Potential NPE in JDBCDiskCache
Key: JCS-113
URL: https://issues.apache.org/jira/browse/JCS-113
Project: Commons JCS
Issue Type: Bug
Reporter: Sebb
The test JDBCDiskCacheManagerUnitTest fails with an NPE if debug logging is enabled.
{code}
java.lang.NullPointerException
at org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCache.getSize(JDBCDiskCache.java:982)
at org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCache.getStatistics(JDBCDiskCache.java:1146)
at org.apache.commons.jcs.auxiliary.disk.AbstractDiskCache.getStats(AbstractDiskCache.java:525)
at org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCache.toString(JDBCDiskCache.java:1251)
at org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCacheManagerAbstractTemplate.getCache(JDBCDiskCacheManagerAbstractTemplate.java:119)
at org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCacheManager.getCache(JDBCDiskCacheManager.java:117)
at org.apache.commons.jcs.auxiliary.disk.jdbc.JDBCDiskCacheManagerUnitTest.testGetCache_normal(JDBCDiskCacheManagerUnitTest.java:49)
{code}
That happens because the getSize() method calls
{code}
getPoolAccess().getConnection()
{code}
and getPoolAccess() may return null if the initializePoolAccess method called by the constructor fails to set up the pool.
It is trivial to check if the poolAccess field has been set up and avoid the NPE in getSize(). However, the getPoolAccess() method is used extensively within the class, and also externally as well.
It looks as though the class is barely usable if the field cannot be initialised, so it might perhaps be better if the constructor threw an Exception of some kind.
--
This message was sent by Atlassian JIRA
(v6.2#6252)