[
https://issues.apache.org/jira/browse/SLING-7790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16588827#comment-16588827
]
Georg Henzler edited comment on SLING-7790 at 8/22/18 1:19 PM:
---------------------------------------------------------------
[~diru] Fair point, but for the moment the installer core API does not support
to wait for a installable resource to be finished. So
OsgiInstaller.updateResources(..) could be called in a resource-type-agnostic
way, but the part that waits for a config or bundle to be installed needs to
know its type. To keep things simple I would for now leave the whole approach
local to this module. Mid-term we can then still think about extending the
interface OsgiInstaller to support the wait in the same pluggable fashion as it
supports installation of resources.
was (Author: henzlerg):
[~diru] Fair point, but for the moment the installer core API does not support
to wait for a installable resource to be finished. So
OsgiInstaller.updateResources(..) could be called in a resource-type-agnostic
way, but the part that waits for a config or bundle to be installed needs to
know its type. To keep things simple (local to this module) I would for now
leave the whole approach local to this module. Mid-term we can then still think
about extending the interface OsgiInstaller to support the wait in the same
pluggable fashion as it supports installation of resources.
> Allow for synchronous installation of bundles and configurations via install
> hook
> ---------------------------------------------------------------------------------
>
> Key: SLING-7790
> URL: https://issues.apache.org/jira/browse/SLING-7790
> Project: Sling
> Issue Type: New Feature
> Components: Installer
> Reporter: Georg Henzler
> Assignee: Georg Henzler
> Priority: Major
>
> Normally bundles configurations are installed asynchronously after a bundle
> is saved to the JCR during package installation (vault packages). This is due
> to the backgroundThread that the OsgiInstallerImpl is using. Since the
> introduction of the pauseInstallation signal node via SLING-3747, the
> installation of bundles and configurations is even forced to after the
> completed vault package installation. This behaviour also means that the
> package dependency can be declared, but it is not effective on "contained
> bundle level" but only on JCR content level. The following is not possible
> today:
> Complete Package with sub packages:
> * Package A (containing Bundle A)
> * Package B (containing Bundle B) with dependency to Bundle A
> If it is just a OSGi package dependency from Bundle B to Bundle A the
> installation order does not matter (the OSGi framework will sort it out).
> However if the content of Package B has a dependency to bundle A (think
> custom oak restrictions [1] or install hooks referenced) there will be an
> error.
> To allow for those cases and to avoid manual steps (not providing a complete
> package often means exactly that), it would be good to have a means to
> install contained bundles of a package synchronously. This can be achieved by
> a fairly simple install hook that "pre-installs" the contained
> InstallableResources with the correct digest to the OsgiInstaller. The
> subsequent call of sling-org-apache-sling-installer-provider-jcr will just
> update the already installed resource again with the same digest (which will
> not cause any action in the system).
> Obviously this mechanism should only be used where needed and only for
> configurations and bundles that are safe to install (bundles/configs that
> will never restart any of the base services). Using the install hook makes
> the mechanism "opt-in".
> [1]
> https://sling.apache.org/documentation/bundles/sling-oak-restrictions.html
> https://jackrabbit.apache.org/oak/docs/security/authorization/restriction.html#pluggability
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)