felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "metatech (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (FELIX-4527) Infinite loop when bundle is undeployed "coldly" (when container is stopped)
Date Wed, 04 Jun 2014 18:01:11 GMT

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

metatech closed FELIX-4527.

    Resolution: Duplicate

> Infinite loop when bundle is undeployed "coldly" (when container is stopped)
> ----------------------------------------------------------------------------
>                 Key: FELIX-4527
>                 URL: https://issues.apache.org/jira/browse/FELIX-4527
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-3.2.2
>         Environment: ServiceMix 4.5.3
>            Reporter: metatech
>         Attachments: felix_cold_undeploy.diff
> When a bundle is undeployed when ServiceMix is stopped, on the next restart the FelixStartLevel
thread enters an infinite loop.
> {code}
> "FelixStartLevel" daemon prio=6 tid=0x0000000007ae9800 nid=0x2da4 runnable [0x00000000091cf000]
>    java.lang.Thread.State: RUNNABLE
>         at java.lang.IllegalStateException.<init>(IllegalStateException.java:55)
>         at org.apache.felix.framework.Felix.acquireBundleLock(Felix.java:4955)
>         - locked <0x00000000c11bbc88> (a [Ljava.lang.Object;)
>         at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1156)
>         at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:266)
>         at java.lang.Thread.run(Thread.java:744)
> {code}
> This is a side-effect of change FELIX-2942, in which the "for" loop has been replaced
by a "while" loop on a boolean "bundlesRemaining".  The "bundlesRemaining" is not recomputed
in every iteration the loop. For instance, when a IllegalStateException is caught, it skips
to the next iteration of the loop ("continue").  It therefore loops infinitely.
> Suggestion solution : recompute the boolean "bundlesRemaining" at each iteration of the
loop (perhaps in a "finally" block ?).
> This regression has been introduced in Felix 3.2.x : version 3.0.x did not have this
> The impact on ServiceMix users is that "cold undeploy" is broken, but fortunately, "warm
undeploy" is not.

This message was sent by Atlassian JIRA

View raw message