I have a problem with uncontrolled loss of DAs ie. where DAs can drop off the network without sending out a corresponding DA advert, such as power loss, or network device failure.
All the DAs in our system have unique scopes, and we perform unicast searches of each scope (I have a patch to the 1.2.1 library that does parallel unicast to multiple DAs, which I haven't yet had time to port to the latest trunk for submission). We get the list of scopes using the SLPFindScopes call, which queries the local daemon. The problem is that when a DA goes down in an uncontrolled fashion, its scope never seems to get removed from the list of scopes, so we get timeouts for all subsequent searches until the DA comes back up again, which is unacceptable in our application (we can cope with a short period where this occurs, provided the situation is not permanent). We have tried setting the active DA discovery parameters to their most aggressive, in the hope that this would flag up the lost DAs, but this makes no difference. I have looked at the code, both version 1.2.1 which we are using, and the latest trunk, and I believe the problem is in both, and arises because the active DA discovery only adds new DAs to the DA cache, and does not remove them. DAs ARE removed from the cache if a unicast request to a DA fails, but these seem to be related only to service registration and deregistration and, since each DA has a unique scope, there is no requirement to perform these operations between DAs. The two approaches I was considering were a) Change the active discovery mechanism to query for all DAs (use an empty previous responders list), and construct a list of those known DAs that don't reply, removing them from the cache after a time. This behaviour could be enabled/disabled using a new property. b) Perform a regular unicast (DA request?) to each of the known DAs eg. on a round robin basis so that all DAs are polled within a time period controlled by a new property (could be set to zero to disable this behaviour) Obviously, I would like to feed any changes back into the project, so I am looking for feedback as to which approach would be preferable, or if there is another approach that would be better, or if someone else was working on the problem already. Thanks. Richard Morrell Software Architecture & Technologies THALES UNDERWATER SYSTEMS LTD This email, including any attachment, is a confidential communication intended solely for the use of the individual or entity to whom it is addressed. It contains information which is private and may be proprietary or covered by legal professional privilege. If you have received this email in error, please notify the sender upon receipt, and immediately delete it from your system. Anything contained in this email that is not connected with the businesses of this company is neither endorsed by nor is the liability of this company. Whilst we have taken reasonable precautions to ensure that any attachment to this email has been swept for viruses, we cannot accept liability for any damage sustained as a result of software viruses, and would advise that you carry out your own virus checks before opening any attachment. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Openslp-devel mailing list Openslp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openslp-devel