Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 337653 - [remoteserviceadmin][discovery] add support for allowLoopbackReference and endpointListenerScope system properties
Summary: [remoteserviceadmin][discovery] add support for allowLoopbackReference and en...
Status: RESOLVED FIXED
Alias: None
Product: ECF
Classification: RT
Component: ecf.remoteservices (show other bugs)
Version: 3.5.0   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.5.0   Edit
Assignee: Scott Lewis CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-19 20:16 EST by Scott Lewis CLA
Modified: 2011-02-22 14:37 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Scott Lewis CLA 2011-02-19 20:16:37 EST
In the old implementation of remote services, we have support for a System property:  org.eclipse.ecf.osgi.services.discovery.allowLoopbackReference
which if true would allow remote services to be imported in local framework.

To aid in the use of r-osgi in particular, it would be useful to have support for this system property in the remote service admin implementation.

Also, it would be useful to introduce another system property:

org.eclipse.ecf.osgi.services.discovery.endpointListenerScope

To allow the remote service admin endpoint listener scope (for the BasicTopologyManger) to be customized arbitrarily.
Comment 1 Scott Lewis CLA 2011-02-19 20:17:33 EST
Associating with 337643, as I think this problem is related (when using r-osgi).
Comment 2 Scott Lewis CLA 2011-02-19 20:32:43 EST
Fix (allowLoopbackReference) and addition (endpointListenerScope) released to master.  If allowLoopbackReference is false, endpoint descriptions with frameworkUUID property (endpoint.framework.uuid) that are the same as the local frameworkUUID are not in scope.  If endpointListenerScope is set, it is used as the filter for endpoint listeners (and the value of allowLoopbackReference is ignored in favor of the endpointListenerScope filter).
Comment 3 Martin Petzold CLA 2011-02-20 04:57:16 EST
Thanks, could be helpful!
Comment 4 Markus Kuppe CLA 2011-02-20 12:17:20 EST
(In reply to comment #2)
> Fix (allowLoopbackReference) and addition (endpointListenerScope) released to
> master.  If allowLoopbackReference is false, endpoint descriptions with
> frameworkUUID property (endpoint.framework.uuid) that are the same as the local
> frameworkUUID are not in scope.  If endpointListenerScope is set, it is used as
> the filter for endpoint listeners (and the value of allowLoopbackReference is
> ignored in favor of the endpointListenerScope filter).

What's the default of both properties?
Comment 5 Scott Lewis CLA 2011-02-20 12:21:40 EST
(In reply to comment #4)
> (In reply to comment #2)
> > Fix (allowLoopbackReference) and addition (endpointListenerScope) released to
> > master.  If allowLoopbackReference is false, endpoint descriptions with
> > frameworkUUID property (endpoint.framework.uuid) that are the same as the local
> > frameworkUUID are not in scope.  If endpointListenerScope is set, it is used as
> > the filter for endpoint listeners (and the value of allowLoopbackReference is
> > ignored in favor of the endpointListenerScope filter).
> 
> What's the default of both properties?

allowLoopbackReference=false
(false is debatable as the default in RSA world...but it's what we've done previously)

endpointListenerScope (null/none)
Comment 6 Scott Lewis CLA 2011-02-20 18:01:09 EST
Removing blocks on bug 337643
Comment 7 Martin Petzold CLA 2011-02-20 18:06:12 EST
I don't have allowLoopbackReference or endpointListenerScope set.

[log;+0100 2011.02.20
23:35:20:552;ERROR;org.eclipse.ecf.provider.jmdns;handleRuntimeException]
java.lang.IllegalArgumentException: Missing attr: )
    at
org.osgi.service.remoteserviceadmin.EndpointDescription.matches(EndpointDescription.java:591)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.isMatch(EndpointDescriptionLocator.java:610)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.getMatchingEndpointListenerHolders(EndpointDescriptionLocator.java:599)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.getMatchingEndpointListenerHolders(EndpointDescriptionLocator.java:555)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.queueEndpointDescription(EndpointDescriptionLocator.java:416)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleEndpointDescription(EndpointDescriptionLocator.java:846)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleOSGiServiceEndpoint(EndpointDescriptionLocator.java:827)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleService(EndpointDescriptionLocator.java:817)
    at
org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.serviceDiscovered(EndpointDescriptionLocator.java:800)
    at
org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter.fireServiceDiscovered(AbstractDiscoveryContainerAdapter.java:156)
    at
org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer.fireDiscovered(JMDNSDiscoveryContainer.java:366)
    at
org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer$2.run(JMDNSDiscoveryContainer.java:327)
    at
org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer$1.run(JMDNSDiscoveryContainer.java:125)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.osgi.framework.InvalidSyntaxException: Missing attr: )
    at
org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_attr(FrameworkUtil.java:1465)
    at
org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_item(FrameworkUtil.java:1386)
    at
org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_filtercomp(FrameworkUtil.java:1328)
    at
org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_filter(FrameworkUtil.java:1293)
    at
org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse(FrameworkUtil.java:1267)
    at
org.osgi.framework.FrameworkUtil$FilterImpl.newInstance(FrameworkUtil.java:377)
    at org.osgi.framework.FrameworkUtil.createFilter(FrameworkUtil.java:76)
    at
org.osgi.service.remoteserviceadmin.EndpointDescription.matches(EndpointDescription.java:588)
    ... 13 more
Comment 8 Martin Petzold CLA 2011-02-20 18:06:41 EST
This needs to be reopend, I can do this.
Comment 9 Scott Lewis CLA 2011-02-20 18:31:27 EST
Reopening.

For the exception from comment 7, could you please turn on tracing for the endpoint description locator and topology manager

i.e.

org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionlocator=true

and 

org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/topologymanager=true

and report trace output that indicates the endpoint description contents?

Also...would you be able to use the osgi console to report the value of the endpoint.listener.scope property for all of registered org.osgi.service.remoteserviceadmin.EndpointListener services?

The reason I ask about these two things (the endpoint description and the EndpointListener scope property value) is because there is apparently some problem with one or the other in your usage...causing this failure of the match method from the OSGi code...so I'm trying to find the conditions that allow me to reproduce this error (as I don't get it in the test cases...probably because the tests use allowLoopbackReference=true).

