[
https://issues.apache.org/jira/browse/SLING-10339?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Konrad Windszus closed SLING-10339.
-----------------------------------
> Execution plan failure for JCR Package Init
> -------------------------------------------
>
> Key: SLING-10339
> URL: https://issues.apache.org/jira/browse/SLING-10339
> Project: Sling
> Issue Type: Improvement
> Components: Starter
> Affects Versions: JCR Package Init 1.0.2
> Reporter: Hans-Peter Stoerr
> Assignee: Konrad Windszus
> Priority: Minor
> Fix For: JCR Package Init 1.0.4
>
>
> I am using the feature model [content deployment
> extension|https://github.com/apache/sling-org-apache-sling-feature-extension-content]
> to deploy some content packages as a feature using the Sling feature
> launcher, since the simple
> [ContentPackageHandler|https://github.com/apache/sling-org-apache-sling-feature-launcher/blob/master/src/main/java/org/apache/sling/feature/launcher/impl/extensions/handlers/ContentPackageHandler.java]
> of the feature launcher is not able to specify an order in which the
> content-packages are installed and you have no control over when they are
> installed (in my case the installation failed since the packages are already
> installed before the repository was completely initialized with the service
> user sling-package-install.) However there is a problem with the
> FSPackageRegistry.contains that prevented this from working when package
> dependencies are specified in the content-packages: these are checked by
> ExecutionPlanBuilder as called from
> [ExecutionPlanRepoInitializer|https://github.com/apache/sling-org-apache-sling-jcr-packageinit/blob/master/src/main/java/org/apache/sling/jcr/packageinit/impl/ExecutionPlanRepoInitializer.java],
> but FSPackageRegistry.contains always returns false since the
> FSPackageRegistry isn't initialized yet. I reported that as a jackrabbit
> vault bug, but to make that work with the current version of Jackrabbit Vault
> I suggest to introduce a workaround: call FSPackageRegistry.packages() before
> executing the ExecutionPlan to initialize the FSPackageRegistry.
> Please note that this needs changing the unittest since the FSPackageRegistry
> cannot be initialized without setting a homeDir. Perhaps you could just use a
> Mockito mock instead of an actual FSPackageRegistry. (I could provide a patch
> if you tell me how to deal with the unittest issue.)
> BTW: it took me quite a while to find out that you can specify an
> installation order for the packages with the content deployment extension by
> specifying the packages e.g. like that in the feature - it's probably a good
> idea to mention that in the org.apache.sling.extension.content README.md:
> {code:java}
> "content-packages:ARTIFACTS|required": [
> {
> "id":
> "com.composum.platform:composum-platform-commons-package:zip:${composum.platform.version}",
> "start-order": "31"
> },
> {
> "id":
> "com.composum.platform:composum-platform-cache-package:zip:${composum.platform.version}",
> "start-order": "31"
> }
> ]{code}
> PS: Another think that took me a while to solve is that the bundles that are
> embedded in the packages get the start level 1. (The same thing happens when
> you deploy a package with the package manager.) The solution of that was to
> set the framework property felix.startlevel.bundle to something like 30 -
> this might even go into the starter.
> PS 2: another thing that should be mentioned somewhere is that the feature
> model content extension has to be in the classpath before the feature
> launcher since otherwise the standard feature launcher ContentPackageHandler
> is used.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)