Stefano Cimmino wrote:
> Hi Bela,
> I'm going to collaborate with Carlo Marchetti to build the course he
> described some weeks ago. I'll deal with the most practical leg of the
> course, which includes some hands-on labs. As such, I'm going quite deeply
> into the details of jgroups, and find myself stuck sometimes, to the point
> that I'm now here writing directly to you. Forgive me if I'm not using the
> forum, but I'm trying to get a faster response :-)
Please write to the jg-dev mailing list anyway (copied), so others have
a searchable archive. You're not going to a faster response if you write
to me directly.
> The question is on the pbcast.STABLE layer. I've read the docs and found
> that it's meant for garbage collection. However, I was expecting
> something a
> little bit different, i.e. a protocol enabling the delivery of a message
> only when it is stable.
No, that's not what STABLE does.
> This is to prevent a faulty process from delivering
> some message that is then lost (for example because it was the
> sender), thus
> making its state to diverge from that of other members in the group.
> This is
> often called uniform agreement in the literature.
JGroups doesn't support uniform delivery, there used to be a UNIFORM
protocol, but I pulled it some time ago...
I think uniformity is hard to implement *efficiently*, unless you use a
rotating token (like Amir's token passing protocol).
If all members have purely in-memory state, then I don't think uniform
delivery is needed, because you can achieve the same with virtual
synchrony: if sender P of message M crashes, then the flush protocol
will make sure that everyone received M before installing the new view
So FLUSH guarantees that every member R delivers M, or R is excluded
from the group.
If members write to stable storage, then uniform delivery might be nice,
but then again, most such systems use application-level tools to
guarantee uniformity, e.g. transactions. This is how we provide acidity
in JBossCache for example.
I think virtual synchrony provides the same properties as uniform
delivery, but per view rather than per message, which is much more
> Does STABLE provide this? If it is not the case, do we have another
> with this behavior?
> Thanks in advance. I hope not to have more questions in the near
> future :-)
Lead JGroups / Clustering Team
JBoss - a division of Red Hat