Thanks.
Comment 10 Scott Lewis CLA 2011-02-21 01:51:44 EST
Fix released to master.  My suspicion is that you are using an older version of the framework, and the frameworkUUID was not set correctly in older versions of the framework...making this bug appear in your environment and not in mine.  In any case, I believe this fix will work.  If not, please reopen.

Note that there were small changes to both org.eclipse.ecf.osgi.services.remoteserviceadmin and org.eclipse.ecf.osgi.services.distribution
Comment 11 Martin Petzold CLA 2011-02-21 05:52:32 EST
I do have head/master of all ECF bundles, Eclipse is 3.6.1.

Still this Exception (on both ends, TRACES are from provider end):

(TRACE)[02/21/11;11:49:08:858]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#RemoteServiceAdmin<init>(clientBundle=org.eclipse.ecf.osgi.services.distribution) 
(TRACE)[02/21/11;11:49:08:869]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#handleServiceRegistering(serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54} exportProperties={service.exported.interfaces=[Ljava.lang.String;@59db9f45}) 
(TRACE)[02/21/11;11:49:08:869]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#exportService(serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54},properties={service.exported.interfaces=[Ljava.lang.String;@59db9f45}) 
(TRACE)[02/21/11;11:49:08:906]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#addExportRegistration(exportRegistration=ExportRegistration[exportEndpoint=ExportEndpoint[rsRegistration=org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceRegistrationImpl@6483e5f1, exportReference=ExportReference[serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54}, endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=ab5c605c-db36-4abd-b2ad-2b9c36e5dcab, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@59db9f45, remote.configs.supported=[Ljava.lang.String;@f6d64c5, remote.intents.supported=[Ljava.lang.String;@56f2c96c, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@f6d64c5}]]]] exportedRegistrations=[ExportRegistration[exportEndpoint=ExportEndpoint[rsRegistration=org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceRegistrationImpl@6483e5f1, exportReference=ExportReference[serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54}, endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=ab5c605c-db36-4abd-b2ad-2b9c36e5dcab, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@59db9f45, remote.configs.supported=[Ljava.lang.String;@f6d64c5, remote.intents.supported=[Ljava.lang.String;@56f2c96c, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@f6d64c5}]]]]]) 
(TRACE)[02/21/11;11:49:08:916]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#advertiseEndpointDescription(advertising endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=ab5c605c-db36-4abd-b2ad-2b9c36e5dcab, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@59db9f45, remote.configs.supported=[Ljava.lang.String;@f6d64c5, remote.intents.supported=[Ljava.lang.String;@56f2c96c, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@f6d64c5}] with advertiser=org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionAdvertiser@7db06a21) 
[log;+0100 2011.02.21 11:49:12:956;ERROR;org.eclipse.ecf.provider.jmdns;handleRuntimeException]
java.lang.IllegalArgumentException: Missing attr: )
	at org.osgi.service.remoteserviceadmin.EndpointDescription.matches(EndpointDescription.java:591)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.isMatch(EndpointDescriptionLocator.java:610)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.getMatchingEndpointListenerHolders(EndpointDescriptionLocator.java:599)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.getMatchingEndpointListenerHolders(EndpointDescriptionLocator.java:555)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.queueEndpointDescription(EndpointDescriptionLocator.java:416)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleEndpointDescription(EndpointDescriptionLocator.java:846)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleOSGiServiceEndpoint(EndpointDescriptionLocator.java:827)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleService(EndpointDescriptionLocator.java:817)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.serviceDiscovered(EndpointDescriptionLocator.java:800)
	at org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter.fireServiceDiscovered(AbstractDiscoveryContainerAdapter.java:156)
	at org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer.fireDiscovered(JMDNSDiscoveryContainer.java:366)
	at org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer$2.run(JMDNSDiscoveryContainer.java:327)
	at org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer$1.run(JMDNSDiscoveryContainer.java:125)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.osgi.framework.InvalidSyntaxException: Missing attr: )
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_attr(FrameworkUtil.java:1465)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_item(FrameworkUtil.java:1386)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_filtercomp(FrameworkUtil.java:1328)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_filter(FrameworkUtil.java:1293)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse(FrameworkUtil.java:1267)
	at org.osgi.framework.FrameworkUtil$FilterImpl.newInstance(FrameworkUtil.java:377)
	at org.osgi.framework.FrameworkUtil.createFilter(FrameworkUtil.java:76)
	at org.osgi.service.remoteserviceadmin.EndpointDescription.matches(EndpointDescription.java:588)
	... 13 more
