Community
Participate
Working Groups
I'm using Eclipse 3.6 with ECF 3.3 jmnds fails when it tries to register a remote service with many parameters. This problem can be easily reproduced. In org.eclipse.ecf.examples.remoteservices.hello.ds.host, modify the hello.xml to include the following properties: <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg1" type="String" value="this is the configuration value for parm 1"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg2" type="String" value="this is the configuration value for parm 2"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg3" type="String" value="this is the configuration value for parm 3"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg4" type="String" value="this is the configuration value for parm 4"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg5" type="String" value="this is the configuration value for parm 5"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg6" type="String" value="this is the configuration value for parm 6"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg7" type="String" value="this is the configuration value for parm 7"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg8" type="String" value="this is the configuration value for parm 8"/> <property name="org.eclipse.ecf.examaples.remoteservices.hello.ds.host.cfg9" type="String" value="this is the configuration value for parm 9"/> Run the consumer and host and jmdns will hang when advertising the remote service. I also noticed in the debugger that the jmdns recovery function gets called and never returns which holds a top level lock on jmdns. If you try to stop the host bundle from the osgi console, you will livelock the console because it is unable to obtain the lock in jmdns.
I believe there is a zeroconf-imposed limit on the total length of the name and the value of properties. Since lan-based zeroconf is based upon UDP/multicast IP packets I believe that's the core limitation here. I don't immediately recall what the limit is, but you may be bumping up against it with these long names, combined with long values, combined with many properties.
Adding Markus Kuppe to this bug for comment as he has done much of the recent work on discovery API and jmdns provider.
Bryan, have you tried using a newer JmDNS version. It has seen a fair amount of development recently but unfortunately we haven't had time to integrate it into ECF. Markus
I think this bug is very likely to be due to the basic limitation in zeroconf/jmdns described in comment 1. So this is not something ECF can do anything about, unfortunately.