JGroupsPbcastSTATE_TRANSFER

Definition

 

Allows a joining member to retrieve a shared group state from the oldest member (coordinator). Other members do not have to stop sending messages, while state transfer is in progress.

This works as follows:

 

  • The joiner asks the coordinator for the state

  • The coordinator fetches 2 things: a digest and the state from the application (as a byte{FOOTNOTE DEF  } buffer)

    • The digest is a vector of highest and lowest sequence numbers (seqnos) seen for each member, e.g.

      P[2,45]

       

      Q[45, 288]

       

      R[0, 10]

      . This means that P's highest seqno seen by the coordinator (who probably is P!) is 45, 288 for Q and 10 for R.

  • Messages in the digest are part of the state, and must not be received anymore

  • The coordinator now sends back the state and digest to the joiner as a unicast message

  • The joiner sets the state

    • This calls into the application, which most likely converts the byte{FOOTNOTE DEF  } buffer to some internal structure

  • The joiner also sets the digest, overriding its initial digest

    • This makes sure that messages that are part of the state are not received anymore and messages that have not yet been received (not part of the state) are retransmitted

 

 

 

Example

  • While S is joining the group and requesting the state from P, all members continue sending messages to the group.

  • When S is done setting the digest (shown above), the highest seqnos are P:55, Q:300 and R:10.

  • When S receives message Q:301, it requests retransmission of messages Q:289 - Q:301 from Q.

  • Dito for the other members

 

Using digest for state transfer ensures that state can be transferred to a joining member without forcing the existing group members to stop sending messages.

 

 

 

 

Configuration Example

 

    <pbcast.STATE_TRANSFER></pbcast>

 

Configuration Parameters

STATE_TRANSFER protocol has no parameters.

 

See Protocol Configuration Common Parameters.  STATE_TRANSFER has no protocol-specific parameters.

 

 

Back To JGroups