summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/graceful/manager_windows.go25
1 files changed, 22 insertions, 3 deletions
diff --git a/modules/graceful/manager_windows.go b/modules/graceful/manager_windows.go
index 1ebdaa1970..b0e0d1ce38 100644
--- a/modules/graceful/manager_windows.go
+++ b/modules/graceful/manager_windows.go
@@ -68,17 +68,19 @@ func (g *Manager) start() {
// Set the running state
g.setState(stateRunning)
if skip, _ := strconv.ParseBool(os.Getenv("SKIP_MINWINSVC")); skip {
+ log.Trace("Skipping SVC check as SKIP_MINWINSVC is set")
return
}
// Make SVC process
run := svc.Run
- isInteractive, err := svc.IsWindowsService()
+ isWindowsService, err := svc.IsWindowsService()
if err != nil {
- log.Error("Unable to ascertain if running as an Interactive Session: %v", err)
+ log.Error("Unable to ascertain if running as an Windows Service: %v", err)
return
}
- if isInteractive {
+ if !isWindowsService {
+ log.Trace("Not running a service ... using the debug SVC manager")
run = debug.Run
}
go func() {
@@ -94,38 +96,49 @@ func (g *Manager) Execute(args []string, changes <-chan svc.ChangeRequest, statu
status <- svc.Status{State: svc.StartPending, WaitHint: uint32(setting.StartupTimeout / time.Millisecond)}
}
+ log.Trace("Awaiting server start-up")
// Now need to wait for everything to start...
if !g.awaitServer(setting.StartupTimeout) {
+ log.Trace("... start-up failed ... Stopped")
return false, 1
}
+ log.Trace("Sending Running state to SVC")
+
// We need to implement some way of svc.AcceptParamChange/svc.ParamChange
status <- svc.Status{
State: svc.Running,
Accepts: svc.AcceptStop | svc.AcceptShutdown | acceptHammerCode,
}
+ log.Trace("Started")
+
waitTime := 30 * time.Second
loop:
for {
select {
case <-g.ctx.Done():
+ log.Trace("Shutting down")
g.DoGracefulShutdown()
waitTime += setting.GracefulHammerTime
break loop
case <-g.shutdownRequested:
+ log.Trace("Shutting down")
waitTime += setting.GracefulHammerTime
break loop
case change := <-changes:
switch change.Cmd {
case svc.Interrogate:
+ log.Trace("SVC sent interrogate")
status <- change.CurrentStatus
case svc.Stop, svc.Shutdown:
+ log.Trace("SVC requested shutdown - shutting down")
g.DoGracefulShutdown()
waitTime += setting.GracefulHammerTime
break loop
case hammerCode:
+ log.Trace("SVC requested hammer - shutting down and hammering immediately")
g.DoGracefulShutdown()
g.DoImmediateHammer()
break loop
@@ -134,6 +147,8 @@ loop:
}
}
}
+
+ log.Trace("Sending StopPending state to SVC")
status <- svc.Status{
State: svc.StopPending,
WaitHint: uint32(waitTime / time.Millisecond),
@@ -145,8 +160,10 @@ hammerLoop:
case change := <-changes:
switch change.Cmd {
case svc.Interrogate:
+ log.Trace("SVC sent interrogate")
status <- change.CurrentStatus
case svc.Stop, svc.Shutdown, hammerCmd:
+ log.Trace("SVC requested hammer - hammering immediately")
g.DoImmediateHammer()
break hammerLoop
default:
@@ -156,6 +173,8 @@ hammerLoop:
break hammerLoop
}
}
+
+ log.Trace("Stopped")
return false, 0
}