Skip to content

feat: shut down gracefully with ctrl+c#1364

Merged
simonsan merged 8 commits intomainfrom
feat/graceful-shutdown
Nov 30, 2024
Merged

feat: shut down gracefully with ctrl+c#1364
simonsan merged 8 commits intomainfrom
feat/graceful-shutdown

Conversation

@simonsan
Copy link
Copy Markdown
Contributor

@simonsan simonsan commented Nov 23, 2024

If you have a long-running process, like webdav or backup or others, pressing CTRL+C usually results in a non-zero exit code:

process didn't exit successfully: P:\CARGO\.cargo-target-win\debug\rustic.exe -P <PROFILE> webdav (exit code: 0xc000013a, STATUS_CONTROL_C_EXIT)

This shouldn't be the case, as it was user initiated and we can shut down gracefully.

This PR adds this functionality, so CTRL+C shuts down rustic gracefully and exits with a 0 exit-code.

Signed-off-by: simonsan <14062932+simonsan@users.noreply.github.com>
Signed-off-by: simonsan <14062932+simonsan@users.noreply.github.com>
Signed-off-by: simonsan <14062932+simonsan@users.noreply.github.com>
@simonsan simonsan added C-enhancement Category: New feature or request A-ui-ux Area: Related to user interfaces and user experience S-waiting-for-review Status: PRs waiting for review labels Nov 23, 2024
@simonsan simonsan requested a review from nardoor November 23, 2024 17:19
Copy link
Copy Markdown
Member

@aawsome aawsome left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@aawsome aawsome enabled auto-merge November 30, 2024 21:02
@simonsan simonsan disabled auto-merge November 30, 2024 21:08
@simonsan simonsan merged commit 852635e into main Nov 30, 2024
@simonsan simonsan deleted the feat/graceful-shutdown branch November 30, 2024 21:09
aawsome added a commit that referenced this pull request Dec 2, 2024
## 🤖 New release
* `rustic-rs`: 0.9.4 -> 0.9.5 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## [0.9.5](v0.9.4...v0.9.5)
- 2024-12-02

### Added

- *(commands)* More dump options
([#1339](#1339))
- shut down gracefully with ctrl+c
([#1364](#1364))
- Add --filter-jq option
([#1372](#1372))
- *(async)* use `is_async_compatible()` to determine backend
incompatibility and error out
([#1355](#1355))
- *(commands)* Add `mount` command
([#973](#973))

### Fixed

- *(commands)* run backup hooks before checking source dir
([#1374](#1374))
- *(commands)* Use spawn_blocking in webdav when calling rustic_core
([#1365](#1365))
- *(filesystem)* Use channels to communicate within webdav filesystem
([#1361](#1361))

### Other

- Add documentation for `minutely` keep option
([#1371](#1371))
- update snapshots to include minutely configuration options
- *(deps)* update rustic_core, bytes, and libc dependencies to latest
versions
- simplify lifetime annotations in OpenFileReader and TreeIterItem
implementations
- clean up whitespace and update clippy linting allowances
- *(deps)* update dependencies to latest versions
- *(deps)* update lockfile to get rid of vulnerable `url` version
- *(mount)* rename fields for clarity, add user options for mount
([#1353](#1353))
- *(deps)* update dependencies
- *(deps)* don't use rustic_core webdav feature
([#1367](#1367))
- Revert "fix(filesystem): Use channels to communicate within webdav
filesystem ([#1361](#1361))"
- Revert "feat(async): use `is_async_compatible()` to determine backend
incompatibility and error out
([#1355](#1355))"
- move `webdavfs` from `rustic_core` to `rustic-rs`
([#1363](#1363))
- *(clippy)* comment out unused lints in lib.rs
- *(clippy)* apply fixes automatically
- use BTreeMap for env in global options
([#1360](#1360))
- add tiny framework for testing rustic's compat with latest restic
([#1303](#1303))
- use snapshot tests for default config, show-config and completions
([#1359](#1359))
- *(deps)* update dependencies rustic_core, rustic_backend,
rustic_testing, and migrate to conflate 0.3
([#1357](#1357))
- fix typos
- *(build)* add platform-dependent settings and remove ci flag for extra
features
- clarify `--use-profile` command in config by using long form
([#1344](#1344))
- *(deps)* update core and testing crates
([#1340](#1340))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

---------

Co-authored-by: rustic-release-plz[bot] <182542030+rustic-release-plz[bot]@users.noreply.github.com>
Co-authored-by: Alexander Weiss <alex@weissfam.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ui-ux Area: Related to user interfaces and user experience C-enhancement Category: New feature or request S-waiting-for-review Status: PRs waiting for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants