qemu: restore monitor socket path (#14000)

When a QEMU task is recovered the monitor socket path was not being
restored into the task handler, so the `graceful_shutdown` configuration
was effectively ignored if the client restarted.
This commit is contained in:
Luiz Aoqui 2022-08-04 10:44:08 -04:00 committed by GitHub
parent 8f05a55def
commit 2c0fea64e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 0 deletions

3
.changelog/14000.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
qemu: restore the monitor socket path when restoring a QEMU task.
```

View File

@ -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,