{"id":50493563,"url":"https://github.com/henryqingmo/distributed-transaction","last_synced_at":"2026-06-02T05:01:18.083Z","repository":{"id":353664636,"uuid":"1218622829","full_name":"henryqingmo/Distributed-Transaction","owner":"henryqingmo","description":"Distributed transaction system using strict two-phase locking (2PL), wound-wait deadlock prevention, and two-phase commit (2PC) to provide isolation and atomicity across multiple servers.","archived":false,"fork":false,"pushed_at":"2026-05-05T22:58:22.000Z","size":3947,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-05T23:27:52.328Z","etag":null,"topics":["2-phase-commit","2-phase-locking","concensus","distributed-systems","go"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henryqingmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-23T03:54:58.000Z","updated_at":"2026-05-05T22:58:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/henryqingmo/Distributed-Transaction","commit_stats":null,"previous_names":["henryqingmo/distributed-transaction"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/henryqingmo/Distributed-Transaction","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henryqingmo%2FDistributed-Transaction","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henryqingmo%2FDistributed-Transaction/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henryqingmo%2FDistributed-Transaction/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henryqingmo%2FDistributed-Transaction/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henryqingmo","download_url":"https://codeload.github.com/henryqingmo/Distributed-Transaction/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henryqingmo%2FDistributed-Transaction/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33806987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2-phase-commit","2-phase-locking","concensus","distributed-systems","go"],"created_at":"2026-06-02T05:01:16.219Z","updated_at":"2026-06-02T05:01:18.075Z","avatar_url":"https://github.com/henryqingmo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MP3 — Distributed Transactions\n\nTwo-phase locking (2PL) for isolation and two-phase commit (2PC) for atomicity across branch servers.\n\n## Build\n\n```bash\nmake\n```\n\nProduces `mp3/server` and `mp3/client`.\n\n## Config file\n\nEach line names a branch and its host/port:\n\n```\nA sp26-cs425-3701.cs.illinois.edu 1234\nB sp26-cs425-3702.cs.illinois.edu 1234\nC sp26-cs425-3703.cs.illinois.edu 1234\nD sp26-cs425-3704.cs.illinois.edu 1234\nE sp26-cs425-3705.cs.illinois.edu 1234\n```\n\n## Running a server\n\n```bash\n./mp3/server \u003cbranch\u003e \u003cconfig\u003e\n# e.g.\n./mp3/server A config.txt\n```\n\nStart one process per branch. Each server listens on the port from the config file.\n\n## Running the client\n\n```bash\n./mp3/client \u003cid\u003e \u003cconfig\u003e\n# e.g.\n./mp3/client foo config.txt\n```\n\nThe client connects to a randomly selected server as coordinator and reads commands from stdin.\n\n### Client commands\n\n```\nBEGIN\nDEPOSIT \u003cbranch\u003e.\u003caccount\u003e \u003camount\u003e\nWITHDRAW \u003cbranch\u003e.\u003caccount\u003e \u003camount\u003e\nBALANCE \u003cbranch\u003e.\u003caccount\u003e\nCOMMIT\nABORT\n```\n\n## Local test\n\n```bash\ncd sample_test\n./run.sh\n```\n\nStarts five servers on ports 10001–10005, runs two test cases, and diffs output against expected results.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenryqingmo%2Fdistributed-transaction","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenryqingmo%2Fdistributed-transaction","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenryqingmo%2Fdistributed-transaction/lists"}