Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] Debugging zookeeper service dsicovery

Hi Bryan,

On 10/5/2010 10:13 AM, Bryan Hunt wrote:
Hi Scott,

I tracked down the cause of the problem.  Inside RemoteServiceEndpointDescriptionImpl.equals() it compares the service id location and remote service id for equality.  In my case since I'm running the two hosts on the same machine, the locations are equal as the values are the IP address of the machine, and the service ids are both 0.  This causes the DiscoveredServiceTrackerImpl.isValidDescription() to return false and the endpoint is not dispatched in the DiscoveredServiceTrackerImpl.serviceChanged().  It's not clear if the root cause is that the location values are only the IP address or if the equals() should compare the endpointId as the endpoint ids are unique.

I see.  Thanks for tracking this down.

I believe this is an omission bug in RemoteServiceEndpointDescriptionImpl...i.e. the RemoteServiceEndpointDescriptionImpl.equals should also take into account equality (or not) of the endpoint ids.  I've created this bug for it:  https://bugs.eclipse.org/bugs/show_bug.cgi?id=327034

The fix is easy enough, and I've already implemented it and attached to the bug.  If others don't see any problem with it, then I'll release it to head.

Thanks,

Scott



Bryan



On Oct 5, 2010, at 11:21 AM, Scott Lewis wrote:

Hi Bryan,

I need to let you/all know...I am very occupied right now and so can't work on this immediately as much as I would like. 

One thing that might help diagnose this Bryan...could you describe a few things?...e.g. what remote services are on exposed via hosts, what is desired/expected to happen, what is the timing of the remote service registrations (i.e. what order do things happen in), and anything else about this use case you think is relevant.

Also...do you think you could use the Logging*DiscoveryListener, and the Logging*DistributionListeners and have things produce the output these listeners?

Thanks,

Scott




On 10/5/2010 8:29 AM, Bryan Hunt wrote:
Hi Scott,

I added in the listeners as suggested - results below.  It looks like the client discovers the second proxy, but never retrieves the second proxy.  Do you have a recommended breakpoint from this datapoint?

Bryan



Output from client:

ZooDiscovery> Service Discovered: Oct 5, 2010 10:18:37 AM. ServiceInfo[uri=9.41.188.106;id=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=9.41.188.106;full=_osgiservices._tcp.default._iana@9.41.188.106];priority=0;weight=0;props=ServiceProperties[{com.ibm.hdwb.jobs.common.monitor.port=9020, ecf.sp.ect=ecf.generic.server, com.ibm.hdwb.jobs.common.monitor.command=/afs/awd/projects/cte/tools/hdwb/prod/llmonitor/monitor.ksh, component.id=22, com.ibm.hdwb.jobs.common.monitor.host=tritium.austin.ibm.com, component.name=com.ibm.hdwb.ll.server.job_queue_service, ll_submit_command=, ecf.rsvc.id=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@313a313a, ecf.sp.cid=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@2e9f2e9f, com.ibm.hdwb.jobs.common.pool.uuid=4ab60c63-c188-48e2-9db5-64d21063b01f, com.ibm.hdwb.jobs.common.monitor.submitter=bhunt, service.factoryPid=com.ibm.hdwb.ll.server.job_queue_service, service.pid=com.ibm.hdwb.ll.server.job_queue_service-1286291916914-0, com.ibm.hdwb.jobs.common.monitor.restlet.port=8080, osgi.remote.service.interfaces=com.ibm.hdwb.jobs.common.IJobQueueService, ecf.rsvc.ns=ecf.namespace.generic.remoteservice, ecf.sp.cns=org.eclipse.ecf.core.identity.StringID, com.ibm.hdwb.jobs.common.monitor.restlet.host=tritium.austin.ibm.com}]]
Proxy discovery discovered: null
Proxy distribution retrieving: 0
Proxy distribution registering: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30001/server];containerRelativeID=0]
Proxy distribution registered: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30001/server];containerRelativeID=0]


