Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 333850

Summary: [r-osgi] Remote service is null for second remote reference
Product: [RT] ECF Reporter: Martin Petzold <mpetzold>
Component: ecf.providersAssignee: Markus Kuppe <bugs.eclipse.org>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: P3 CC: bugs.eclipse.org, slewis
Version: 3.4.0   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
RSConsumer (error comes up here)
none
RSProvider
none
RSConsumer (error comes up here)
none
RSProvider none

Description Martin Petzold CLA 2011-01-10 05:59:08 EST
Environment: JmDNS, R-OSGi

Error occurs on consumer side with a service tracker running, provider side no errors/exceptions. Used a filter with service tracker. The remote service does still work as it should though.

[log;+0100 2011.01.10 11:28:12:666;ERROR;org.eclipse.ecf.osgi.services.distribution;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.distribution;code=4;message=org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl:registerRemoteServiceReferences:Remote service is null for remote reference RemoteServiceReference[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=r-osgi://jumper:9279;containerRelativeID=57];ref=RemoteServiceReference{r-osgi://jumper:9279#57-[devsosgi.simulator.ISimulator]}];severity4;exception=null;children=[]]]
Comment 1 Markus Kuppe CLA 2011-01-10 06:16:19 EST
Can you provide a test case that reproduces this behavior?
Comment 2 Martin Petzold CLA 2011-01-12 08:52:47 EST
Created attachment 186627 [details]
RSConsumer (error comes up here)
Comment 3 Martin Petzold CLA 2011-01-12 08:53:09 EST
Created attachment 186628 [details]
RSProvider
Comment 4 Martin Petzold CLA 2011-01-12 08:54:06 EST
I have added a test case (very simple!). Please use the *.launch files to start an appropriate environment. First start the RSConsumer, then the RSProvider. The error occurs on the RSConsumer side.

I would be very pleased about hints for a fix or workaround.
Comment 5 Markus Kuppe CLA 2011-01-12 09:59:37 EST
You don't get any exception on the provider end?
Comment 6 Martin Petzold CLA 2011-01-12 12:12:31 EST
No exception on provider end.
Comment 7 Martin Petzold CLA 2011-01-13 06:08:01 EST
Created attachment 186713 [details]
RSConsumer (error comes up here)
Comment 8 Martin Petzold CLA 2011-01-13 06:08:21 EST
Created attachment 186714 [details]
RSProvider
Comment 9 Martin Petzold CLA 2011-01-13 06:09:14 EST
RSProvider:

osgi> WARNING: Port 9278 already in use. This instance of R-OSGi is running on port 9280
[log;+0100 2011.01.13 12:05:14:211;INFO;org.eclipse.ecf.osgi.services.discovery;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.discovery;code=1;message=serviceDiscovered:ignoring loopback ServiceReference: ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9280/svc_H44/ugnZY3CFa7BwubhIhsRnNis=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9280/svc_H44/ugnZY3CFa7BwubhIhsRnNis=];severity1;exception=null;children=[]]]
[log;+0100 2011.01.13 12:05:16:948;INFO;org.eclipse.ecf.osgi.services.discovery;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.discovery;code=1;message=serviceDiscovered:ignoring loopback ServiceReference: ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9280/svc_YX4lK27cjm24r2j9hkOmbAlnK+o=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9280/svc_YX4lK27cjm24r2j9hkOmbAlnK+o=];severity1;exception=null;children=[]]]


RSConsumer:

