[jboss-jira] [JBoss JIRA] Commented: (JGRP-948) MERGE: merging digests based on hearsay

Bela Ban (JIRA) jira-events at lists.jboss.org
Mon Apr 20 02:56:22 EDT 2009


    [ https://jira.jboss.org/jira/browse/JGRP-948?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12463079#action_12463079 ] 

Bela Ban commented on JGRP-948:
-------------------------------

OK, here's a real issue with hearsay info:
- A: {A} 
- B {B,C}, C's *hearsay* digest is 2 10 (10)
- C: {A,B,C}, C's *real* digest is 5 20 (20)
- A and B merge: the resulting digest is {A,B,C} and contains C's hearsay digest of 2 10 (10)
- A broadcasts the new view and digest {A,B,C}
- Because C's view is {A,B,C}, it will *accept* the new view and digest
- C doesn't overwrite its own digest of 5 20 (20)
- However, A and B now have C's digest as 2 10 (10), whereas the real digest would be 5 20 (20) 
--> The next message broadcast from C is #21
--> A and B ask C for retransmission of messages #11-#21, but C doesn't have them !!
==> Looks like we still have to fetch digest information directly from all members participarting in a merge !


> MERGE: merging digests based on hearsay
> ---------------------------------------
>
>                 Key: JGRP-948
>                 URL: https://jira.jboss.org/jira/browse/JGRP-948
>             Project: JGroups
>          Issue Type: Bug
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>             Fix For: 2.6.10, 2.8
>
>
> A merge involves consolidating digests from all members. However, we don't get the digests directly from involved members, but also include 'hearsay', e.g. in A: {A} and B: {B,C}, B adds digest information from C. This is what I call 'hearsay', the digest information about C isn't provided by C directly, but by B.
> If B hasn't been able to communicate with C for a while, e.g. because B's link to C was asymmetrical, then B's information about C's digest might be incorrect.
> E.g. if B returns #3 as C's highest seqno, but in effect C's highest seqno is #20, then members other than C will not be able to get messages C#3 - C#20 from C. They would therefore queue all subsequent messages from C !
> SOLUTION:
> - On merging, partition coordinators cannot just return their digests, but have to fetch the digests for the partition from all members
> - The digest consolidation only accepts digests from direct members, e.g. when B returns a digest of (B:24,C:7,D:15) we only use the B part of it
> - Simplification of the above: have members only return their lowest, highest received and highest delivered seqnos, but *not* seqnos they 'know' (hearsay) from other members
> - When a merge coordinator gets digest information from {A,B,D} in a merge between {A,B} and {C,D}, then it has to fail the merge because it is missing innformation from C !

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list