[Spread-users] Spread Reliability
Gordan Bobic
gordan at bobich.net
Wed Mar 28 05:11:37 EDT 2007
On Tue, 27 Mar 2007, Theo Schlossnagle wrote:
> On Mar 27, 2007, at 12:18 PM, Gordan Bobic wrote:
>
> > I figured that was probably the case, due to the way the reception
> > fails.
> > I don't suppose there is a different Spread library for Perl?
>
> Is it possible the perl Spread client was disconnected from the
> daemon (due to not reading fast enough)?
It is possible (and in fact quite likely), but I would have expeected an
obvious error or an exception to be thrown.
Dropping the client (especially silently) that can't keep up strikes me as
a pretty poor design.
> You describe reading
> succesfully up to a certain point and then always getting a nothing
> back. This is quite a bit more specific than "loosing messages" in
> that it seems like you lost the stream.
Indeed, but it still strikes me as a pretty poor design. Dropping a client
that can't keep up isn't exactly a "reliable" messaging feature. It is
particularly poor that it does this even with UNRELIABLE_MESS messages.
Surely, at least those should be dropped when the queue overflows, rather
than disconnecting the client?
> The perl wrapper around the Spread library is really thin XS. It
> does no interpretive dance :-) It doesn't much with signals in any
> fashion nor does it intentionally hide return values or side effects
> of the libspread API calls.
Which is all fine, but the fact remains that when you call receive()
without a timeout, any signal traps you set cause the signals to disappear
completely.
Gordan
More information about the Spread-users
mailing list