Friday, December 3, 1993 Distributed Coordination Ring algorithm to elect a new coordinator (section 13.7.2) Requires n^2 messages for n the number of processes in the system Messages passing from left to right on ring on unidirectional links Each process has a unique priority number The goal is to find the process with the highest priority number and inform all processes of this fact Each process has an active list containing the priority numbers of all active processes in the system If Pi detects coordinator failure create a new active list, initially empty send elect(i) to right neighbor add i to active list If Pi receives message elect(j) from left neighbor, must respond in one of three ways: - if this is first elect message Pi has seen or sent create a new active list add i and j to the active list send elect(i) to right neighbor send elect(j) to right neighbor - if i <> j (elect(j) does not contain Pi's number) add j to active list send elect(j) to right neighbor - if i == j (message received is elect(i)) then active list for Pi contains all active processes' priority numbers largest number is now new coordinator -------------------------------------------------------------------------------