This is a list of the known errors, and their corrections, for the second edition of Distributed Computing: Fundamentals, Simulations, and Advanced Topics.
Page and line numbers are used to identify the location of the error; a negative line number means counting from the bottom up. The first person to report the error is credited.
Send corrections to email@example.com or firstname.lastname@example.org .
Page 81, Figure 4.8:
Both occurrences of tau should be labeled as P-only, while both occurrences of pi should be labeled as p_j-only.
Page 98, Figure 5.3: (Christian Walter, Asad Chaudhry)
In the second extension, alpha_k^j, p_j fails to send to q_1, ..., q_j (and not q_1, ..., q_i, as shown).
Page 121, Exercise 5.9::
Construct the execution for n = 8 and f = 2.
Page 176, lines 6-7:
p_j must first (causally) receive all messages (causally) received by p_i before sending m
p_j must first (causally) receive all messages that were (causally) received by p_i before p_i sent m
Page 176, line -6:
Page 202, Figure 9.5: (Antal Buss)
Swap the labels p_0 and p_2 in parts (a) and (b) of the figure so that p_0 is the writer and p_2 is one of the readers.
Page 219, last paragraph of proof of Lemma 10.4:
Change both occurrences of Report[i] to Report[j].
Page 222, line 5: (Christian Cachin)
w' occurs in alpha after r
w' occurs in alpha before r
Page 235, Exercise 10.12:
f < 2n
f < n/2
Page 363, Algorithm 58: (Danny Hendler)
Similarly to the bakery mutual exclusion algorithm, Lines 1-2 (in which a process reads the other numbers and writes its own) should be wrapped with
waiting[i] := true,
waiting[i] := false
Comparing the number with j should wait until waiting[j] is false.
Page 371, line 2 (signature of procedure safe-phase): (Michel Raynal)
Reverse the order of the parameters to procedure safe-phase. I.e., change
value x, integer r
integer r, value x
Page 371, Algorithm 59:
The five references to R_j in lines 5-9 do not need to be five separate reads of R_j: it is sufficient to read R_j once during this for loop and save the value in a local variable. However, the read of R_j in line 12 must be a separate read.
Page 371, line 5 of Algorithm 59:
Page 373, line -2:
according to R_i.phase
according to the local r variable
Page 374, line 7 of Algorithm 60:
R_c.phase >= r
R_c.phase > r
Page 374, line -7: (Michel Raynal)
n <= n/2
n <= 2f