80 likes | 211 Vues
This document outlines the design and implementation of a bulletin board system using Ensemble Lab. It addresses key concepts related to message delivery, including handling old message requests, managing message order, and addressing crashes during message transmission. The challenges of ensuring that messages are delivered in the correct sequence are discussed, along with strategies for dealing with duplicates and handling old messages sent by different members in the system. Practical examples illustrate the complexity of message dependencies and system reliability.
E N D
Comments Farnaz Moradi 2013
Replies RE:m1 A m1 m2 B m1 C RE:m1 m2 Delivered by C: RE:m1 must appear after m1 using a layer of ”Ensemble”. m2 is not caused by m1, so it doesn’t matter if it is delivered before m1.
Sending a Request for Old Messages m2 m3 m4 A B m1 Old Req m4 m3 C join m1,m2,m3 Duplicate! Delivered by C: m4 should be Delivered after old messages
Sending a Request for Old Messages m2 m3 Crash! A B m1 Req m4 m3 C join Messages queue in C: If the member from which we have requested the old messages crashes, what should C do?
Old Messages Sent by Leader m2 A Old m3 B m1 m3 join C m1,m2,m3 Delivered by C: Duplicate!
Old Messages Sent by Everyone m2 A Old m3 B m1 m3 Old m1,m2 join C m1,m2,m3 Duplicate! Delivered by C: Does the second ”Old” message replace the first ”Old” message or are they merged?
Old Messages Sent One by One m2 m3 Crash! A B m1 m2 m1 join C m4 If A crashes before it sends all the old messages to C, what should C deliver?