osgi> WARNING: Port 9278 already in use. This instance of R-OSGi is running on port 9279
[log;+0100 2011.01.13 12:05:14:387;INFO;org.eclipse.ecf.remoteservice;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.remoteservice;code=0;message=No async remote service interface found with name=services.ServiceAAsync for proxy service class=services.ServiceA;severity2;exception=null;children=[]]]
[log;+0100 2011.01.13 12:05:16:973;ERROR;org.eclipse.ecf.osgi.services.distribution;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.distribution;code=4;message=org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl:registerRemoteServiceReferences:Remote service is null for remote reference RemoteServiceReference[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=r-osgi://jumper:9280;containerRelativeID=54];ref=RemoteServiceReference{r-osgi://jumper:9280#54-[services.ServiceA]}];severity4;exception=null;children=[]]]
Comment 10 Markus Kuppe CLA 2011-01-14 09:50:47 EST
Please provide patches to the two existing projects. New projects make it hard to track your changes and incorporate them with mine.
Comment 11 Martin Petzold CLA 2011-01-14 10:15:58 EST
(In reply to comment #10)
> Please provide patches to the two existing projects. New projects make it hard
> to track your changes and incorporate them with mine.

Okay, I just added the service interface also to the RSConsumer (was missing there). But nothing changed so this was not the problem.
Comment 12 Markus Kuppe CLA 2011-01-14 10:23:36 EST
Can you set a breakpoint in org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl.registerRemoteServiceReferences(RemoteServiceEndpointDescription, IRemoteServiceContainer, IRemoteServiceReference[]) line 583 and issue "services" on the console when it's hit?
Comment 13 Martin Petzold CLA 2011-01-14 10:40:32 EST
(In reply to comment #12)
> Can you set a breakpoint in
> org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl.registerRemoteServiceReferences(RemoteServiceEndpointDescription,
> IRemoteServiceContainer, IRemoteServiceReference[]) line 583 and issue
> "services" on the console when it's hit?

remoteReferences =
[RemoteServiceReference[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=r-osgi://jumper:9279;containerRelativeID=54];ref=RemoteServiceReference{r-osgi://jumper:9279#54-[services.ServiceA]}]]

remoteService = null

So null of course does come from remoteServiceContainer					.getContainerAdapter().getRemoteService(...)
Comment 14 Martin Petzold CLA 2011-01-14 10:43:34 EST
(In reply to comment #13)
> (In reply to comment #12)
> > Can you set a breakpoint in
> > org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl.registerRemoteServiceReferences(RemoteServiceEndpointDescription,
> > IRemoteServiceContainer, IRemoteServiceReference[]) line 583 and issue
> > "services" on the console when it's hit?
> 
> remoteReferences =
> [RemoteServiceReference[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=r-osgi://jumper:9279;containerRelativeID=54];ref=RemoteServiceReference{r-osgi://jumper:9279#54-[services.ServiceA]}]]
> 
> remoteService = null
> 
> So null of course does come from remoteServiceContainer                   
> .getContainerAdapter().getRemoteService(...)

The FIRST service registered is not null, it is:

remoteReferences = [RemoteServiceReference[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=r-osgi://jumper:9279;containerRelativeID=52];ref=RemoteServiceReference{r-osgi://jumper:9279#52-[services.ServiceA]}]]

remoteService = org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceImpl@74c12978
Comment 15 Martin Petzold CLA 2011-01-14 10:45:30 EST
(In reply to comment #14)
> (In reply to comment #13)
> > (In reply to comment #12)
> > > Can you set a breakpoint in
> > > org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl.registerRemoteServiceReferences(RemoteServiceEndpointDescription,
> > > IRemoteServiceContainer, IRemoteServiceReference[]) line 583 and issue
> > > "services" on the console when it's hit?
> > 
> > remoteReferences =
> > [RemoteServiceReference[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=r-osgi://jumper:9279;containerRelativeID=54];ref=RemoteServiceReference{r-osgi://jumper:9279#54-[services.ServiceA]}]]
> > 
> > remoteService = null
> > 
> > So null of course does come from remoteServiceContainer                   
> > .getContainerAdapter().getRemoteService(...)
> 
> The FIRST service registered is not null, it is:
> 
> remoteReferences =
> [RemoteServiceReference[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=r-osgi://jumper:9279;containerRelativeID=52];ref=RemoteServiceReference{r-osgi://jumper:9279#52-[services.ServiceA]}]]
> 
> remoteService =
> org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceImpl@74c12978

I think it could be something on provider end or with the R-OSGi Container of course...
Comment 16 Markus Kuppe CLA 2011-01-14 10:51:02 EST
I need the output of "services" issued on the console when the breakpoint is
hit.
Comment 17 Martin Petzold CLA 2011-01-14 10:59:39 EST
(In reply to comment #16)
> I need the output of "services" issued on the console when the breakpoint is
> hit.

Hi Markus, sorry I'm not sure what to do, I don't have a "services" var there. Do you mean "this.serviceLocations":

[RemoteServiceEndpointDescriptionImpl[svcInterfaces=[services.ServiceA];supportedConfigTypes=[ecf.r_osgi.peer];serviceIntents=null;location=null;remoteServiceId=52;discoveryServiceID=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9279/svc_lBGjGs3zl4MOLUNu8y6o0j7PFeE=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9279/svc_lBGjGs3zl4MOLUNu8y6o0j7PFeE=];endpointID=null;endpointAsID=r-osgi://jumper:9279;connectTargetID=null;remoteServicesFilter=null;props={ecf.rsvc.ns=ecf.namespace.r_osgi.remoteservice, osgi.remote.service.interfaces=services.ServiceA, ecf.sp.cns=ecf.namespace.r_osgi, ecf.rsvc.id=[B@6d56d7c8, org.eclipse.ecf.internal.discovery.id=[B@41a7c484, ecf.sp.ect=ecf.r_osgi.peer, ecf.sp.cid=[B@6070c38c}], RemoteServiceEndpointDescriptionImpl[svcInterfaces=[services.ServiceA];supportedConfigTypes=[ecf.r_osgi.peer];serviceIntents=null;location=null;remoteServiceId=54;discoveryServiceID=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9279/svc_Bogjr3V4fuSvV/hFcrYKI4ZsuOI=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9279/svc_Bogjr3V4fuSvV/hFcrYKI4ZsuOI=];endpointID=null;endpointAsID=r-osgi://jumper:9279;connectTargetID=null;remoteServicesFilter=null;props={ecf.rsvc.ns=ecf.namespace.r_osgi.remoteservice, osgi.remote.service.interfaces=services.ServiceA, ecf.sp.cns=ecf.namespace.r_osgi, ecf.rsvc.id=[B@31d1fc02, org.eclipse.ecf.internal.discovery.id=[B@31be0369, ecf.sp.ect=ecf.r_osgi.peer, ecf.sp.cid=[B@50f800db}]]
Comment 18 Markus Kuppe CLA 2011-01-14 11:38:19 EST
Never mind, try this patch:

diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/
index 5dd3433..9ae51d9 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
@@ -1043,6 +1043,8 @@ public final class ChannelEndpointImpl implements ChannelEndpoint {
                        final String serviceID = suMsg.getServiceID();
                        final short stateUpdate = suMsg.getType();
 
+                       final String serviceURI = getRemoteAddress()
+                                       .resolve("#" + serviceID).toString();
                        switch (stateUpdate) {
                        case LeaseUpdateMessage.TOPIC_UPDATE: {
                                updateTopics((String[]) suMsg.getPayload()[0], (String[]) suMsg
@@ -1054,8 +1056,7 @@ public final class ChannelEndpointImpl implements ChannelEndpoint {
                                                (String[]) suMsg.getPayload()[0], serviceID,
                                                (Dictionary) suMsg.getPayload()[1], this);
 
-                               remoteServices.put(getRemoteAddress().resolve("#" + serviceID) //$NON-NLS-1$
-                                               .toString(), ref);
+                               remoteServices.put(serviceURI, ref);
 
                                RemoteOSGiServiceImpl
                                                .notifyRemoteServiceListeners(new RemoteServiceEvent(
@@ -1065,14 +1066,18 @@ public final class ChannelEndpointImpl implements ChannelEndpoint {
                        }
                        case LeaseUpdateMessage.SERVICE_MODIFIED: {
                                final Dictionary newProps = (Dictionary) suMsg.getPayload()[1];
+                               //sanitize new properties
+                               newProps.put(RemoteOSGiService.SERVICE_URI, serviceURI);
+                               newProps.remove(Constants.SERVICE_PID);
+                               newProps.remove(RemoteOSGiService.R_OSGi_REGISTRATION);
+                               
                                final ServiceRegistration reg = (ServiceRegistration) proxiedServices
                                                .get(serviceID);
                                if (reg != null) {
                                        reg.setProperties(newProps);
                                }
 
-                               final RemoteServiceReferenceImpl ref = getRemoteReference(getRemoteAddress()
-                                               .resolve("#" + serviceID).toString()); //$NON-NLS-1$
+                               final RemoteServiceReferenceImpl ref = getRemoteReference(serviceURI); //$NON-NLS-1$
                                ref.setProperties(newProps);
                                RemoteOSGiServiceImpl
                                                .notifyRemoteServiceListeners(new RemoteServiceEvent(
@@ -1084,8 +1089,7 @@ public final class ChannelEndpointImpl implements ChannelEndpoint {
                                        return null;
                                }
                                final RemoteServiceReference ref = (RemoteServiceReference) remoteServices
-                                               .remove(getRemoteAddress().resolve("#" + serviceID) //$NON-NLS-1$
-                                                               .toString());
+                                               .remove(serviceURI);
                                if (ref != null) {
                                        RemoteOSGiServiceImpl
                                                        .notifyRemoteServiceListeners(new RemoteServiceEvent(
@@ -1100,8 +1104,7 @@ public final class ChannelEndpointImpl implements ChannelEndpoint {
                                                be.printStackTrace();
                                        }
                                        proxiedServices.remove(serviceID);
-                                       remoteServices.remove(getRemoteAddress().resolve(
-                                                       "#" + serviceID).toString()); //$NON-NLS-1$
+                                       remoteServices.remove(serviceURI); //$NON-NLS-1$
                                }
Comment 19 Martin Petzold CLA 2011-01-14 12:46:24 EST
Hm, it does seem to fix this bug in the test case (given here) but it's not bug free in my full case. There I are services beeing registered roughly the same time. Open a new bug or stay with this? I think they could have similar reasons...

Now there is this ERROR ("getRemoteServiceReferences result is empty") sometimes not, and often also with an Exception on provider side:

I'll look at this again tomorrow. Good luck and thanks for your help!

----- Consumer end-----

[log;+0100 2011.01.14 18:39:27:542;INFO;org.eclipse.ecf.remoteservice;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.remoteservice;code=0;message=No async remote service interface found with name=devsosgi.simulator.IAtomicSimulatorAsync for proxy service class=devsosgi.simulator.IAtomicSimulator;severity2;exception=null;children=[]]]
[log;+0100 2011.01.14 18:39:27:557;INFO;org.eclipse.ecf.remoteservice;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.remoteservice;code=0;message=No async remote service interface found with name=devsosgi.simulator.IAtomicSimulatorAsync for proxy service class=devsosgi.simulator.IAtomicSimulator;severity2;exception=null;children=[]]]
[log;+0100 2011.01.14 18:39:29:973;ERROR;org.eclipse.ecf.osgi.services.distribution;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.distribution;code=4;message=org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl:handleDiscoveredServiceAvailable:getRemoteServiceReferences result is empty. containerHelper=RemoteServiceContainer [containerID=r-osgi://jumper:9278, container=org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer@1b8d4c9a, containerAdapter=org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer@1b8d4c9a]remoteReferences=null;severity4;exception=null;children=[]]]

----- Provider end-----

!ENTRY org.eclipse.osgi 4 0 2011-01-14 18:39:23.347
!MESSAGE An unexpected runtime error has occurred.
!STACK 0
java.lang.NullPointerException
	at ch.ethz.iks.r_osgi.impl.RemoteOSGiServiceImpl$3.modifiedService(RemoteOSGiServiceImpl.java:556)
	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:711)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
	at org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:370)
	at org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:342)
	at org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.handleRegisteredServiceEvent(EventHookImpl.java:126)
	at org.eclipse.ecf.internal.osgi.services.distribution.Activator.registerExistingServices(Activator.java:196)
	at org.eclipse.ecf.internal.osgi.services.distribution.Activator.access$0(Activator.java:187)
	at org.eclipse.ecf.internal.osgi.services.distribution.Activator$1.run(Activator.java:181)
	at java.lang.Thread.run(Unknown Source)

!ENTRY ch.ethz.iks.r_osgi.remote 4 0 2011-01-14 18:39:23.348
!MESSAGE 
!STACK 0
java.lang.NullPointerException
	at ch.ethz.iks.r_osgi.impl.RemoteOSGiServiceImpl$3.modifiedService(RemoteOSGiServiceImpl.java:556)
	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:711)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
	at org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:370)
	at org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:342)
	at org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.handleRegisteredServiceEvent(EventHookImpl.java:126)
	at org.eclipse.ecf.internal.osgi.services.distribution.Activator.registerExistingServices(Activator.java:196)
	at org.eclipse.ecf.internal.osgi.services.distribution.Activator.access$0(Activator.java:187)
	at org.eclipse.ecf.internal.osgi.services.distribution.Activator$1.run(Activator.java:181)
	at java.lang.Thread.run(Unknown Source)
[log;+0100 2011.01.14 18:39:27:369;INFO;org.eclipse.ecf.osgi.services.discovery;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.discovery;code=1;message=serviceDiscovered:ignoring loopback ServiceReference: ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9279/svc_qmjBascz9BO4EwHO4/uSYij33dU=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9279/svc_qmjBascz9BO4EwHO4/uSYij33dU=];severity1;exception=null;children=[]]]
[14.01.2011 18:39:28][devsosgi.simulator.atomic.AtomicComponentTracker] INFO : devsosgi.model.crossing.Crossing -> Atomic simulator created and registered.
[log;+0100 2011.01.14 18:39:29:972;INFO;org.eclipse.ecf.osgi.services.discovery;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.discovery;code=1;message=serviceDiscovered:ignoring loopback ServiceReference: ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9279/svc_0PPDnFHzpBeWvffGume2FweTrHk=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9279/svc_0PPDnFHzpBeWvffGume2FweTrHk=];severity1;exception=null;children=[]]]

----- Sometimes with this on provider end-----

Exception in thread "r-OSGi ChannelWorkerThread0" java.lang.NullPointerException
	at ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl.populateLease(ChannelEndpointImpl.java:1383)
	at ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl.handleMessage(ChannelEndpointImpl.java:1025)
	at ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl$2.run(ChannelEndpointImpl.java:288)
	at ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl$1.run(ChannelEndpointImpl.java:253)
Comment 21 Markus Kuppe CLA 2011-01-14 15:19:02 EST
(In reply to comment #19)
> Hm, it does seem to fix this bug in the test case (given here) but it's not bug
> free in my full case. There I are services beeing registered roughly the same
> time. Open a new bug or stay with this? I think they could have similar
> reasons...
> 
> Now there is this ERROR ("getRemoteServiceReferences result is empty")
> sometimes not, and often also with an Exception on provider side:
> 
> I'll look at this again tomorrow. Good luck and thanks for your help!
> 
> ----- Consumer end-----
> 
> [log;+0100 2011.01.14
> 18:39:27:542;INFO;org.eclipse.ecf.remoteservice;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.remoteservice;code=0;message=No
> async remote service interface found with
> name=devsosgi.simulator.IAtomicSimulatorAsync for proxy service
> class=devsosgi.simulator.IAtomicSimulator;severity2;exception=null;children=[]]]
> [log;+0100 2011.01.14
> 18:39:27:557;INFO;org.eclipse.ecf.remoteservice;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.remoteservice;code=0;message=No
> async remote service interface found with
> name=devsosgi.simulator.IAtomicSimulatorAsync for proxy service
> class=devsosgi.simulator.IAtomicSimulator;severity2;exception=null;children=[]]]
> [log;+0100 2011.01.14
> 18:39:29:973;ERROR;org.eclipse.ecf.osgi.services.distribution;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.distribution;code=4;message=org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl:handleDiscoveredServiceAvailable:getRemoteServiceReferences
> result is empty. containerHelper=RemoteServiceContainer
> [containerID=r-osgi://jumper:9278,
> container=org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer@1b8d4c9a,
> containerAdapter=org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer@1b8d4c9a]remoteReferences=null;severity4;exception=null;children=[]]]
> 
> ----- Provider end-----
> 
> !ENTRY org.eclipse.osgi 4 0 2011-01-14 18:39:23.347
> !MESSAGE An unexpected runtime error has occurred.
> !STACK 0
> java.lang.NullPointerException
>     at
> ch.ethz.iks.r_osgi.impl.RemoteOSGiServiceImpl$3.modifiedService(RemoteOSGiServiceImpl.java:556)
>     at
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
>     at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
>     at
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
>     at
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
>     at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
>     at
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
>     at
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
>     at
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
>     at
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:711)
>     at
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
>     at
> org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:370)
>     at
> org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:342)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.handleRegisteredServiceEvent(EventHookImpl.java:126)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.Activator.registerExistingServices(Activator.java:196)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.Activator.access$0(Activator.java:187)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.Activator$1.run(Activator.java:181)
>     at java.lang.Thread.run(Unknown Source)
> 
> !ENTRY ch.ethz.iks.r_osgi.remote 4 0 2011-01-14 18:39:23.348
> !MESSAGE 
> !STACK 0
> java.lang.NullPointerException
>     at
> ch.ethz.iks.r_osgi.impl.RemoteOSGiServiceImpl$3.modifiedService(RemoteOSGiServiceImpl.java:556)
>     at
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
>     at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
>     at
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
>     at
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
>     at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
>     at
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
>     at
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
>     at
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
>     at
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:711)
>     at
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
>     at
> org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:370)
>     at
> org.eclipse.ecf.internal.provider.r_osgi.R_OSGiRemoteServiceContainer.registerRemoteService(R_OSGiRemoteServiceContainer.java:342)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.handleRegisteredServiceEvent(EventHookImpl.java:126)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.Activator.registerExistingServices(Activator.java:196)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.Activator.access$0(Activator.java:187)
>     at
> org.eclipse.ecf.internal.osgi.services.distribution.Activator$1.run(Activator.java:181)
>     at java.lang.Thread.run(Unknown Source)
> [log;+0100 2011.01.14
> 18:39:27:369;INFO;org.eclipse.ecf.osgi.services.discovery;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.discovery;code=1;message=serviceDiscovered:ignoring
> loopback ServiceReference:
> ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9279/svc_qmjBascz9BO4EwHO4/uSYij33dU=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9279/svc_qmjBascz9BO4EwHO4/uSYij33dU=];severity1;exception=null;children=[]]]
> [14.01.2011 18:39:28][devsosgi.simulator.atomic.AtomicComponentTracker] INFO :
> devsosgi.model.crossing.Crossing -> Atomic simulator created and registered.
> [log;+0100 2011.01.14
> 18:39:29:972;INFO;org.eclipse.ecf.osgi.services.discovery;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf.osgi.services.discovery;code=1;message=serviceDiscovered:ignoring
> loopback ServiceReference:
> ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.0.104:9279/svc_0PPDnFHzpBeWvffGume2FweTrHk=;full=_osgiservices._tcp.default._iana@osgiservices://192.168.0.104:9279/svc_0PPDnFHzpBeWvffGume2FweTrHk=];severity1;exception=null;children=[]]]
> 
> ----- Sometimes with this on provider end-----
> 
> Exception in thread "r-OSGi ChannelWorkerThread0"
> java.lang.NullPointerException
>     at
> ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl.populateLease(ChannelEndpointImpl.java:1383)
>     at
> ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl.handleMessage(ChannelEndpointImpl.java:1025)
>     at
> ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl$2.run(ChannelEndpointImpl.java:288)
>     at
> ch.ethz.iks.r_osgi.impl.ChannelEndpointImpl$1.run(ChannelEndpointImpl.java:253)

Please file a new bug and attach a test case.
Comment 22 Markus Kuppe CLA 2011-01-14 15:20:57 EST
Raised bug upstream too https://sourceforge.net/tracker/?func=detail&aid=3158437&group_id=158382&atid=807609