Kevin_Crowston@XV.MIT.EDU (03/04/88)
Xerox Lisp looks for a clearinghouse when it's booted and remembers that clearinghouse for all queries. Usually this is fine, since it saves the broadcast necessary to locate a clearinghouse. Unfortunately, when that one clearinghouse crashes, Lisp just returns NIL for all clearinghouse queries rather than trying to find another clearinghouse that's up. For a user, this is almost okay, since when clearinghouse queries start failing mysteriously (e.g., you can't log in for no apparent reason) you can always just restart clearinghouse. For servers it's a little worse, though, since you never know whether that NIL you just got means no such object, or that the clearinghouse crashed. I got around this by writing a little routine that redoes the broadcast whenever a clearinghouse query returns NIL, assuming that most of the time the object being queried exists and so most NILs really mean that the clearinghouse crashed. This works, but it seems that it would be much better if the system code did the rebroadcast whenever it didn't get a response. I don't mind advising my low level code to get this behaviour; does anyone know where I should poke my fingers? (An approved Xerox patch would be even better.) Or do most people's clearinghouses just not crash? Kevin Crowston MIT Sloan School