Winston Jodjana winj@uw.edu Dixon Tirtayadi dixontir@uw.edu Mengqi Chen franchen@uw.edu Write-up - A detailed description of your group's implementation client.py - The client file to send lock or unlock operations to a paxos node paxos.py - The main node file that executes multi-instance Paxos paxos_utils.py - Misc. utilities used by paxos.py (e.g. ballot num) message.py - All the possible messages that can be sent between client and paxos nodes timers.py - All the required timers that help keep track of paxos nodes' states to make sure, for example, nodes aren't dead lockmanager.py - File that handles all the lock and unlock operations specific to a client main.py - A utility file to spawn a paxos group with multiple nodes Our implementation has a single node (paxos.py) that serves all 3 roles of proposer, acceptor, and listener. Any node can accept a request from a client and it will be considered as part of the paxos. Any node is run separately on its own thread by running the main function of paxos.py on multiple terminal windows, for example. As such, a node can be easily killed. The code itself is quite self explanatory as it just runs the paxos algorithm verbatim - Any assumptions you made If a node fails, it will eventually recover Clients won't resend messages twice, any subsequent message after the ith message are different operations The identity of the Paxos group members are hardcoded No deadlocks Communication is reliable, no atmost-once or atleast-once issues - How to compile, deploy and run your implementation Spawn the paxos group (replace n with number of nodes): python3 main.py n Start the client and execute commands: python3 client.py localhost 9000 - Any issues or scenarios explicitly not considered If a client send a message and it gets dropped, we assume it was lost and won't be executed as clients won't resend messages - Any other behavior of the system you feel important to discuss (e.g. quirks, interesting behavior, performance characteristics, etc) None
WinJ
authored
# Conflicts: # assignment2/paxos.py
Name | Last commit | Last update |
---|---|---|
.. | ||
Java | ||
__pycache__ | ||
.keep | ||
README.txt | ||
client.py | ||
lockmanager.py | ||
main.py | ||
message.py | ||
paxos.py | ||
paxos_utils.py | ||
timers.py |