Design questions for Lab 3
Phase 1
- What state do you keep to indicate whether or not you are the leader?
- How do you know you are the leader?
1a
- At what point do Paxos servers know to start looking for heartbeat messages?
- When do you ignore p1a's? When do you act on them? Can you act on them while in phase 2?
1b
- Is it possible to receive 1b messages with a ballot larger than your current ballot? Why or why not?
- When do you ignore p1b's? When do you act on them?
- Are you merging logs "on the fly" or keeping track of logs till you see a majority? Or something else? Justify your design decision.
- When does the leader stop merging logs?
- What data structure are you using to record p1b's? When does this data structure get initialized/cleared?
Phase 2
- When do you know the leader is dead?
2a
- How do you handle 2a's with larger ballot numbers than your ballot number?
- What causes 2a requests to be sent?
2b
- What data structure are you using to keep track of 2b responses?
- How do you know to try progressing slot out?
“Phase 3” (Log propagation and Garbage Collection)
- Does phase 3 happen concurrently with phase 2?
- What messages are you "piggybacking" to share log decisions and garbage collection information?
- What data structure are the nodes going to use to keep track of who has executed what commands?