From 649cf7f748fe4981ce75bc4fbd7da99a244c647f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Liebau?= Date: Mon, 8 Mar 2021 10:24:02 +0100 Subject: [PATCH 1/2] Change dbus call from GetUnit to LoadUnit as GetUnit doesn't work reliably. fixes #100 --- src/provider/systemdmanager/manager.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/provider/systemdmanager/manager.rs b/src/provider/systemdmanager/manager.rs index 5e0ca4a..22cc9ec 100644 --- a/src/provider/systemdmanager/manager.rs +++ b/src/provider/systemdmanager/manager.rs @@ -357,7 +357,7 @@ impl SystemdManager { pub fn is_running(&self, unit: &str) -> Result { let unit_node = self - .method_call("GetUnit", (&unit,)) + .method_call("LoadUnit", (&unit,)) .map(|r: (Path,)| r.0)?; let proxy = self From f3cf45da95f52a4fe7f69ecee578aaa57d037c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Liebau?= Date: Mon, 8 Mar 2021 10:27:56 +0100 Subject: [PATCH 2/2] Added comment. --- src/provider/systemdmanager/manager.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/provider/systemdmanager/manager.rs b/src/provider/systemdmanager/manager.rs index 22cc9ec..a31c487 100644 --- a/src/provider/systemdmanager/manager.rs +++ b/src/provider/systemdmanager/manager.rs @@ -356,6 +356,9 @@ impl SystemdManager { } pub fn is_running(&self, unit: &str) -> Result { + // We are using `LoadUnit` here, as GetUnit can fail seemingly at random, when the unit + // is not loaded due to systemd garbage collection. + // see https://github.com/systemd/systemd/issues/1929 for more information let unit_node = self .method_call("LoadUnit", (&unit,)) .map(|r: (Path,)| r.0)?;