felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karl Pauls (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FELIX-5103) ArrayIndexOutOfBoundsException during bundle update
Date Fri, 24 Feb 2017 12:52:44 GMT

    [ https://issues.apache.org/jira/browse/FELIX-5103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15882609#comment-15882609
] 

Karl Pauls commented on FELIX-5103:
-----------------------------------

Not sure this is still current but I want to look at it.

> ArrayIndexOutOfBoundsException during bundle update
> ---------------------------------------------------
>
>                 Key: FELIX-5103
>                 URL: https://issues.apache.org/jira/browse/FELIX-5103
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.2.1, framework-5.2.0
>            Reporter: Bram Pouwelse
>            Assignee: Karl Pauls
>             Fix For: framework-5.6.4
>
>
> I have traces like the one below quite often when bndtools is updating bundles in a running
framework.  
> {code}
> ! Error in updating the framework from the properties: Index: 0, Size: 0
> ! Bundle files does not exist: /Users/brampouwelse/git-repos/path/to/project/generated/mybundle.jar
> ERROR: Bundle mybundle [251] Unable to update the bundle. (java.lang.IndexOutOfBoundsException:
Index: 0, Size: 0)
> java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
>     at java.util.ArrayList.rangeCheck(ArrayList.java:653)
>     at java.util.ArrayList.get(ArrayList.java:429)
>     at org.apache.felix.framework.BundleImpl.adapt(BundleImpl.java:1064)
>     at org.apache.felix.framework.BundleImpl.getSymbolicName(BundleImpl.java:896)
>     at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1226)
>     at org.apache.felix.framework.BundleImpl.revise(BundleImpl.java:1141)
>     at org.apache.felix.framework.Felix.updateBundle(Felix.java:2282)
>     at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:973)
>     at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:960)
>     at aQute.launcher.Launcher.synchronizeFiles(Launcher.java:534)
>     at aQute.launcher.Launcher.update(Launcher.java:405)
>     at aQute.launcher.Launcher$1.run(Launcher.java:194)
>     at java.util.TimerThread.mainLoop(Timer.java:555)
>     at java.util.TimerThread.run(Timer.java:505)
> ! Failed to update bundle /Users/brampouwelse/git-repos/path/to/project/generated/mybundle.jar,
exception Update of bundle mybundle [251] failed.
> java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
>     at java.util.ArrayList.rangeCheck(ArrayList.java:653)
>     at java.util.ArrayList.get(ArrayList.java:429)
>     at org.apache.felix.framework.BundleImpl.adapt(BundleImpl.java:1064)
> ERROR: Bundle myotherbundle [252] Unable to update the bundle. (java.lang.IndexOutOfBoundsException:
Index: 0, Size: 0)
>     at org.apache.felix.framework.BundleImpl.getSymbolicName(BundleImpl.java:896)
>     at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1226)
>     at org.apache.felix.framework.BundleImpl.revise(BundleImpl.java:1141)
>     at org.apache.felix.framework.Felix.updateBundle(Felix.java:2282)
>     at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:973)
>     at org.apache.felix.framework.BundleImpl.update(BundleImpl.java:960)
>     at aQute.launcher.Launcher.synchronizeFiles(Launcher.java:534)
>     at aQute.launcher.Launcher.update(Launcher.java:405)
>     at aQute.launcher.Launcher$1.run(Launcher.java:194)
>     at java.util.TimerThread.mainLoop(Timer.java:555)
>     at java.util.TimerThread.run(Timer.java:505)
> ! Failed to update bundle /Users/brampouwelse/git-repos/path/to/project/generated/myotherbundle.jar,
exception Update of bundle myotherbundle [252] failed.
> {code}
> Just had a look at the Felix code and this part is interesting. 
> {code:title=BundleImpl.java}
>     synchronized void revise(String location, InputStream is)
>         throws Exception
>     {
>         // This operation will increase the revision count for the bundle.
>         m_archive.revise(location, is);
>         try
>         {
>             BundleRevision revision = createRevision(true);
>             addRevision(revision);
>         }
>         catch (Exception ex)
>         {
>             m_archive.rollbackRevise();
>             throw ex;
>         }
>     }
> {code}
> If the {{createRevision}} call throws an exception {{m_archive.rollbackRevise()}} is
called this is removing revision at index 0 but the new revision was never added so it's removing
the current revision instead of the new revision.  
> Link to the bndtools issue: https://github.com/bndtools/bndtools/issues/1217



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message