Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cse550
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Winston Jodjana
cse550
Commits
e64e5037
Commit
e64e5037
authored
2 years ago
by
WinJ
Browse files
Options
Downloads
Patches
Plain Diff
README.txt
parent
e905722d
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
assignment2/README.txt
+38
-0
38 additions, 0 deletions
assignment2/README.txt
with
38 additions
and
0 deletions
assignment2/README.txt
0 → 100644
+
38
−
0
View file @
e64e5037
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
python3 paxos.py localhost 9000 localhost 9000 localhost 9001
python3 paxos.py localhost 9001 localhost 9000 localhost 9001
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
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment