[ 
https://issues.apache.org/jira/browse/KARAF-7843?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steinar Bang updated KARAF-7843:
--------------------------------
    Description: 
[Apache Aries SPI 
Fly|https://aries.apache.org/documentation/modules/spi-fly.html] helps 
translating SPI services into OSGi services.

SPI Fly looks for <Require-Capability> OSGi manifest headers and then tries to 
satisfy them with services found by scanning for <Provide-Capability> headers.

The Liquibase database migration tool is built around SPI services.

As an OSGi bundle it utilizes SPI Fly to spin up its SPI services by adding 
both a [<Provide-Capability> for the 
services|https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L252]
 as well as a [<Require-Capability> for the same 
services|https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L217]
 in the liquibase-core manifest file.

But all of the SPI services of liquibase needs to be running before liquibase 
is actually used and there is no way to know that all the required services 
have been started.

So to make liquibase available on the default start level 80 (where e.g. 
jdbc-config is running), liquibase and SPI Fly both has to be started on a 
lower start level (e.g. 40).

And the built-in spifly feature of karaf starts SPI Fly on start level 80 which 
is much too late for liquibase to make use of it (all SPI services will be 
started, but much too late).

So it would be good to have the spifly feature start the spifly bundle at a 
lower start level than the default.

  was:
[Apache Aries SPI 
Fly|https://aries.apache.org/documentation/modules/spi-fly.html] helps 
translating SPI services into OSGi services.

SPI Fly looks for <Require-Capability> OSGi manifest headers and then tries to 
satisfy them with services found by scanning for <Provide-Capability> headers.

The Liquibase database migration tool is built around SPI services.

As an OSGi bundle it utilizes SPI Fly to spin up its SPI services by adding 
both a [<Provide-Capability> for the 
services|https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L252]
 as well as a [<Require-Capability> for the same 
services|https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L217]
 in the liquibase-core manifest file.

But all of the SPI services of liquibase needs to be running before liquibase 
is actually used and there is no way to know that all the required services 
have been started.

So to make liquibase available on the default run level 80 (where e.g. 
jdbc-config is running), liquibase and SPI Fly both has to be started on a 
lower run level (e.g. 40).

And the built-in spifly feature of karaf starts SPI Fly on run level 80 which 
is much too late for liquibase to make use of it (all SPI services will be 
started, but much too late).

So it would be good to have the spifly feature start the spifly bundle at a 
lower run level than the default.


> It would be nice if the spifly feature was on a start-level other than the 
> default
> ----------------------------------------------------------------------------------
>
>                 Key: KARAF-7843
>                 URL: https://issues.apache.org/jira/browse/KARAF-7843
>             Project: Karaf
>          Issue Type: Bug
>            Reporter: Steinar Bang
>            Priority: Major
>
> [Apache Aries SPI 
> Fly|https://aries.apache.org/documentation/modules/spi-fly.html] helps 
> translating SPI services into OSGi services.
> SPI Fly looks for <Require-Capability> OSGi manifest headers and then tries 
> to satisfy them with services found by scanning for <Provide-Capability> 
> headers.
> The Liquibase database migration tool is built around SPI services.
> As an OSGi bundle it utilizes SPI Fly to spin up its SPI services by adding 
> both a [<Provide-Capability> for the 
> services|https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L252]
>  as well as a [<Require-Capability> for the same 
> services|https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L217]
>  in the liquibase-core manifest file.
> But all of the SPI services of liquibase needs to be running before liquibase 
> is actually used and there is no way to know that all the required services 
> have been started.
> So to make liquibase available on the default start level 80 (where e.g. 
> jdbc-config is running), liquibase and SPI Fly both has to be started on a 
> lower start level (e.g. 40).
> And the built-in spifly feature of karaf starts SPI Fly on start level 80 
> which is much too late for liquibase to make use of it (all SPI services will 
> be started, but much too late).
> So it would be good to have the spifly feature start the spifly bundle at a 
> lower start level than the default.



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

Reply via email to