[
https://issues.apache.org/jira/browse/SLING-5457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15867551#comment-15867551
]
Dominik Süß commented on SLING-5457:
------------------------------------
Patch proposal submitted via PR (see comment by ASF Github Bot). Simplistic
retry mechanism (5 times).
The tests cover a generic bundleexception during activation of a testbundle -
the observed issues where fired by the framework but this solution is a generic
safety net as this could happen when ever Exceptions are thrown due to some
kind of race condition.
Note that for install tasks we currently have endless retries, but based on
discussion with [~cziegeler] I constrained the retry attempts for
BundleUpdateTasks.
> OsgiInstaller should retry to start bundles on failures
> -------------------------------------------------------
>
> Key: SLING-5457
> URL: https://issues.apache.org/jira/browse/SLING-5457
> Project: Sling
> Issue Type: Bug
> Components: Installer
> Affects Versions: Installer Core 3.6.4
> Reporter: Jörg Hoh
>
> The OsgiInstaller doesn't update a bundle properly, if there's an exception
> from the framework.
> I have this exception:
> {code}
> 11.12.2015 14:09:36.753 *INFO* [FelixStartLevel] my.custom.bundle BundleEvent
> RESOLVED
> 11.12.2015 14:09:36.753 *INFO* [FelixStartLevel] my.custom.bundle BundleEvent
> STARTING
> 11.12.2015 14:09:36.754 INFO [OsgiInstallerImpl]
> org.apache.sling.installer.core.impl.tasks.BundleUpdateTask Removing failing
> update task - unable to retry: BundleUpdateTask:
> TaskResource(url=jcrinstall:/apps/myapp/install/my.custom.bundle-1.5.6-SNAPSHOT.jar,
> entity=bundle:my.custom.bundle, state=INSTALL,
> attributes=[org.apache.sling.installer.api.tasks.ResourceTransformer=:28:84:15:,
> Bundle-SymbolicName=my.custom.bundle, Bundle-Version=1.5.6-SNAPSHOT],
> digest=1449838063263)
> org.osgi.framework.BundleException: Bundle my.custom.bundle [252] cannot be
> update, since it is either starting or stopping.
> at org.apache.felix.framework.Felix.updateBundle(Felix.java:2311)
> at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:995)
> at
> org.apache.sling.installer.core.impl.tasks.BundleUpdateTask.execute(BundleUpdateTask.java:92)
> at
> org.apache.sling.installer.core.impl.OsgiInstallerImpl.doExecuteTasks(OsgiInstallerImpl.java:847)
> at
> org.apache.sling.installer.core.impl.OsgiInstallerImpl.executeTasks(OsgiInstallerImpl.java:689)
> at
> org.apache.sling.installer.core.impl.OsgiInstallerImpl.run(OsgiInstallerImpl.java:265)
> at java.lang.Thread.run(Thread.java:767)
> {code}
> I don't know for what reason the Felix.updateBundle() failed (see also
> FELIX-5138 to get some more information in this case), but from my point of
> view there should be a dedicated error handling just for the
> {code}BundleImpl.update{code} call. Does it make sense to retry the
> installation at a later point in time (maybe 3 times at max)?
> (I got this exception when I deployed a large number of bundles through the
> JCR installer. It happens only once in a while, but it's an annoying task to
> fix it manually.)
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)