]
Luis Barreiro updated AG-90:
----------------------------
Component/s: pool
NPE if Driver#connect() returns null
------------------------------------
Key: AG-90
URL:
https://issues.jboss.org/browse/AG-90
Project: Agroal
Issue Type: Bug
Components: pool
Affects Versions: 1.1
Environment: WildFly 14
Reporter: Rich DiCroce
Assignee: Luis Barreiro
Fix For: 1.2
The Javadoc for Driver#connect(String, Properties) states:
bq. The driver should return "null" if it realizes it is the wrong kind of
driver to connect to the given URL.
Agroal does not perform a null check, leading to an opaque NPE if the driver returns
null. It would be helpful if Agroal noticed this and threw an exception that explains the
problem.
{code}
11:34:23,808 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 46)
MSC000001: Failed to start service
jboss.persistenceunit."song-gaming-portal.war#GamingPortalPU":
org.jboss.msc.service.StartException in service
jboss.persistenceunit."song-gaming-portal.war#GamingPortalPU":
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence
Services - 2.7.1.v20171221-bd47e8f): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Exception while creating new connection
Error Code: 0
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:195)
[wildfly-jpa-14.0.0.Final.jar:14.0.0.Final]
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:125)
[wildfly-jpa-14.0.0.Final.jar:14.0.0.Final]
at
org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:650)
[wildfly-elytron-1.6.0.Final.jar:1.6.0.Final]
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:209)
[wildfly-jpa-14.0.0.Final.jar:14.0.0.Final]
at
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_181]
at org.jboss.threads.JBossThread.run(JBossThread.java:485)
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse
Persistence Services - 2.7.1.v20171221-bd47e8f):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Exception while creating new connection
Error Code: 0
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:846)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:216)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:194)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getDatabaseSession(EntityManagerFactoryImpl.java:540)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactoryImpl(PersistenceProvider.java:385)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactory(PersistenceProvider.java:313)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:357)
[wildfly-jpa-14.0.0.Final.jar:14.0.0.Final]
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$1300(PersistenceUnitServiceImpl.java:70)
[wildfly-jpa-14.0.0.Final.jar:14.0.0.Final]
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:187)
[wildfly-jpa-14.0.0.Final.jar:14.0.0.Final]
... 9 more
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services -
2.7.1.v20171221-bd47e8f): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Exception while creating new connection
Error Code: 0
at
org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:316)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:147)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:170)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:228)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:804)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:254)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:759)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
... 17 more
Caused by: java.sql.SQLException: Exception while creating new connection
at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:215)
at io.agroal.pool.ConnectionPool.getConnection(ConnectionPool.java:137)
at io.agroal.pool.DataSource.getConnection(DataSource.java:61)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
[eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f]
... 22 more
Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(FutureTask.java:122) [rt.jar:1.8.0_181]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) [rt.jar:1.8.0_181]
at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:197)
... 25 more
Caused by: java.lang.NullPointerException
at io.agroal.pool.ConnectionFactory.connectionSetup(ConnectionFactory.java:180)
at io.agroal.pool.ConnectionFactory.createConnection(ConnectionFactory.java:169)
at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:316)
at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_181]
at
io.agroal.pool.util.PriorityScheduledExecutor.beforeExecute(PriorityScheduledExecutor.java:66)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
[rt.jar:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[rt.jar:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_181]
{code}