feat: Improve zinit service manager fallback
- Try multiple socket paths for zinit before falling back to systemd. - This improves the robustness of the service manager selection, handling cases where the zinit socket path might vary.
This commit is contained in:
parent
352e846410
commit
8cb9696421
@ -122,22 +122,26 @@ pub fn create_service_manager() -> Result<Box<dyn ServiceManager>, ServiceManage
|
||||
}
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
// Try zinit first (preferred), fall back to systemd if it fails
|
||||
let socket_path = "/tmp/zinit.sock";
|
||||
match ZinitServiceManager::new(socket_path) {
|
||||
Ok(zinit_manager) => {
|
||||
log::debug!("Using zinit service manager");
|
||||
Ok(Box::new(zinit_manager))
|
||||
}
|
||||
Err(zinit_error) => {
|
||||
log::warn!(
|
||||
"Zinit service manager failed, falling back to systemd: {}",
|
||||
zinit_error
|
||||
);
|
||||
// Fallback to systemd
|
||||
Ok(Box::new(SystemdServiceManager::new()))
|
||||
// Try zinit first (preferred), with multiple socket paths, fall back to systemd if all fail
|
||||
let socket_paths = ["/run/zinit.sock", "/tmp/zinit.sock", "/var/run/zinit.sock"];
|
||||
|
||||
for socket_path in &socket_paths {
|
||||
log::debug!("Trying zinit socket: {}", socket_path);
|
||||
match ZinitServiceManager::new(socket_path) {
|
||||
Ok(zinit_manager) => {
|
||||
log::debug!("Using zinit service manager with socket: {}", socket_path);
|
||||
return Ok(Box::new(zinit_manager));
|
||||
}
|
||||
Err(zinit_error) => {
|
||||
log::debug!("Zinit socket {} failed: {}", socket_path, zinit_error);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log::warn!("All zinit sockets failed, falling back to systemd");
|
||||
// Fallback to systemd if all zinit attempts fail
|
||||
Ok(Box::new(SystemdServiceManager::new()))
|
||||
}
|
||||
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user