From c8cf0fd2547af3bb6540c7db6296c5ef631e3b64 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 27 Apr 2026 16:12:51 -0300 Subject: [PATCH] fix(sync): avoid unnecessary uvc helper restarts --- Cargo.lock | 6 +++--- client/Cargo.toml | 2 +- common/Cargo.toml | 2 +- scripts/install/server.sh | 5 +++-- server/Cargo.toml | 2 +- testing/tests/server_install_script_contract.rs | 8 ++++++++ 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 03b7efa..b3c0ca4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1642,7 +1642,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "lesavka_client" -version = "0.14.23" +version = "0.14.24" dependencies = [ "anyhow", "async-stream", @@ -1676,7 +1676,7 @@ dependencies = [ [[package]] name = "lesavka_common" -version = "0.14.23" +version = "0.14.24" dependencies = [ "anyhow", "base64", @@ -1688,7 +1688,7 @@ dependencies = [ [[package]] name = "lesavka_server" -version = "0.14.23" +version = "0.14.24" dependencies = [ "anyhow", "base64", diff --git a/client/Cargo.toml b/client/Cargo.toml index 1cee5dd..bf9fabb 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ path = "src/main.rs" [package] name = "lesavka_client" -version = "0.14.23" +version = "0.14.24" edition = "2024" [dependencies] diff --git a/common/Cargo.toml b/common/Cargo.toml index fde0b39..a242058 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lesavka_common" -version = "0.14.23" +version = "0.14.24" edition = "2024" build = "build.rs" diff --git a/scripts/install/server.sh b/scripts/install/server.sh index bd9c3ef..da45910 100755 --- a/scripts/install/server.sh +++ b/scripts/install/server.sh @@ -669,7 +669,6 @@ cat <<'UNIT' | sudo tee /etc/systemd/system/lesavka-uvc.service >/dev/null Description=lesavka UVC control helper After=lesavka-core.service Requires=lesavka-core.service -RefuseManualStop=yes [Service] ExecStart=/usr/local/bin/lesavka-uvc.sh @@ -700,9 +699,11 @@ sudo rm -f /etc/systemd/system/lesavka-watchdog.timer \ sudo systemctl daemon-reload -if systemctl is-active --quiet lesavka-uvc; then +if [[ "$UVC_ENV_CHANGED" == "1" ]] && systemctl is-active --quiet lesavka-uvc; then sudo systemctl restart lesavka-uvc echo "✅ lesavka-uvc restarted with the refreshed UVC runtime settings." +elif systemctl is-active --quiet lesavka-uvc; then + echo "✅ lesavka-uvc already active; runtime settings unchanged." else echo "⚠️ lesavka-uvc is not active; start via lesavka-core dependency path." fi diff --git a/server/Cargo.toml b/server/Cargo.toml index 1a4a61f..af1f9fe 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -10,7 +10,7 @@ bench = false [package] name = "lesavka_server" -version = "0.14.23" +version = "0.14.24" edition = "2024" autobins = false diff --git a/testing/tests/server_install_script_contract.rs b/testing/tests/server_install_script_contract.rs index f86cb89..ffe9ada 100644 --- a/testing/tests/server_install_script_contract.rs +++ b/testing/tests/server_install_script_contract.rs @@ -69,6 +69,14 @@ fn server_install_pins_hdmi_camera_and_display_defaults() { SERVER_INSTALL.contains("video-output node did not appear after rebuild"), "install script should explain why it refuses a half-applied UVC install" ); + assert!( + !SERVER_INSTALL.contains("RefuseManualStop=yes"), + "install script should not generate a UVC unit that blocks legitimate refreshes" + ); + assert!( + SERVER_INSTALL.contains("lesavka-uvc already active; runtime settings unchanged."), + "install script should avoid unnecessary UVC restarts when nothing changed" + ); } #[test]