mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-12-04 14:37:19 -05:00
shutdown better
After a frustrating search for a suitable channel to use for shutdown (tokio::sync::watch::Receiver and futures::future::Shared<tokio::sync::oneshot::Receiver> didn't look quite right) in which I rethought my life decisions, I finally just made my own (server/base/shutdown.rs). We can easily poll it or wait for it in async or sync contexts. Most importantly, it's convenient; not that it really matters here, but it's also efficient. We now do a slightly better job of propagating a "graceful" shutdown signal, and this channel will give us tools to improve it over time. * Shut down even when writer or syncer operations are stuck. Fixes #117 * Not done yet: streamers should instantly shut down without waiting for a connection attempt or frame or something. I'll probably implement that when removing --rtsp-library=ffmpeg. The code should be cleaner then. * Not done yet: fix a couple places that sleep for up to a second when they could shut down immediately. I just need to do the plumbing for mock clocks to work. I also implemented an immediate shutdown mode, activated by a second signal. I think this will mitigate the streamer wait situation.
This commit is contained in:
@@ -272,13 +272,10 @@ clean up the excess files. Moonfire NVR will start working again immediately.
|
||||
|
||||
If Moonfire NVR's own files are too large, follow this procedure:
|
||||
|
||||
1. Shut it down via `SIGKILL`:
|
||||
1. Shut it down.
|
||||
```console
|
||||
$ sudo killall -KILL moonfire-nvr
|
||||
$ sudo killall moonfire-nvr
|
||||
```
|
||||
(Be sure to use `-KILL`. It won't shut down properly on `SIGTERM` or `SIGINT`
|
||||
when out of disk space due to [issue
|
||||
#117](https://github.com/scottlamb/moonfire-nvr/issues/117).)
|
||||
2. Reconfigure it use less disk space. See [Completing configuration through
|
||||
the UI](install.md#completing-configuration-through-the-ui) in the
|
||||
installation guide. Pay attention to the note about slack space.
|
||||
|
||||
Reference in New Issue
Block a user