ZooDiscovery> Service Discovered: Oct 5, 2010 10:20:16 AM. ServiceInfo[uri=9.41.188.106;id=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=9.41.188.106;full=_osgiservices._tcp.default._iana@9.41.188.106];priority=0;weight=0;props=ServiceProperties[{com.ibm.hdwb.jobs.common.monitor.port=9020, ecf.sp.ect=ecf.generic.server, com.ibm.hdwb.jobs.common.monitor.command=/afs/awd/projects/cte/tools/hdwb/prod/llmonitor/monitor.ksh, component.id=22, com.ibm.hdwb.jobs.common.monitor.host=tritium.austin.ibm.com, component.name=com.ibm.hdwb.ll.server.job_queue_service, ll_submit_command=, ecf.rsvc.id=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@2fc12fc1, ecf.sp.cid=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@2e662e66, com.ibm.hdwb.jobs.common.pool.uuid=4ab60c63-c188-48e2-9db5-64d21063b01f, com.ibm.hdwb.jobs.common.monitor.submitter=bhunt, service.factoryPid=com.ibm.hdwb.ll.server.job_queue_service, service.pid=com.ibm.hdwb.ll.server.job_queue_service-1286292015780-0, com.ibm.hdwb.jobs.common.monitor.restlet.port=8080, osgi.remote.service.interfaces=com.ibm.hdwb.jobs.common.IJobQueueService, ecf.rsvc.ns=ecf.namespace.generic.remoteservice, ecf.sp.cns=org.eclipse.ecf.core.identity.StringID, com.ibm.hdwb.jobs.common.monitor.restlet.host=tritium.austin.ibm.com}]]
Proxy discovery discovered: null



Output from server 1:

Host discovery publish: svc_X3RtmpkBZ991jRm1KJBed4xNURA=
ZooDiscovery> Service Published: Oct 5, 2010 10:18:37 AM. ServiceInfo[uri=osgiservices://9.41.188.106:30001/svc_X3RtmpkBZ991jRm1KJBed4xNURA=;id=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://9.41.188.106:30001/svc_X3RtmpkBZ991jRm1KJBed4xNURA=;full=_osgiservices._tcp.default._iana@osgiservices://9.41.188.106:30001/svc_X3RtmpkBZ991jRm1KJBed4xNURA=];priority=0;weight=0;props=ServiceProperties[{com.ibm.hdwb.jobs.common.monitor.port=9020, ecf.sp.ect=ecf.generic.server, com.ibm.hdwb.jobs.common.monitor.command=/afs/awd/projects/cte/tools/hdwb/prod/llmonitor/monitor.ksh, component.id=22, com.ibm.hdwb.jobs.common.monitor.host=tritium.austin.ibm.com, component.name=com.ibm.hdwb.ll.server.job_queue_service, ecf.rsvc.id=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@5ad05ad0, ll_submit_command=, ecf.sp.cid=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@27412741, com.ibm.hdwb.jobs.common.pool.uuid=4ab60c63-c188-48e2-9db5-64d21063b01f, com.ibm.hdwb.jobs.common.monitor.submitter=bhunt, service.factoryPid=com.ibm.hdwb.ll.server.job_queue_service, service.pid=com.ibm.hdwb.ll.server.job_queue_service-1286291916914-0, com.ibm.hdwb.jobs.common.monitor.restlet.port=8080, osgi.remote.service.interfaces=com.ibm.hdwb.jobs.common.IJobQueueService, ecf.rsvc.ns=ecf.namespace.generic.remoteservice, ecf.sp.cns=org.eclipse.ecf.core.identity.StringID, com.ibm.hdwb.jobs.common.monitor.restlet.host=tritium.austin.ibm.com}]]
Proxy discovery discovered: svc_X3RtmpkBZ991jRm1KJBed4xNURA=
Host distribution registered: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30001/server];containerRelativeID=0]
Proxy distribution retrieving: 0
Proxy distribution registering: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30001/server];containerRelativeID=0]
Proxy distribution registered: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30001/server];containerRelativeID=0]


