You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Benjamin Debeerst (JIRA)" <ji...@apache.org> on 2014/07/17 20:55:06 UTC

[jira] [Created] (FELIX-4565) Occasional ArrayIndexOutOfBoundException in iPOJO's ProvidedServiceHandler

Benjamin Debeerst created FELIX-4565:
----------------------------------------

             Summary: Occasional ArrayIndexOutOfBoundException in iPOJO's ProvidedServiceHandler
                 Key: FELIX-4565
                 URL: https://issues.apache.org/jira/browse/FELIX-4565
             Project: Felix
          Issue Type: Bug
          Components: iPOJO
    Affects Versions: ipojo-runtime-1.11.2
         Environment: Karaf 2.3.3 / Windows 7 64 bit
            Reporter: Benjamin Debeerst


I have an iPOJO (1.11.2) component using the @ServiceController annotation to control the service publishing. Most of the time this works perfectly fine, but occasionally I get an ArrayIndexOutOfBoundsException.

{code}
java.lang.ArrayIndexOutOfBoundsException: 4
               at org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.__M_onSet(ProvidedServiceHandler.java:416)[83:org.apache.felix.ipojo:1.11.2]
               at org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.onSet(ProvidedServiceHandler.java)[83:org.apache.felix.ipojo:1.11.2]
               at org.apache.felix.ipojo.InstanceManager.onSet(InstanceManager.java:1401)[83:org.apache.felix.ipojo:1.11.2]
               [..] (My own code following, where the service controller boolean is manipulated)
{code}

Unfortunately I cannot share the consumer code nor reproduce the problem. I looked into [iPOJOs code|http://grepcode.com/file/repo1.maven.org/maven2/org.apache.felix/org.apache.felix.ipojo/1.11.2/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java#416] to see what's going on, and there we have:

{code}
for (int j = 0; j < svc.getProperties().length; j++) { Property prop = svc.getProperties()[j];
               [...]
}
{code}

Which looks like a proper race condition to me, if svc.getProperties() changes its value in the meantime because of missing synchronizations. I don't see any synchronizations there, but I also don't know if they would be appropriate in the first place.




--
This message was sent by Atlassian JIRA
(v6.2#6252)