[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [ecf-dev] Re: ecf-dev Digest, Vol 45, Issue 35 | 
Hi Roshan,
Thanks for helping with the testing of the activemq provider.  I'm going 
to step through your log and identify where/how it's diverging from mine 
for the ActiveMQServiceRegisterTest.testGetProxy (I think all the test 
cases are seeing the same thing, so focusing on this one is reasonable).
First, the exception that starts with
[log;+0530 2009.05.21 
20:41:23:469;ERROR;org.eclipse.ecf;org.eclipse.core.runtime.Status[plugin=org.eclipse.ecf;code=4;message=getSupportedIntents;severity4;exception=java.lang.ArrayStoreException;children=[]]]
java.lang.ArrayStoreException
   at java.lang.System.arraycopy(Native Method)
   at java.util.Arrays.copyOf(Unknown Source)
   at java.util.ArrayList.toArray(Unknown Source)
   at 
org.eclipse.ecf.internal.provider.jms.activemq.ActiveMQJMSServerContainerInstantiator.getSupportedIntents(ActiveMQJMSServerContainerInstantiator.java:71)
...
Was a small bug in the getSupportedIntents implementation.  It's now 
fixed and released to HEAD.  So you shouldn't see it again.
This warning:
WARNING: path isn't a valid local location for TcpTransport to use
java.lang.NumberFormatException: For input string: "/exampleTopic"
   at java.lang.NumberFormatException.forInputString(Unknown Source)
   at java.lang.Integer.parseInt(Unknown Source)
   at java.lang.Integer.parseInt(Unknown Source)
   at 
org.apache.activemq.transport.tcp.TcpTransportFactory.createTransport(TcpTransportFactory.java:125)
...
I've reported to ActiveMQ with this bug:  
https://issues.apache.org/activemq/browse/AMQ-2256
It's not fatal, however, as the NumberFormatException is simply caught 
and logged as a warning within ActiveMQ.  Until ActiveMQ fixes it I 
think we're just going to have to live with it.
Now, we get to the main difference.  You have this output:
hostRegistered
   
serviceReference={org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1}={osgi.remote.interfaces=[*], 
foo=bar, ecf.rsvc.cid=JMSID[tcp://localhost:61616/exampleTopic], 
service.id=120}
   remoteServiceContainer=RemoteServiceContainer 
[containerID=JMSID[tcp://localhost:61616/exampleTopic], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSServerContainer@1ce08c7, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@27de24]
   
remoteRegistration=RemoteServiceRegistrationImpl[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=JMSID[tcp://localhost:61616/exampleTopic];containerRelativeID=0];containerID=JMSID[tcp://localhost:61616/exampleTopic];serviceid=0;serviceranking=0;classes=[org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1];state=0;properties={ecf.rsvc.id=0, 
foo=bar}]
<scott>  This indicates that the remote service was registered with the 
ActiveMQJMSServerContainer.  This is fine/looks correct.
proxyRetrievingRemoteServiceReferences
   
endpointDescription=ServiceEndpointDescriptionImpl[;providedinterfaces=[org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1];location=null;serviceid=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.2.100:61616;full=_osgiservices._tcp.default._iana@osgiservices://192.168.2.100:61616];osgiEndpointID=null;ecfEndpointID=JMSID[jms:tcp://localhost:61616/exampleTopic];ecfTargetID=null;ecfFilter=null;props={ecf.rsvc.ns=ecf.namespace.generic.remoteservice, 
osgi.remote.service.interfaces=org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1, 
ecf.sp.cns=ecf.namespace.jmsid, ecf.rsvc.id=0, ecf.sp.cid=[B@6946d2, 
foo=bar}]
   remoteServiceContainer=RemoteServiceContainer 
[containerID=GUID[9Q0rlDD3OfhdZFTi0KGHbQZ7rX4=], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSClientContainer@1a3a52c, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@a65760]
<scott>this indicates that you have received a discovery notification 
(good), and that the proxy lookup has begun.  But at this point you then 
get the failure...as indicated by the TRACE and the log entry:
(TRACE)[05/21/09;20:41:37:545]TRACING 
org.eclipse.ecf.internal.osgi.services.distribution.DiscoveredServiceTrackerImpl#handleDiscoveredServiceAvailable(getRemoteServiceReferences 
result is empty. containerHelper=RemoteServiceContainer 
[containerID=GUID[9Q0rlDD3OfhdZFTi0KGHbQZ7rX4=], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSClientContainer@1a3a52c, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@a65760]remoteReferences=null) 
[log;+0530 2009.05.21 
20:41:37:545;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=GUID[9Q0rlDD3OfhdZFTi0KGHbQZ7rX4=], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSClientContainer@1a3a52c, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@a65760]remoteReferences=null;severity4;exception=null;children=[]]]
<scott> the crucial information here is that 
remoteReferences=null...that is, the lookup via 
getRemoteServicesReference did not find an remote references.  This is 
puzzeling as here is the output from my own local runs:
hostRegistered
   
serviceReference={org.eclipse.ecf.tests.remoteservice.IConcatService}={osgi.remote.interfaces=[*], 
ecf.rsvc.cid=JMSID[tcp://localhost:61616/exampleTopic], service.id=128}
   remoteServiceContainer=RemoteServiceContainer 
[containerID=JMSID[tcp://localhost:61616/exampleTopic], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSServerContainer@143b93b, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@1d3e3f3]
   
remoteRegistration=RemoteServiceRegistrationImpl[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=JMSID[tcp://localhost:61616/exampleTopic];containerRelativeID=0];containerID=JMSID[tcp://localhost:61616/exampleTopic];serviceid=0;serviceranking=0;classes=[org.eclipse.ecf.tests.remoteservice.IConcatService];state=0;properties={ecf.rsvc.id=0}]
<scott> indicates service registered
proxyRetrievingRemoteServiceReferences
   
endpointDescription=ServiceEndpointDescriptionImpl[;providedinterfaces=[org.eclipse.ecf.tests.remoteservice.IConcatService];location=null;serviceid=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.1.101:61616;full=_osgiservices._tcp.default._iana@osgiservices://192.168.1.101:61616];osgiEndpointID=null;ecfEndpointID=JMSID[tcp://localhost:61616/exampleTopic];ecfTargetID=null;ecfFilter=null;props={ecf.rsvc.ns=ecf.namespace.generic.remoteservice, 
osgi.remote.service.interfaces=org.eclipse.ecf.tests.remoteservice.IConcatService, 
ecf.sp.cns=ecf.namespace.jmsid, ecf.rsvc.id=[B@d63b5b, 
ecf.sp.cid=[B@d300ed}]
   remoteServiceContainer=RemoteServiceContainer 
[containerID=GUID[4yl/AwIGzkdF0+OHUOuPeYwkGrU=], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSClientContainer@6a5afc, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@5f39b0]
<scott> indicates remote service discovered, and proxy is being looked up
proxyRegistering
   
endpointDescription=ServiceEndpointDescriptionImpl[;providedinterfaces=[org.eclipse.ecf.tests.remoteservice.IConcatService];location=null;serviceid=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.1.101:61616;full=_osgiservices._tcp.default._iana@osgiservices://192.168.1.101:61616];osgiEndpointID=null;ecfEndpointID=JMSID[tcp://localhost:61616/exampleTopic];ecfTargetID=null;ecfFilter=null;props={ecf.rsvc.ns=ecf.namespace.generic.remoteservice, 
osgi.remote.service.interfaces=org.eclipse.ecf.tests.remoteservice.IConcatService, 
ecf.sp.cns=ecf.namespace.jmsid, ecf.rsvc.id=[B@d63b5b, 
ecf.sp.cid=[B@d300ed}]
   remoteServiceContainer=RemoteServiceContainer 
[containerID=GUID[4yl/AwIGzkdF0+OHUOuPeYwkGrU=], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSClientContainer@6a5afc, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@5f39b0]
   
remoteServiceReference=RemoteServiceReferenceImpl[class=org.eclipse.ecf.tests.remoteservice.IConcatService;registration=RemoteServiceRegistrationImpl[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=JMSID[tcp://localhost:61616/exampleTopic];containerRelativeID=0];containerID=JMSID[tcp://localhost:61616/exampleTopic];serviceid=0;serviceranking=0;classes=[org.eclipse.ecf.tests.remoteservice.IConcatService];state=0;properties={ecf.rsvc.id=0}]]
<scott> indicates remote reference *was* successfully retrieved and that 
the proxy is being registered locally
proxyRegistered
   
endpointDescription=ServiceEndpointDescriptionImpl[;providedinterfaces=[org.eclipse.ecf.tests.remoteservice.IConcatService];location=null;serviceid=ServiceID[type=ServiceTypeID[typeName=_osgiservices._tcp.default._iana];location=osgiservices://192.168.1.101:61616;full=_osgiservices._tcp.default._iana@osgiservices://192.168.1.101:61616];osgiEndpointID=null;ecfEndpointID=JMSID[tcp://localhost:61616/exampleTopic];ecfTargetID=null;ecfFilter=null;props={ecf.rsvc.ns=ecf.namespace.generic.remoteservice, 
osgi.remote.service.interfaces=org.eclipse.ecf.tests.remoteservice.IConcatService, 
ecf.sp.cns=ecf.namespace.jmsid, ecf.rsvc.id=[B@d63b5b, 
ecf.sp.cid=[B@d300ed}]
   remoteServiceContainer=RemoteServiceContainer 
[containerID=GUID[4yl/AwIGzkdF0+OHUOuPeYwkGrU=], 
container=org.eclipse.ecf.provider.jms.activemq.container.ActiveMQJMSClientContainer@6a5afc, 
containerAdapter=org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject@5f39b0]
   
remoteServiceReference=RemoteServiceReferenceImpl[class=org.eclipse.ecf.tests.remoteservice.IConcatService;registration=RemoteServiceRegistrationImpl[remoteServiceID=org.eclipse.ecf.remoteservice.RemoteServiceID[containerID=JMSID[tcp://localhost:61616/exampleTopic];containerRelativeID=0];containerID=JMSID[tcp://localhost:61616/exampleTopic];serviceid=0;serviceranking=0;classes=[org.eclipse.ecf.tests.remoteservice.IConcatService];state=0;properties={ecf.rsvc.id=0}]]
   
proxyServiceRegistration={org.eclipse.ecf.tests.remoteservice.IConcatService}={osgi.remote=org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceImpl@433359, 
service.id=130}
<scott> indicates that the remote reference was used to create proxy and 
registered in local service registry.
Obviously this is different from what you are seeing...mine is finding 
the remote service reference, using it to create the proxy and 
registering the proxy.  The only important difference in your output for 
hostRegistered and proxyRetrievingRemoteServiceReferences is the 
presence of the service property:  'foo=bar' in yours.  Are you using 
the latest versions of all the test classes/plugins?   I don't believe 
this should actually make a difference for this problem...but I suppose 
it's possible that this is triggering some bug in our code.  So I think 
the next step is to do these things:
1) Remove the 'foo=bar' property, update all code to latest and rerun test.
2) turn on tracing in this bundle:  
org.eclipse.ecf.provider.remoteservice and rerun this test:  
ActiveMQServiceRegisterTest
3) run this junit plugin test also:  
org.eclipse.ecf.tests.provider.jms.activemq.remoteservice.ActiveMQRemoteServiceTest 
and see if it produces similar failures.  Hopefully it will, but either 
way it will be informative.
Thanksinadvance,
Scott