Comment 12 Scott Lewis CLA 2011-02-21 10:37:22 EST
(In reply to comment #11)
> I do have head/master of all ECF bundles, Eclipse is 3.6.1.

Right...I think that Eclipse 3.6.1 has an old version of Equinox that doesn't set the frameworkUUID...as I'm not seeing this with test cases in my current env (3.7m4).  I thought that the fix I just applied would deal with the 3.6.1 case, but perhaps not.

I've added tracing to the BasicTopologyManager to print out the value of the endpoint listener scope upon creation...as I think that's the problem here.

Could you run with the topologymanager tracing on in your environment...i.e.

org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/topologymanager=true

And attach the output here?  Thanks.

Martin, I'm going to be taking some time for family today (Mon), but I will return to this this evening...and we'll get things going for you.  I just can only do so much.
Comment 13 Martin Petzold CLA 2011-02-21 17:29:04 EST
(In reply to comment #12)
> (In reply to comment #11)
> > [...]
> Could you run with the topologymanager tracing on in your environment...i.e.
> 
> org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/topologymanager=true
> 
> And attach the output here?  Thanks.
> 

On Provider End:

(TRACE)[02/21/11;23:28:01:350]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#RemoteServiceAdmin<init>(clientBundle=org.eclipse.ecf.osgi.services.distribution) 
(TRACE)[02/21/11;23:28:01:359]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#handleServiceRegistering(serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54} exportProperties={service.exported.interfaces=[Ljava.lang.String;@ed0220c}) 
(TRACE)[02/21/11;23:28:01:360]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#exportService(serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54},properties={service.exported.interfaces=[Ljava.lang.String;@ed0220c}) 
(TRACE)[02/21/11;23:28:01:396]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#addExportRegistration(exportRegistration=ExportRegistration[exportEndpoint=ExportEndpoint[rsRegistration=org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceRegistrationImpl@50502819, exportReference=ExportReference[serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54}, endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=be2035c0-576c-40f2-a8ea-ddd15c36f4e0, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@ed0220c, remote.configs.supported=[Ljava.lang.String;@3e78aa80, remote.intents.supported=[Ljava.lang.String;@6401d98a, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@3e78aa80}]]]] exportedRegistrations=[ExportRegistration[exportEndpoint=ExportEndpoint[rsRegistration=org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceRegistrationImpl@50502819, exportReference=ExportReference[serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54}, endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=be2035c0-576c-40f2-a8ea-ddd15c36f4e0, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@ed0220c, remote.configs.supported=[Ljava.lang.String;@3e78aa80, remote.intents.supported=[Ljava.lang.String;@6401d98a, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@3e78aa80}]]]]]) 
(TRACE)[02/21/11;23:28:01:405]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#advertiseEndpointDescription(advertising endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=be2035c0-576c-40f2-a8ea-ddd15c36f4e0, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@ed0220c, remote.configs.supported=[Ljava.lang.String;@3e78aa80, remote.intents.supported=[Ljava.lang.String;@6401d98a, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@3e78aa80}] with advertiser=org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionAdvertiser@7f636e4e) 
[log;+0100 2011.02.21 23:28:05:517;ERROR;org.eclipse.ecf.provider.jmdns;handleRuntimeException]
java.lang.IllegalArgumentException: Missing attr: )
	at org.osgi.service.remoteserviceadmin.EndpointDescription.matches(EndpointDescription.java:591)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.isMatch(EndpointDescriptionLocator.java:610)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.getMatchingEndpointListenerHolders(EndpointDescriptionLocator.java:599)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.getMatchingEndpointListenerHolders(EndpointDescriptionLocator.java:555)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator.queueEndpointDescription(EndpointDescriptionLocator.java:416)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleEndpointDescription(EndpointDescriptionLocator.java:846)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleOSGiServiceEndpoint(EndpointDescriptionLocator.java:827)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.handleService(EndpointDescriptionLocator.java:817)
	at org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator$LocatorServiceListener.serviceDiscovered(EndpointDescriptionLocator.java:800)
	at org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter.fireServiceDiscovered(AbstractDiscoveryContainerAdapter.java:156)
	at org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer.fireDiscovered(JMDNSDiscoveryContainer.java:366)
	at org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer$2.run(JMDNSDiscoveryContainer.java:327)
	at org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer$1.run(JMDNSDiscoveryContainer.java:125)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.osgi.framework.InvalidSyntaxException: Missing attr: )
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_attr(FrameworkUtil.java:1465)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_item(FrameworkUtil.java:1386)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_filtercomp(FrameworkUtil.java:1328)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse_filter(FrameworkUtil.java:1293)
	at org.osgi.framework.FrameworkUtil$FilterImpl$Parser.parse(FrameworkUtil.java:1267)
	at org.osgi.framework.FrameworkUtil$FilterImpl.newInstance(FrameworkUtil.java:377)
	at org.osgi.framework.FrameworkUtil.createFilter(FrameworkUtil.java:76)
	at org.osgi.service.remoteserviceadmin.EndpointDescription.matches(EndpointDescription.java:588)
	... 13 more
Comment 14 Martin Petzold CLA 2011-02-22 10:20:28 EST
Hi Scott, I will need the property "org.eclipse.ecf.osgi.services.discovery.allowLoopbackReference". But if you fix this bug later, could you set master back to a state without this property implemented. It's not possible to me to step back as there have been so many changes.
Comment 15 Markus Kuppe CLA 2011-02-22 10:24:13 EST
(In reply to comment #14)
> Hi Scott, I will need the property
> "org.eclipse.ecf.osgi.services.discovery.allowLoopbackReference". But if you
> fix this bug later, could you set master back to a state without this property
> implemented. It's not possible to me to step back as there have been so many
> changes.

-1 as this would require everybody else to work around this. Btw. here is a list of all commits http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/log/
Comment 16 Martin Petzold CLA 2011-02-22 10:28:41 EST
(In reply to comment #15)
> (In reply to comment #14)
> > [...]
> -1 as this would require everybody else to work around this. Btw. here is a
> list of all commits http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/log/

Nobody needs to work around this because neither the property nor RS in master are working.
Comment 17 Markus Kuppe CLA 2011-02-22 10:34:03 EST
(In reply to comment #16)
> Nobody needs to work around this because neither the property nor RS in master
> are working.

Even though master might be broken ATM, others might have based their work on it. If it's reverted to an earlier state, they will have to merge. And just to save you from going through a list of recent commits and pick the one you need removed. %-)
Comment 18 Martin Petzold CLA 2011-02-22 10:41:10 EST
okay.
Comment 19 Scott Lewis CLA 2011-02-22 11:59:05 EST
<stuff deleted>> 

Hi Martin,

In the output you produce for comment 13 (thanks for doing that, btw)...I'm *not* seeing the new topologymanager trace that I added on line 54 of org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager.  I was expecting to see that trace output in your output...as I think that somehow what's going on here is that you are getting a bogus endpoint listener scope.

By contrast, in my test run debug output I'm seeing this upon startup:

osgi> Time to load bundles: 171
(TRACE)[02/22/11;08:44:18:458]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#getEndpointListenerScope(endpointListenerScope=(endpoint.id=*)) 

I'm interested in what string your endpointListenerScope is set to.

This makes me think that perhaps you might not have the same copy of the BasicTopologyManager class in your workspace.  Note that this class is in org.eclipse.ecf.osgi.services.distribution bundle...which is *not* the remote services admin bundle.

To make sure that my copy had made it to master, I checked in the repo and the code that I released is the same as what I have in my workspace:

http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java

Could you verify that you have in your workspace this same version of BasicTopologyManager?  If you like, you could also debug to line 54 of BasicTopologyManager, and check the value of endpointListenerScope...as I suspect that's the problem in your environment (an older version of Equinox).
Comment 20 Martin Petzold CLA 2011-02-22 12:32:02 EST
Hm, I'm really sorry, it's working now. I must have had an old version.
Comment 21 Martin Petzold CLA 2011-02-22 12:36:58 EST
(TRACE)[02/22/11;18:35:38:909]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#getEndpointListenerScope(endpointListenerScope=(!(endpoint.framework.uuid=b999b945-2585-447f-b024-da2db81514c8))) 
WARNING: Port 9278 already in use. This instance of R-OSGi is running on port 9279

(TRACE)[02/22/11;18:35:39:051]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#RemoteServiceAdmin<init>(clientBundle=org.eclipse.ecf.osgi.services.distribution) 

(TRACE)[02/22/11;18:35:39:056]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#handleServiceRegistering(serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54} exportProperties={service.exported.interfaces=[Ljava.lang.String;@14800aa1}) 

(TRACE)[02/22/11;18:35:39:056]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#exportService(serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54},properties={service.exported.interfaces=[Ljava.lang.String;@14800aa1}) 

(TRACE)[02/22/11;18:35:39:093]TRACING org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin#addExportRegistration(exportRegistration=ExportRegistration[exportEndpoint=ExportEndpoint[rsRegistration=org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceRegistrationImpl@7e9f5cc, exportReference=ExportReference[serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54}, endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=b999b945-2585-447f-b024-da2db81514c8, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@14800aa1, remote.configs.supported=[Ljava.lang.String;@11082823, remote.intents.supported=[Ljava.lang.String;@2e831a91, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@11082823}]]]] exportedRegistrations=[ExportRegistration[exportEndpoint=ExportEndpoint[rsRegistration=org.eclipse.ecf.internal.provider.r_osgi.RemoteServiceRegistrationImpl@7e9f5cc, exportReference=ExportReference[serviceReference={test.service.ServiceA}={service.exported.configs=ecf.r_osgi.peer, service.exported.interfaces=*, service.id=54}, endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=b999b945-2585-447f-b024-da2db81514c8, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@14800aa1, remote.configs.supported=[Ljava.lang.String;@11082823, remote.intents.supported=[Ljava.lang.String;@2e831a91, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@11082823}]]]]]) 

(TRACE)[02/22/11;18:35:39:103]TRACING org.eclipse.ecf.internal.osgi.services.distribution.BasicTopologyManager#advertiseEndpointDescription(advertising endpointDescription=EndpointDescription[containerID=r-osgi://jumper:9279,connectTargetID=null,idFilter=null,rsFilter=null,properties={ecf.endpoint.id.ns=ecf.namespace.r_osgi, endpoint.framework.uuid=b999b945-2585-447f-b024-da2db81514c8, endpoint.id=r-osgi://jumper:9279, endpoint.service.id=57, objectClass=[Ljava.lang.String;@14800aa1, remote.configs.supported=[Ljava.lang.String;@11082823, remote.intents.supported=[Ljava.lang.String;@2e831a91, service.id=54, service.imported=true, service.imported.configs=[Ljava.lang.String;@11082823}] with advertiser=org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionAdvertiser@20e5ace9)
Comment 22 Scott Lewis CLA 2011-02-22 14:33:46 EST
(In reply to comment #20)
> Hm, I'm really sorry, it's working now. I must have had an old version.

Hi Martin,

Given your comment 21, I'm not clear on whether this bug is fixed (and I should re-resolve it)...i.e. the tracing is fixed, but is the matches IllegalArgumentException also fixed/gone?

Hopefully so...and your code is up and running at this point.  If you are able/willing to contribute some test and/or example code to ECF, then it would be highly appreciated.  If you are willing/able to do this, then please open a new bug for such a contribution (as opposed to using this bug).
Comment 23 Martin Petzold CLA 2011-02-22 14:35:38 EST
It's fixed, well done!
Comment 24 Scott Lewis CLA 2011-02-22 14:37:04 EST
Re-resolving given comment 23