Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-1391

Compress MergeViews

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Major Major
    • 3.4
    • None
    • None

      The 'subgroups' field of MergeView is a list of Views, referring to the subclusters that formed the new view.

      Each View in that list contains (1) the creator of the view, (2) an ID and (3) a list of member addresses.

      Both (1) and (3) are present in the new MergeView, so, to save memory and message sizes, 'subgroups' could be compressed: (1) and (3) could be indices into View's 'members' field.

      Example: if we have MergeView A|22={A,B,C,D,E,X,Y,Z}, subgroups=A|21={A,B,C}, D|19={D,E}, X|20={X,Y,Z},
      then 'subgroups' can be compressed as follows:

      subgroups=0|21={0,1,2}, 3|19={3,4}, 5|20={5,6,7}

      This is possible because the indices never change, as the contents of Views and MergeViews are static, e.g. we can never add or remove a member: to do this, a new View/MergeView would be created.

      Substituting addresses with indices (shorts, possibly using variable-bit encoding) reduces the memory footprint of a view, and the size of a serialized view on the wire.

      Getting the subgroups field, e.g. using method getSubgroups() would synthesize the List<View> just-in-time.

              rhn-engineering-bban Bela Ban
              rhn-engineering-bban Bela Ban
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: