| Summary: | [r-osgi] Remote service is null for second remote reference | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [RT] ECF | Reporter: | Martin Petzold <mpetzold> | ||||||||||
| Component: | ecf.providers | Assignee: | 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: |
|
||||||||||||
Can you provide a test case that reproduces this behavior? Created attachment 186627 [details]
RSConsumer (error comes up here)
Created attachment 186628 [details]
RSProvider
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. You don't get any exception on the provider end? No exception on provider end. Created attachment 186713 [details]
RSConsumer (error comes up here)
Created attachment 186714 [details]
RSProvider
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=[]]]
Please provide patches to the two existing projects. New projects make it hard to track your changes and incorporate them with mine. (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. 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? (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(...) (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 (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... I need the output of "services" issued on the console when the breakpoint is hit. (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}]] 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$
}
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)
Fix released to master with http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/commit/?id=e1a95f36c362194b503722d9b0ff1b92bb4cab17 (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. Raised bug upstream too https://sourceforge.net/tracker/?func=detail&aid=3158437&group_id=158382&atid=807609 |
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=[]]]