aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Schulte (Jira)" <j...@apache.org>
Subject [jira] [Commented] (ARIES-1992) Override PersistenceUnit props are lost if DataSource is not yet available
Date Fri, 24 Jul 2020 22:57:00 GMT

    [ https://issues.apache.org/jira/browse/ARIES-1992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17164671#comment-17164671
] 

Robert Schulte commented on ARIES-1992:
---------------------------------------

I have created a PR for this: [https://github.com/apache/aries-jpa/pull/9]

> 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
>         Environment: Karaf 4.2.8 on Windows 10 and Alpine
> * Pax JDBC
>  * Hibernate ORM 5.4
>            Reporter: Robert Schulte
>            Priority: Major
>
> 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.3.4#803005)

Mime
View raw message