[Spread-users] Ethernet cable disconnection and Spread behavior.

John Lane Schultz jschultz at spreadconcepts.com
Wed May 20 23:48:06 EDT 2009

Spread is an ephemeral messaging system.  In some respects, Spread provides
a service similar to tcp/ip: so long as you remain connected to the other
members of the group, then Spread will ensure your messages get to them (and
vice versa).  If you become disconnected (e.g. - by pulling your ethernet
cable), then Spread will give notification of that disconnection to your
application through a membership change message.  Depending on how you send
messages (i.e. - RELIABLE_MESS vs. SAFE_MESS, etc.), Spread can give you a
lot of information about exactly which messages the other side(s) could
potentially have gotten before the partition.  However, Spread makes no
attempts to track persistent group membership nor does it automatically
recover messages sent during partitions for "absent" group members.
Spread Concepts does offer a commercial product, called Congruity, that does
persistent messaging, persistent group membership and does automatic
recovery of messages for "absent" members, which seems to be what you want.
Other products that offer somewhat similar services would include Java
Messaging Service systems, IBM's Websphere MQ, Tibco's Rendezvous or any of
the other various pub/sub or message queue kinds of systems out there.


John Lane Schultz
Spread Concepts LLC
Phn: 443 838 2200 

-----Original Message-----
From: spread-users-bounces at lists.spread.org
[mailto:spread-users-bounces at lists.spread.org] On Behalf Of Farshid Firouzeh
Sent: Wednesday, May 20, 2009 3:38 PM
To: spread-users at lists.spread.org
Subject: [Spread-users] Ethernet cable disconnection and Spread behavior.

Hi all, 

I have a Spread configuration with two machines on the same subnet (for
now...i plan on using two machines located on different subnets later). 

Here is what my spread.conf looks like now:

Spread_Segment w.x.y.255:4803 {
   sm1  w.x.y.50
   sm2  w.x.y.51

Each machine has a Spread daemon running on it, so that my application
(also running on both machines, with both having to communicate with
each other) can connect to the daemon using 4803 at localhost , with Spread
knowing to pass on any messages from originating machine to other
machine (i.e machine 1 sending an SP_multicast message that reaches
machine 2 and vice versa). The way i configured my application, i have
all messages being sent to the localhost daemon, which in turn sends
them to the other machine. Now, here is where i am unclear as to how
exactly Spread works: 

I've implemented a ping functionality between the two applications,
where a ping message is being passed back and forth via Spread between
the two as a means of checking up on their network connectivity. If the
ping message fails to reach the application (and the way im causing this
is by disconnecting the ethernet cable from one of the machines), the
application makes an SP_multicast call using RELIABLE_MESS|SELF_DISCARD.
At the time of this call, both applications have joined the same group.

With the ethernet cable disconnection, i see the Spread daemon output
change from this:

Membership id is ( ..., ...)
Configuration at sm2 is:
Num Segments 1
        2       w.x.y.255   4803
                sm1          w.x.y.50
                sm2          w.x.y.51

To this (it actually depends on which machine you are on for the output
shown below):

Membership id is ( ..., ...)
Configuration at sm2 is:
Num Segments 1
        1       w.x.y.255   4803
                sm2          w.x.y.51

Anyway, the SP_multicast call with RELIABLE_MESS|SELF_DISCARD seems to
be being sent to the localhost daemon successfully, but is not being
passed on to the other machine. When i plug the disconnected ethernet
cable back in, the Spread daemon output goes back to the first
configuration with both machines detected again. I thought the purpose
of using RELIABLE_MESS was that the Spread daemon guarantees the message
would be sent and would recover any network loss (my application makes
this SP_multicast call AFTER the cable has been disconnected, so its not
gonna reach the other machine immediately)? When Spread realizes that
both machines are back in the system, shouldn't the localhost Spread
daemons re-send the message? Upon testing, i don't think this is
happening though. 

How does Spread react in the scenario i described?


Spread-users mailing list
Spread-users at lists.spread.org

More information about the Spread-users mailing list