[Openmcl-devel] TIL that CCL's load function speaks HTTP
Max Rottenkolber
max at mr.gy
Mon Jan 19 06:00:24 PST 2015
On Mon, 19 Jan 2015 14:24:19 +0100, Hans Hübner wrote:
> DEADLINE is the way to go, I think.
I have to disagree. Besides DEADLINE being seemingly unimplemented on
most platforms, the nice way would be to use USOCKET's TIMEOUT (assuming
SO_RCVTIMEO is sufficient) parameter and then be able to pass the open
connection to Drakma to speak HTTP over it (I don't think Drakma can do
that though). Why does Drakma need to hide the socket logic?
I still think the right way to do it currently is to go the hard way and
implement a watchdog thread that kills off the request thread after a
specified timeout. That way you have full control over the possibly
blocking request thread and can specify a total "tolerance timeout". This
could be implemented semi-safely in a portable way using BORDEAUX-THREADS.
The reason I root for this approach is that I *tried* most of the options
discussed so far thinking that it only needs the right trick to get what
I want, but long term testing has shown (me) that DRAKMA:HTTP-REQUEST
*will* hang sometimes (indefinitely, I am guessing network partitioning).
Even with CONNECTION-TIMEOUT provided. In a perfect world this would
"simply work" but in practice this is a case where you want to be
explicit about the fact that the request *will return* after a specified
time. So rather brute force it than rely on a library to cover a hard to
test case that really hurts your application when it fails.
I'm done trusting DRAKMA:HTTP-REQUEST to return at some point. ;)
Maybe when DEADLINE is implemented across most CL platforms I will give
it another shot.
More information about the Openmcl-devel
mailing list