[jboss-jira] [JBoss JIRA] (JGRP-1707) MergeView: marshalling fails when subgroups are not a subset of members

Bela Ban (JIRA) jira-events at lists.jboss.org
Fri Sep 27 06:17:03 EDT 2013


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

Bela Ban commented on JGRP-1707:
--------------------------------

The marshalling of MergeViews was changed: when a member of a subgroup is not found in the 'members' array, we send index -1 and then the actual address of that member. On reading a -1 as index, we read the actual address and use it.
                
> MergeView: marshalling fails when subgroups are not a subset of members
> -----------------------------------------------------------------------
>
>                 Key: JGRP-1707
>                 URL: https://issues.jboss.org/browse/JGRP-1707
>             Project: JGroups
>          Issue Type: Bug
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>             Fix For: 3.4
>
>
> When we have 2 partitions \{A,B,C\} and \{X,Y,Z\} and they merge, but one of the members (e.g. Z) is excluded from the merge (e.g. because it is involved in a different merge already), we create the following MergeView:
> {noformat}
> MergeView:
> view={A,B,C,X,Y}
> subgroups={A,B,C} {X,Y,Z}
> {noformat}
> Because the members of the subgroups refer to the merge view via index, the index for Z is -1, and thus - when unmarshalled - Z points to a null creator, which triggers the following stack trace:
> {noformat}
> 00631037-49819: failed handling incoming message
> java.lang.IllegalArgumentException: creator cannot be null
>         at org.jgroups.ViewId.<init>(ViewId.java:32)
>         at org.jgroups.ViewId.<init>(ViewId.java:42)
>         at org.jgroups.View.create(View.java:90)
>         at org.jgroups.MergeView.readFrom(MergeView.java:119)
>         at org.jgroups.protocols.pbcast.GMS$GmsHeader.readFrom(GMS.java:1285)
>         at org.jgroups.Message.readHeader(Message.java:889)
>         at org.jgroups.Message.readFrom(Message.java:803)
>         at org.jgroups.protocols.TP.readMessageBatch(TP.java:1796)
>         at org.jgroups.protocols.TP.receive(TP.java:1463)
>         at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:683)
>         at java.lang.Thread.run(Unknown Source) 
> {noformat}
> SOLUTION:
> * When marshalling a MergeView, and a subgroup member has no corresponding member in {{members}}, then send the *address* instead of the index
> * OR: remove all members from subgroups which are not in {{members}}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list