|
|
Clarifications Page 153, "Algorithm 4.5": In the initialization, the following scheme is used to name the registers: "writer[1,1]" is named "1", "writer[1,2]" is named "2", ..., "writer[1,N]" is named "N"; then "readers[1,1,1]" is named "N+1", "readers[1,1,2]" is named "N+2", "readers[1,1,N]" is named "2N", "readers[1,2,1]" is named "2N+1", and so forth. In the algorithm, both read and write operations need to update registers; when all the registers have been updated (i.e., when the acks counter reaches N) the operation may return. The boolean reading flag is used to distinguish which operation (read or write) is being performed in the guard that waits for all updates to be concluded. Typos Page 21, "Listing 1.7": "appia. Page 31, line 11: "...can crash up to Page 64, Exercise 2.3, line 2: "...we cannot
Page 110, stack figure: "(implemented by
Page 124, "Try It": "To test the implementation
of the Page 145, line7: "Process pi might have Page 145, line 15: "... used by the
Page 148, "AR3": "... then v1 cannot Page 151, line 16: "... implements a Page 181, "Try It": "...specify the qos
as Page 202, "5.3.3": "If any of those
timestamps is Page 203, "Alg. 5.5": "upon event <pp2pDeliver|...". Page 258, "Listing 6.1": "package appia.protocols.tuturialIDA.consensusUTO; public class ConsensusUTOSession extends Session {"
Acknowledgements The authors are indebted to Ali Ghodsi and Maxime Monod for pointing out several of the errors and omissions listed above. |
|
Questions or problems regarding this web site
should be directed to Luís Rodrigues. |