Output from server 2:

Host discovery publish: svc_VFGjr0XPp/FyTwDrcYMaYDdETwY=
ZooDiscovery> Service Published: Oct 5, 2010 10:20:16 AM. ServiceInfo[uri=osgiservices://9.41.188.106:30002/svc_VFGjr0XPp/FyTwDrcYMaYDdETwY=;id=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://9.41.188.106:30002/svc_VFGjr0XPp/FyTwDrcYMaYDdETwY=;full=_osgiservices._tcp.default._iana@osgiservices://9.41.188.106:30002/svc_VFGjr0XPp/FyTwDrcYMaYDdETwY=];priority=0;weight=0;props=ServiceProperties[{com.ibm.hdwb.jobs.common.monitor.port=9020, ecf.sp.ect=ecf.generic.server, com.ibm.hdwb.jobs.common.monitor.command=/afs/awd/projects/cte/tools/hdwb/prod/llmonitor/monitor.ksh, component.id=22, com.ibm.hdwb.jobs.common.monitor.host=tritium.austin.ibm.com, component.name=com.ibm.hdwb.ll.server.job_queue_service, ecf.rsvc.id=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@1c701c70, ll_submit_command=, ecf.sp.cid=org.eclipse.ecf.discovery.ServiceProperties$ByteArrayWrapper@e090e09, com.ibm.hdwb.jobs.common.pool.uuid=4ab60c63-c188-48e2-9db5-64d21063b01f, com.ibm.hdwb.jobs.common.monitor.submitter=bhunt, service.factoryPid=com.ibm.hdwb.ll.server.job_queue_service, service.pid=com.ibm.hdwb.ll.server.job_queue_service-1286292015780-0, com.ibm.hdwb.jobs.common.monitor.restlet.port=8080, osgi.remote.service.interfaces=com.ibm.hdwb.jobs.common.IJobQueueService, ecf.rsvc.ns=ecf.namespace.generic.remoteservice, ecf.sp.cns=org.eclipse.ecf.core.identity.StringID, com.ibm.hdwb.jobs.common.monitor.restlet.host=tritium.austin.ibm.com}]]
Proxy discovery discovered: svc_VFGjr0XPp/FyTwDrcYMaYDdETwY=
Host distribution registered: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30002/server];containerRelativeID=0]
Proxy distribution retrieving: 0
Proxy distribution registering: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30002/server];containerRelativeID=0]
Proxy distribution registered: org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=StringID[ecftcp://tritium.austin.ibm.com:30002/server];containerRelativeID=0]




On Oct 4, 2010, at 1:00 PM, Scott Lewis wrote:

Hi Bryan,

In addition to breakpoints, it might be useful to use these listeners:

(on host side)
org.eclipse.ecf.osgi.services.discovery.IHostDiscoveryListener
org.eclipse.ecf.osgi.services.distribution.IHostDistributionListener

(on consumer side)
org.eclipse.ecf.osgi.services.discovery.IProxyDiscoveryListener
org.eclipse.ecf.osgi.services.distribution.IProxyDistributionListener

Each of these use the OSGi whiteboard pattern...i.e. create an implementer of these interfaces and register them as OSGi services.  Then when things happen in the discovery and/or distribution implementations, the appropriate methods are called back.

Examples of usage exist in the hello examples projects (i.e. in org.eclipse.ecf.examples.remoteservices.hello.host and org.eclipse.ecf.examples.remoteservices.hello.consumer)...i.e. in the HelloHostApplication and HelloConsumerApplication.

Scott

On 10/4/2010 10:07 AM, Bryan Hunt wrote:
Wim,

I need to start debugging the problem where a remote service is discovered by zookeeper, but no proxy is created when I run multiple servers on the same machine exporting the same service.  Where should I be setting breakpoints to track down this problem?

Bryan
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev

_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev

_______________________________________________ ecf-dev mailing list ecf-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/ecf-dev

_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev

_______________________________________________ ecf-dev mailing list ecf-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/ecf-dev


Back to the top