[
https://issues.apache.org/jira/browse/ARIES-1992?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Schulte updated ARIES-1992:
----------------------------------
Affects Version/s: jpa-2.7.3
> Override PersistenceUnit props are lost if DataSource is not yet available
> --------------------------------------------------------------------------
>
> Key: ARIES-1992
> URL: https://issues.apache.org/jira/browse/ARIES-1992
> Project: Aries
> Issue Type: Bug
> Components: JPA
> Affects Versions: jpa-2.7.2, jpa-2.7.3
> Environment: Karaf 4.2.8 on Windows 10 and Alpine
> * Pax JDBC
> * Hibernate ORM 5.4
> Reporter: Robert Schulte
> Assignee: Jean-Baptiste Onofré
> Priority: Major
> Fix For: jpa-2.7.4
>
>
> h1. Overview
> We have a similar setup to the one described here:
> [http://karaf.922171.n3.nabble.com/Aries-JPA-The-persistence-unit-has-incomplete-configuration-and-cannot-be-created-td4053148.html]
> We use
> * Apache Karaf
> * Pax JDBC
> * Aries JPA
> * Hibernate ORM
> We use Pax JDBC to configure a DataSource and also use the pre-hook for
> Liquibase migration. Since we support multiple databases, we have to set
> _org.hibernate.dialect_ dynamically. We have a bundle with persistence.xml,
> that sets a default _org.hibernate.dialect_ . We overwrite the dialect by
> setting it in org.apache.aries.jpa.<pu-name>.cfg in ${karaf.etc}.
> After migrating from Karaf 4.1.4 to 4.2.8 (jpa 2.6.1 -> 2.7.2) this does not
> work anymore
> h1. Steps to Reproduce
> # Start Karaf
> # Deploy a PersistenceUnit and DataSource
> # Add an org.apache.aries.jpa.<pu-name>.cfg file in ${karaf.etc}. Set a new
> property.
> # Inspect the properties of the corresponding EntityManagerFactory (by
> executing {{service:list EntityManagerFactory}})
> # Restart Karaf
> # Inspect the properties of the EntityManagerFactory (by executing
> {{service:list EntityManagerFactory}}) again
> h1. Actual Results
> # The properties of the EntityManagerFactory change during a Karaf restart.
> # The additional properties from
> ${karaf.etc}/org.apache.aries.jpa.<pu-name>.cfg are not applied
> # An error is logged
> {noformat}
> java.lang.IllegalArgumentException: The persistence unit <pu-name> has
> incomplete configuration and cannot be created.
> {noformat}
> h1. Expected Results
> # The published EMF before restarting should be identical to the EMF after
> restarting Karaf
> h1. Conjecture
> [ManagedEMF|https://github.com/apache/aries-jpa/blob/master/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/ManagedEMF.java#L75]
> is notified about updated props before a DataSource is available. This
> results in the aforementioned {{IllegalArgumentException}}. The props from
> the Config Admin's call to {{updated}} are now lost. When a DS or DSF is
> discovered by the respective ServiceTracker, an EMF will be created and
> published, but the override properties will not be passed again since they
> have already been handed to the ManagedService.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)