mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #44287 from thaJeztah/use_SetRecoveryActions
cmd/dockerd: use x/sys Service.SetRecoveryActions(), and update restart delay
This commit is contained in:
commit
af10b35ba9
1 changed files with 7 additions and 29 deletions
|
@ -10,7 +10,6 @@ import (
|
|||
"os/exec"
|
||||
"path/filepath"
|
||||
"time"
|
||||
"unsafe"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/pflag"
|
||||
|
@ -187,35 +186,14 @@ func registerService() error {
|
|||
}
|
||||
defer s.Close()
|
||||
|
||||
// See http://stackoverflow.com/questions/35151052/how-do-i-configure-failure-actions-of-a-windows-service-written-in-go
|
||||
const (
|
||||
scActionNone = 0
|
||||
scActionRestart = 1
|
||||
scActionReboot = 2
|
||||
scActionRunCommand = 3
|
||||
|
||||
serviceConfigFailureActions = 2
|
||||
err = s.SetRecoveryActions(
|
||||
[]mgr.RecoveryAction{
|
||||
{Type: mgr.ServiceRestart, Delay: 15 * time.Second},
|
||||
{Type: mgr.ServiceRestart, Delay: 15 * time.Second},
|
||||
{Type: mgr.NoAction},
|
||||
},
|
||||
uint32(24*time.Hour/time.Second),
|
||||
)
|
||||
|
||||
type serviceFailureActions struct {
|
||||
ResetPeriod uint32
|
||||
RebootMsg *uint16
|
||||
Command *uint16
|
||||
ActionsCount uint32
|
||||
Actions uintptr
|
||||
}
|
||||
|
||||
type scAction struct {
|
||||
Type uint32
|
||||
Delay uint32
|
||||
}
|
||||
t := []scAction{
|
||||
{Type: scActionRestart, Delay: uint32(60 * time.Second / time.Millisecond)},
|
||||
{Type: scActionRestart, Delay: uint32(60 * time.Second / time.Millisecond)},
|
||||
{Type: scActionNone},
|
||||
}
|
||||
lpInfo := serviceFailureActions{ResetPeriod: uint32(24 * time.Hour / time.Second), ActionsCount: uint32(3), Actions: uintptr(unsafe.Pointer(&t[0]))}
|
||||
err = windows.ChangeServiceConfig2(s.Handle, serviceConfigFailureActions, (*byte)(unsafe.Pointer(&lpInfo)))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue