On 3/2/07, Suresh Madhu <[EMAIL PROTECTED]> wrote:
The following message is a courtesy copy of an article
that has been posted to gmane.lisp.cmucl.general as well.


 [Not sure if I'm subscribed, please CC the list if it doesn't make it
  there]

* "Denis Papathanasiou" <[EMAIL PROTECTED]> :
| The past few days, we turned all the client processes off, and the
| error still occurred inside the server process, so it had nothing to
| do with WIRE.
|
| But since the server process is doing vanilla I/O on the local
| filesystem -- using (with-open-file) -- to read and write files it
| owns (there's also plenty of disk space), I'm not sure what the "bogus
| handlers" message means exactly.

Bogus handlers IIRC are handlers attached to closed FDs.

I have not used the WIRE package (but do use TCP/IP on top of the MP
package -- i.e. having a CMUCL MP:PROCESS doing a listen, and another
to handle each connection.)

The WIRE package does not use MP but uses fd-handlers.  I noticed you

Ah, thanks for that clarification; we'd not been able to connect the
dots between bogus handlers and WIRE.

used an MP function in your code.  I'd guess your bogus handler
messages are from some little tested interaction between MP and the
FD-HANDLERS packages.  Perhaps you can eliminate the MP:PROCESS and
see if you still get the messages?

It's plausible to try it in the interim, to find out whether or not
that is indeed causing the error, but not using MP in the server
creates more problems than it solves.

I.e., in a single-threaded mode, when (reload) is busy, none of the
public methods in the server process will be responsive enough when
they're invoked by any of the client processes.

Perhaps we should dump WIRE and switch to a model like what you use
("use TCP/IP on top of the MP package -- i.e. having a CMUCL
MP:PROCESS doing a listen, and another to handle each connection.").

Do you have any examples/code snippets of that that you could share?

| I've looked for references to explain this message, but couldn't find
| any. Could anyone point me to an explanation, or help me understand
| what is happening?
|
| And as part of that, does anyone know whether or not the function I
| mentioned earlier -- (clear-bogus-handlers) -- would clear that error,
| assuming I put it as a condition in the right place in my server code?

[CLEAR-BOGUS-HANDLERS looks like trebuchet (my taste), and not
appropriate in this case, perhaps you can consider wrapping your code
inside a HANDLER-BIND that uses INVOKE-RESTART.]

This may sound like a dumb question -- I really need to go back and
study conditions again -- but if CMUCL is offering a restart that
solves the problem ("REMOVE-THEM"), then if I were to wrap a
handler-bind/invoke-restart (where the restart is "REMOVE-THEM") in
the right place in the server code, then I can go on using WIRE and
MP, correct?

I.e. I know this condition will occur infrequently, but I also know
how to recover from it, right?

Reply via email to