Jakub Herkel created ARIES-2159:
-----------------------------------

             Summary: Cannot obtain connection from DummyDataSource
                 Key: ARIES-2159
                 URL: https://issues.apache.org/jira/browse/ARIES-2159
             Project: Aries
          Issue Type: Bug
          Components: JPA
         Environment: Apache Karaf 4.4.6, openjdk 21, Postgresql 17 , Aries JPA 
2.7.3, Hibernate 5.6.15
            Reporter: Jakub Herkel


I can see this exception for every bundle that contains persistence unit:
{code:java}
2024-10-30T19:55:21,384 | INFO  | features-3-thread-1 | 
PersistenceBundleTracker         | 177 - org.apache.aries.jpa.container - 2.7.3 
| Found persistence unit chronos-i18n in bundle tech.pantheon.chronos.i18n.impl 
with provider org.hibernate.jpa.HibernatePersistenceProvider.
2024-10-30T19:55:21,384 | INFO  | features-3-thread-1 | 
PersistenceProviderTracker       | 177 - org.apache.aries.jpa.container - 2.7.3 
| Found provider for chronos-i18n org.hibernate.jpa.HibernatePersistenceProvider
2024-10-30T19:55:21,384 | INFO  | features-3-thread-1 | LogHelper               
         | 245 - org.hibernate.orm.core - 5.6.15.Final | HHH000204: Processing 
PersistenceUnitInfo [name: chronos-i18n]
2024-10-30T19:55:21,385 | INFO  | features-3-thread-1 | EnversServiceImpl       
         | 246 - org.hibernate.orm.envers - 5.6.15.Final | Envers integration 
enabled? : true
2024-10-30T19:55:21,458 | INFO  | features-3-thread-1 | Dialect                 
         | 245 - org.hibernate.orm.core - 5.6.15.Final | HHH000400: Using 
dialect: org.hibernate.dialect.PostgreSQL10Dialect
2024-10-30T19:55:21,458 | WARN  | features-3-thread-1 | 
JdbcEnvironmentInitiator         | 245 - org.hibernate.orm.core - 5.6.15.Final 
| HHH000342: Could not obtain connection to query metadata
java.lang.NullPointerException: Cannot invoke 
"java.sql.Connection.getCatalog()" because the return value of 
"java.sql.DatabaseMetaData.getConnection()" is null
    at 
org.hibernate.engine.jdbc.env.internal.ExtractedDatabaseMetaDataImpl$Builder.apply(ExtractedDatabaseMetaDataImpl.java:184)
 ~[?:?]
    at 
org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentImpl.<init>(JdbcEnvironmentImpl.java:272)
 ~[?:?]
    at 
org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:114)
 ~[?:?]
    at 
org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
 ~[?:?]
    at 
org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)
 ~[?:?]
    at 
org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:272)
 ~[?:?]
    at 
org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
 ~[?:?]
    at 
org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:223)
 ~[?:?]
    at 
org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:175)
 ~[?:?]
    at 
org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:295)
 ~[?:?]
    at 
org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:252)
 ~[?:?]
    at 
org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:223)
 ~[?:?]
    at 
org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:173)
 ~[?:?]
    at 
org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127)
 ~[?:?]
    at 
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1460)
 ~[?:?]
    at 
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1494)
 ~[?:?]
    at 
org.hibernate.osgi.OsgiPersistenceProvider.createContainerEntityManagerFactory(OsgiPersistenceProvider.java:100)
 ~[?:?]
    at 
org.apache.aries.jpa.container.impl.PersistenceProviderTracker.createAndCloseDummyEMF(PersistenceProviderTracker.java:105)
 ~[?:?]
    at 
org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:86)
 ~[?:?]
    at 
org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:44)
 ~[?:?]
    at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)
 ~[osgi.core-8.0.0.jar:?]
    at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:871)
 ~[osgi.core-8.0.0.jar:?]
    at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) 
~[osgi.core-8.0.0.jar:?]
    at 
org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183) 
~[osgi.core-8.0.0.jar:?]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:321) 
~[osgi.core-8.0.0.jar:?]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:264) 
~[osgi.core-8.0.0.jar:?]
    at 
org.apache.aries.jpa.container.impl.PersistenceBundleTracker.trackProvider(PersistenceBundleTracker.java:229)
 ~[?:?]
    at 
org.apache.aries.jpa.container.impl.PersistenceBundleTracker.findPersistenceUnits(PersistenceBundleTracker.java:213)
 ~[?:?]
    at 
org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:98)
 ~[?:?]
    at 
org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:44)
 ~[?:?]
    at 
org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)
 ~[osgi.core-8.0.0.jar:?]
    at 
org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:420)
 ~[osgi.core-8.0.0.jar:?]
    at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) 
~[osgi.core-8.0.0.jar:?]
    at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) 
~[osgi.core-8.0.0.jar:?]
    at 
org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)
 ~[osgi.core-8.0.0.jar:?]
    at 
org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915)
 ~[?:?]
    at 
org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
 ~[?:?]
    at 
org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516)
 ~[?:?]
    at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4847) ~[?:?]
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:2420) ~[?:?]
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2335) ~[?:?]
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:1006) ~[?:?]
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:992) ~[?:?]
    at 
org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165)
 ~[?:?] {code}
There isn't any problem with functionality but this error in log is confusing 
for QA team. During debugging this problem I found out that there is two-steps 
procedure how a bundle with persistence unit is processed. At the first step 
Aries JPA doesn't use a real data source but DummyDataSource.  Real DataSource 
is used later. This worked correctly with an old version of Hibernate but 
probably a newer version of Hibernate changed a way how to obtain 
dialect/metadata. Now there is a null pointer exception from this code 
(ExtractedDatabaseMetaDataImpl.java)
{code:java}
public Builder apply(DatabaseMetaData databaseMetaData) throws SQLException {
            connectionCatalogName = 
databaseMetaData.getConnection().getCatalog(); <-- NPE
            // NOTE : databaseMetaData.getConnection().getSchema() would 
require java 1.7 as baseline
            supportsRefCursors = StandardRefCursorSupport.supportsRefCursors( 
databaseMetaData ); {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to