[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