mirror of
https://github.com/dolthub/dolt.git
synced 2026-04-24 11:39:03 -05:00
Fixes for windows process signalling
This commit is contained in:
@@ -25,7 +25,6 @@ import (
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
@@ -99,10 +98,7 @@ func (u DoltUser) DoltCmd(args ...string) *exec.Cmd {
|
||||
cmd := exec.Command(DoltPath, args...)
|
||||
cmd.Dir = u.tmpdir
|
||||
cmd.Env = append(os.Environ(), "DOLT_ROOT_PATH="+u.tmpdir)
|
||||
// TODO: only on windows
|
||||
cmd.SysProcAttr = &syscall.SysProcAttr{
|
||||
CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP,
|
||||
}
|
||||
ApplyCmdAttributes(cmd)
|
||||
return cmd
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,10 @@ package sql_server_driver
|
||||
|
||||
import "syscall"
|
||||
|
||||
func ApplyCmdAttributes(cmd *exec.Cmd) {
|
||||
// nothing to do on unix / darwin
|
||||
}
|
||||
|
||||
func (s *SqlServer) GracefulStop() error {
|
||||
err := s.Cmd.Process.Signal(syscall.SIGTERM)
|
||||
if err != nil {
|
||||
|
||||
@@ -15,9 +15,20 @@
|
||||
package sql_server_driver
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"syscall"
|
||||
|
||||
"golang.org/x/sys/windows"
|
||||
)
|
||||
|
||||
func ApplyCmdAttributes(cmd *exec.Cmd) {
|
||||
// Creating a new process group for the process will allow GracefulStop to send the break signal to that process
|
||||
// without also killing the parent process
|
||||
cmd.SysProcAttr = &syscall.SysProcAttr{
|
||||
CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SqlServer) GracefulStop() error {
|
||||
err := windows.GenerateConsoleCtrlEvent(windows.CTRL_BREAK_EVENT, uint32(s.Cmd.Process.Pid))
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user