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

Karl Pauls commented on FELIX-721:
----------------------------------

Hi Stuart,

yes, this makes sense. It seems to be the children member. Would it be enough 
to make buildTree look like this:

public void buildTree(Stack operands)
        {
            Operator[] tmp = new Operator[operandCount];
            // need to preserve stack order
            for (int i = 0; i < operandCount; i++)
            {
                tmp[(operandCount - 1) - i] =
                    (Operator) operands.pop();
            }
            children = tmp;
            operands.push(this);
        }

this way we don't need sync and are optimistic (i.e., it might be that we do 
some work twice but we assume thats cheaper then to always sync). 

> NPE in FilterImpl.toString()
> ----------------------------
>
>                 Key: FELIX-721
>                 URL: https://issues.apache.org/jira/browse/FELIX-721
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: felix-1.0.4
>            Reporter: Don Brown
>
> We see this NPE occasionally, probably 10% of the time on application startup:
>      [java] java.lang.NullPointerException
>      [java]     at 
> org.apache.felix.framework.util.ldap.Parser$AndOperator.toStringInfix(Parser.java:601)
>      [java]     at 
> org.apache.felix.framework.util.ldap.Evaluator.toStringInfix(Evaluator.java:184)
>      [java]     at 
> org.apache.felix.framework.FilterImpl.toString(FilterImpl.java:242)
>      [java]     at java.lang.String.valueOf(String.java:2615)
>      [java]     at java.lang.StringBuffer.append(StringBuffer.java:220)
>      [java]     at 
> org.springframework.osgi.service.importer.DefaultOsgiServiceDependency.<init>(DefaultOsgiServiceDependency.java:52)
>      [java]     at 
> org.springframework.osgi.extender.internal.dependencies.startup.MandatoryImporterDependencyFactory.getServiceDependencies(MandatoryImporterDependencyFactory.java:69)
>      [java]     at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.findServiceDependencies(DependencyServiceManager.java:233)
>      [java]     at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:248)
>      [java]     at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:172)
>      [java]     at 
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:136)
>      [java]     at 
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:746)
>      [java]     at java.lang.Thread.run(Thread.java:613)
> My first guess would be we are constructing a filter improperly in our Spring 
> config, but the fact that it only happens some of the time is strange.  If 
> nothing else, it would be nice if this bit of code was a bit more defensive.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to