Uploaded image for project: 'Agroal'
  1. Agroal
  2. AG-90

NPE if Driver#connect() returns null

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 1.2
    • 1.1
    • pool
    • None

    Description

      The Javadoc for Driver#connect(String, Properties) states:

      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.

      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]
      

      Attachments

        Activity

          People

            lbarreiro-1 Luis Barreiro
            rdicroce Richard DiCroce (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: