{"id":13587000,"url":"https://github.com/cloudflare/shellflip","last_synced_at":"2025-05-15T03:05:48.505Z","repository":{"id":150683412,"uuid":"621738526","full_name":"cloudflare/shellflip","owner":"cloudflare","description":"Graceful process restarts in Rust","archived":false,"fork":false,"pushed_at":"2025-03-27T12:26:29.000Z","size":54,"stargazers_count":278,"open_issues_count":3,"forks_count":10,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-05-09T09:47:35.740Z","etag":null,"topics":["graceful-shutdown","process","restart","rust","server","systemd"],"latest_commit_sha":null,"homepage":"https://blog.cloudflare.com/oxy-the-journey-of-graceful-restarts/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudflare.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}},"created_at":"2023-03-31T09:27:18.000Z","updated_at":"2025-05-09T09:28:58.000Z","dependencies_parsed_at":"2025-04-14T03:58:34.351Z","dependency_job_id":"d1d45818-8d7a-476a-9ec2-279e4fe7d027","html_url":"https://github.com/cloudflare/shellflip","commit_stats":{"total_commits":21,"total_committers":5,"mean_commits":4.2,"dds":"0.23809523809523814","last_synced_commit":"9d74d45f66df75c8133a5dd6ff9e842140fe6a32"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fshellflip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fshellflip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fshellflip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fshellflip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudflare","download_url":"https://codeload.github.com/cloudflare/shellflip/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"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","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":["graceful-shutdown","process","restart","rust","server","systemd"],"created_at":"2024-08-01T15:05:57.490Z","updated_at":"2025-05-15T03:05:48.484Z","avatar_url":"https://github.com/cloudflare.png","language":"Rust","readme":"# shellflip\n[![crates.io](https://img.shields.io/crates/v/shellflip.svg)](https://crates.io/crates/shellflip)\n[![docs.rs](https://docs.rs/shellflip/badge.svg)](https://docs.rs/shellflip)\n\nGraceful process restarts in Rust.\n\nThis crate facilitates upgrading or reconfiguring a service without disrupting existing connections.\nThis is achieved by forking the process and communicating a small amount of state between the old\nand new processes; once the new process has started successfully the old process may terminate.\n\nThis crate has the following goals:\n\n* No old code keeps running after a successful upgrade (and inevitable shutdown of the old process)\n* The new process has a grace period for performing initialisation\n* Crashing during initialisation is OK\n* Only a single upgrade is ever run in parallel\n* It is possible for the user/process initiating the upgrade to know if the upgrade succeeded\n\nInspired by the [tableflip](https://github.com/cloudflare/tableflip) go package but not a direct\nreplacement.\n\n# Using the library\n\nA full example is given in the [restarter example service](examples/restarter.rs).\n\nThe main struct of interest is `RestartConfig` which has methods for detecting or initiating\nrestart. For shutting down a restarted process, the `ShutdownCoordinator` provides the means for\nboth signalling a shutdown event to spawned tasks, and awaiting their completion.\n\n## License\n\nBSD licensed. See the [LICENSE](LICENSE) file for details.\n\n🦀ノ( º _ ºノ) - respect crables!\n","funding_links":[],"categories":["Rust","Infrastructure \u0026 Operations"],"sub_categories":["Deployment \u0026 Management"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudflare%2Fshellflip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudflare%2Fshellflip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudflare%2Fshellflip/lists"}