{"id":16368911,"url":"https://github.com/apsdehal/repcrec","last_synced_at":"2025-08-10T19:10:30.705Z","repository":{"id":74651521,"uuid":"108017303","full_name":"apsdehal/RepCRec","owner":"apsdehal","description":"Replicated Concurrency Control and Recovery project","archived":false,"fork":false,"pushed_at":"2017-12-13T01:31:28.000Z","size":209,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-24T05:36:26.908Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apsdehal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2017-10-23T17:44:30.000Z","updated_at":"2017-12-09T04:19:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a9fb51f-dfd3-4c1c-9f5e-ca9800bf20b4","html_url":"https://github.com/apsdehal/RepCRec","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apsdehal/RepCRec","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apsdehal%2FRepCRec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apsdehal%2FRepCRec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apsdehal%2FRepCRec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apsdehal%2FRepCRec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apsdehal","download_url":"https://codeload.github.com/apsdehal/RepCRec/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apsdehal%2FRepCRec/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269773183,"owners_count":24473558,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"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":[],"created_at":"2024-10-11T02:54:10.866Z","updated_at":"2025-08-10T19:10:30.621Z","avatar_url":"https://github.com/apsdehal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RepCRec\n\nReplicated Concurrency Control and Recovery project for Advanced Database Class with Professor Shasha at NYU Fall 2017.\n\n\n## Features\n\n- Uses multiversion concurrency control to read locks to transactions\n- Deadlock detection and clearance in case of blocked transactions\n- Replication of variables for better accessibility on websites\n- Site failure recovery for transactions\n- Uses available copies approach to mitigate failures and increase availability\n- Supports read only transactions\n- Configurable number of sites and variables\n- Global transaction manager and per site data manager (containing lock table)\n- Highly modular\n\n## Running\n\n- Run `pip install -r requirements.txt` to install all of the requirements using pip\n- Copy config: `cp RepCRec/sample.config.py RepCRec/config.py`, edit it to set log level and other stuff\n- Normal run command would `python -m RepCRec.start \u003cinput_file\u003e`.\n- Additionally, input can be provided via stdin through `-i` option.\n- Sites can be brought up using `-s` option\n- Similarly number of sites and variables are easily configurable, by default we have 10 sites and 20 variables in which even indexed are replicated on all sites and odd index are present on `(index + 1) % 10`   \n\n```\n$ python -m RepCRec.start --help\n\nusage: start.py [-h] [-n 10] [-v 20] [-s] [-o None] [-i] file_path\n\npositional arguments:\n  file_path             File name, pass anything in case of stdin\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -n 10, --num-sites 10\n                        Number of Sites\n  -v 20, --num-variables 20\n                        Number of variables\n  -s, --sites           Whether to bring sites up\n  -o None, --out-file None\n                        Output file, if not passed by default we will print to\n                        stdout\n  -i, --stdin           Takes input from stdin instead of file if passed\n```\n\n## Design\n\nDesign can be found inside design folder of the repo.\n\n## Tests\n\nVarious test have been added to support robust and care free development process. Run tests using following command:\n\n\u003e `python tests/run_tests.py`\n\nThis will provide you with results of various tests run and diffs of failures if any. Sample test case can be found in `tests/inputs` folder.\n\n## Authors\n\n- Amanpreet Singh [@apsdehal](https://github.com/apsdehal)\n- Sharan Agrawal [@agr-shrn](https://github.com/agr-shrn)\n\n## Acknowledgements\n\nWe would like to acknowledge Prof. Dennis Shasha for his constant support, prompt question answering and lectures this semester.\n\n## License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapsdehal%2Frepcrec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapsdehal%2Frepcrec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapsdehal%2Frepcrec/lists"}