Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

PlantUML
title This diagram shows a member (N) using a locator (L) discovering the Coordinator (C) and joining
entity N
entity L
entity C
N -> L : FindCoordinator(myId)
note right : via tcp/ip
L -> N : FindCoordinatorResponse(c)

N -> C : JoinRequest
note right : this and subsequent communications via UDP

C -> N : PrepareView(c,l,n)
note right of C : ViewCreator thread processes request
N -> C : ack
C -> L : PrepareView(c,l,n)
L -> C : ack
C -> N : InstallView(c,l,n)
N -> C : ack
note right of N
continue startup after
sending ack
end note
C -> L : InstallView(c,l,n)
L -> C : ack
PlantUML
title This shows a member (M) leaving and another member (P) joining in the same view
entity M
entity C
entity P
M -> C : LeaveRequest
C -> M : LeaveResponse
note right of C : LeaveRequest is queued
M -> M : done
P -> C : JoinRequest
note right of C
JoinRequest is queued.
View Creator wakes up and
creates view {C,P} removing M
end note
C -> P : Prepare {C,P}
P -> C : ack
C -> P : Install {C,P}
P -> C : ack
note right of P: P processes view and completes Join

PlantUML
title This diagram shows two Locators starting up at the same time with no other members present.

entity L1
entity L2
L1 -> L2 : FindCoordinator
note right of L1: via tcp/ip

L2 -> L1 : FindCoordinatorResponse(registrants={L2,L1})
note right of L2
both members get {L1,L2} registrants and choose
L1 as coordinator due to ID sort order
end note
L2 -> L1 : FindCoordinator
L1 -> L2 : FindCoordinatorResponse(registrants={L1,L2})
note right of L2 : subsequent messaging is via UDP

L2 -> L1 : JoinRequest
L1 -> L1 : becomeCoordinator
note right of L1 : L1 ViewCreator thread processes request

L1 -> L2 : PrepareView(L1,L2)
L2 -> L1 : ack
L1 -> L2 : InstallView(L1,L2)
L2 -> L1 : ack
note right of L1 : L1 and L2 continue startup