[Spread-users] Confirmation for Reliable Delivery

John Lane Schultz jschultz at spreadconcepts.com
Fri Aug 8 19:36:07 EDT 2008


In the current implementation, when you call SP_multicast I believe it synchronously sends your request to the daemon on a TCP/IP channel.  It would be entirely possible for your send to get queued in the OS buffers and the OS would return success, while at around the same time the daemon had actually disconnected, but this fact had not been detected by your OS yet.

Again, this comes down to the problem that there is no common knowledge in distributed systems.  The only way to get the semantics you'd like would be to do a send and wait, where the client/OS would block in the socket call until it recieved an ACK from the Spread daemon that it had gotten and/or processed the message.  To get the semantics you'd like in your previous email, the sender would have to block in SP_multicast until its message had gotten to all destined recipients and they all ACK'ed it as received/processed.  These kinds of approaches eliminate pipe lining and generally have horrible performance.  Instead, most network I/O will return as soon as possible (e.g. - after sticking it in a buffer) to allow you to move on to your next action.

So, yes, I do believe it is possible to get a successful return from SP_multicast and your daemon will never get the message.  If you were disconnected though, eventually you would get an error on the socket either when the TCP/IP channel timed out or the OS got a msg stating that the channel was dead (e.g. - unreachable network, connection closed, etc.).

Cheers!
John

---
John Lane Schultz
Spread Concepts LLC
Phn: 443 838 2200 
Fax: 301 560 8875

Friday, August 8, 2008, 7:21:29 PM, you wrote:

> Hi John,

> I see. Thanks a lot for the reply.  So

>>PS - When SP_multicast returns success, that only means that your message was successfully queued (and possibly sent) to go to your Spread daemon and nothing more.
>   
> Does this mean that even if a client is partitioned from the Spread
> daemon that it is connected to, the multicast might still return a success?!

> Thanks a lot;
> Vina





More information about the Spread-users mailing list