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

David Bosschaert commented on FELIX-4883:
-----------------------------------------

[[email protected]], [~lbyrum], in general in the Felix codebase there are no 
locks held when calling into custom code (i.e. listeners) as you have no idea 
what this code is doing; if custom code is called while holding a lock this may 
increase the chances of deadlock situations. I'm not sure whether it's a good 
idea to change this. 

Wrt to the ServiceTracker being incorrect. It might be good to take this 
discussion to [osgi-dev|https://mail.osgi.org/mailman/listinfo/osgi-dev] or 
[osgi bugzilla|https://osgi.org/bugzilla/]. The ServiceTracker class in scr is 
actually a copy of the 
[org.osgi.util.tracker.ServiceTracker|https://osgi.org/javadoc/r5/core/org/osgi/util/tracker/ServiceTracker.html]
 class developed by OSGi and since this is quite a complex class it might be 
better to discuss it where the original authors can participate.

On the actual symptom. I guess it would do no harm in changing the dto.bundle 
assignment to check that getBundle() does not return null. Would this help?

> ServiceComponentRuntime.getComponentConfigurationDTOs NullPointerException
> --------------------------------------------------------------------------
>
>                 Key: FELIX-4883
>                 URL: https://issues.apache.org/jira/browse/FELIX-4883
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>         Environment: Linux, Sling, Adobe CQ, org.apache.felix.scr version 
> 1.8.3-R1658944
>            Reporter: Rob Ryan
>            Assignee: David Bosschaert
>            Priority: Minor
>             Fix For: scr-2.0.0
>
>         Attachments: scrtest.zip
>
>
> In our test automation we install a large set of bundles after our also large 
> 'main' app starts up. This causes significant churn as bundles and components 
> are stopped and potentially new versions are started. Unfortunately the coded 
> involved is not open source, so I cannot deliver the full data required to 
> reproduce  the failure described here.
> What I can share is that after all this churn of bundles and components being 
> stopped and started the ScrComponentRuntime service starts to fail with a 
> NullPointerException in getComponentConfigurationDTOs. This was initially 
> noticed as an NPE being reported when visiting the felix console at 
> /system/console/components.
> The stack at the point of failure is:
> java.lang.NullPointerException
>       at 
> org.apache.felix.scr.impl.runtime.ServiceComponentRuntimeImpl.serviceReferenceToDTO(ServiceComponentRuntimeImpl.java:205)
>       at 
> org.apache.felix.scr.impl.runtime.ServiceComponentRuntimeImpl.satisfiedRefManagersToDTO(ServiceComponentRuntimeImpl.java:169)
>       at 
> org.apache.felix.scr.impl.runtime.ServiceComponentRuntimeImpl.managerToConfiguration(ServiceComponentRuntimeImpl.java:145)
>       at 
> org.apache.felix.scr.impl.runtime.ServiceComponentRuntimeImpl.getComponentConfigurationDTOs(ServiceComponentRuntimeImpl.java:119)
>       at com.robr.incqtest.test.ScrTest.test(ScrTest.java:37)
>       ...
> The NPE occurs because a 
> org.apache.felix.framework.ServiceRegistrationImpl.ServiceReferenceImpl being 
> processed in 
> org.apache.felix.scr.impl.runtime.ServiceComponentRuntimeImpl.serviceReferenceToDTO(org.osgi.framework.ServiceReference<?>)
>  line: 205     
> has a m_svcObj of null. So even though the bundle is actually available in 
> the object the getBundle() method returns null.
> [~cziegeler] [~bosschaert] I can investigate further to ideally narrow this 
> down further, but any pointers would be much appreciated.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to