diff --git a/.changelog/14000.txt b/.changelog/14000.txt new file mode 100644 index 000000000000..3db5ca3b6482 --- /dev/null +++ b/.changelog/14000.txt @@ -0,0 +1,3 @@ +```release-note:bug +qemu: restore the monitor socket path when restoring a QEMU task. +``` diff --git a/drivers/qemu/driver.go b/drivers/qemu/driver.go index 23c127ee5457..b6fe6041b983 100644 --- a/drivers/qemu/driver.go +++ b/drivers/qemu/driver.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "net" + "os" "os/exec" "path/filepath" "regexp" @@ -304,9 +305,19 @@ func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error { return fmt.Errorf("failed to reattach to executor: %v", err) } + // Try to restore monitor socket path. + taskDir := filepath.Join(handle.Config.AllocDir, handle.Config.Name) + monitorPath := filepath.Join(taskDir, qemuMonitorSocketName) + if _, err := os.Stat(monitorPath); err == nil { + d.logger.Debug("found existing monitor socket", "monitor", monitorPath) + } else { + monitorPath = "" + } + h := &taskHandle{ exec: execImpl, pid: taskState.Pid, + monitorPath: monitorPath, pluginClient: pluginClient, taskConfig: taskState.TaskConfig, procState: drivers.TaskStateRunning,