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

NAKACK: overwriteDigest() doesn't adjust sequence number

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 2.10.2, 2.11.1, 2.12
    • Labels:
      None

      Description

      NAKACK.overwriteDigest() is used by the 2 state transfer protocols (STATE_TRANSFER and STREAMING_STATE_TRANSFER).

      When A has a digest A:250,B:10,C:160, and gets the state (as a result of calling JChannel.getState() with a digest of A:230,B:10,C:160, it'll set its own digest to A:230 (from A:250).

      However, A's sequence number (seqno) will remain at 250 ! This means, when A sends the next message, it'll send A:251, but because we set the digest to A:230, A will ask itself to retransmit messages A:230-250 !

      SOLUTION: when receiving digest A:230, A should set its seqno to 230
      WORKAROUND: use FLUSH, which doesn't ship digests on state transfer

        Gliffy Diagrams

          Attachments

          1. GroupCommunication.java
            7 kB
          2. tmp.xml
            3 kB
          3. ViewHandler.java
            1 kB

            Activity

              People

              • Assignee:
                belaban Bela Ban
                Reporter:
                belaban Bela Ban
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: