diff --git a/src/provider/systemdmanager/manager.rs b/src/provider/systemdmanager/manager.rs index 5e0ca4a..a31c487 100644 --- a/src/provider/systemdmanager/manager.rs +++ b/src/provider/systemdmanager/manager.rs @@ -356,8 +356,11 @@ 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("GetUnit", (&unit,)) + .method_call("LoadUnit", (&unit,)) .map(|r: (Path,)| r.0)?; let proxy = self