[
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)