@@ -68,17 +68,19 @@ func (g *Manager) start() {
68
68
// Set the running state
69
69
g .setState (stateRunning )
70
70
if skip , _ := strconv .ParseBool (os .Getenv ("SKIP_MINWINSVC" )); skip {
71
+ log .Trace ("Skipping SVC check as SKIP_MINWINSVC is set" )
71
72
return
72
73
}
73
74
74
75
// Make SVC process
75
76
run := svc .Run
76
- isInteractive , err := svc .IsWindowsService ()
77
+ isWindowsService , err := svc .IsWindowsService ()
77
78
if err != nil {
78
- log .Error ("Unable to ascertain if running as an Interactive Session : %v" , err )
79
+ log .Error ("Unable to ascertain if running as an Windows Service : %v" , err )
79
80
return
80
81
}
81
- if isInteractive {
82
+ if ! isWindowsService {
83
+ log .Trace ("Not running a service ... using the debug SVC manager" )
82
84
run = debug .Run
83
85
}
84
86
go func () {
@@ -94,38 +96,49 @@ func (g *Manager) Execute(args []string, changes <-chan svc.ChangeRequest, statu
94
96
status <- svc.Status {State : svc .StartPending , WaitHint : uint32 (setting .StartupTimeout / time .Millisecond )}
95
97
}
96
98
99
+ log .Trace ("Awaiting server start-up" )
97
100
// Now need to wait for everything to start...
98
101
if ! g .awaitServer (setting .StartupTimeout ) {
102
+ log .Trace ("... start-up failed ... Stopped" )
99
103
return false , 1
100
104
}
101
105
106
+ log .Trace ("Sending Running state to SVC" )
107
+
102
108
// We need to implement some way of svc.AcceptParamChange/svc.ParamChange
103
109
status <- svc.Status {
104
110
State : svc .Running ,
105
111
Accepts : svc .AcceptStop | svc .AcceptShutdown | acceptHammerCode ,
106
112
}
107
113
114
+ log .Trace ("Started" )
115
+
108
116
waitTime := 30 * time .Second
109
117
110
118
loop:
111
119
for {
112
120
select {
113
121
case <- g .ctx .Done ():
122
+ log .Trace ("Shutting down" )
114
123
g .DoGracefulShutdown ()
115
124
waitTime += setting .GracefulHammerTime
116
125
break loop
117
126
case <- g .shutdownRequested :
127
+ log .Trace ("Shutting down" )
118
128
waitTime += setting .GracefulHammerTime
119
129
break loop
120
130
case change := <- changes :
121
131
switch change .Cmd {
122
132
case svc .Interrogate :
133
+ log .Trace ("SVC sent interrogate" )
123
134
status <- change .CurrentStatus
124
135
case svc .Stop , svc .Shutdown :
136
+ log .Trace ("SVC requested shutdown - shutting down" )
125
137
g .DoGracefulShutdown ()
126
138
waitTime += setting .GracefulHammerTime
127
139
break loop
128
140
case hammerCode :
141
+ log .Trace ("SVC requested hammer - shutting down and hammering immediately" )
129
142
g .DoGracefulShutdown ()
130
143
g .DoImmediateHammer ()
131
144
break loop
@@ -134,6 +147,8 @@ loop:
134
147
}
135
148
}
136
149
}
150
+
151
+ log .Trace ("Sending StopPending state to SVC" )
137
152
status <- svc.Status {
138
153
State : svc .StopPending ,
139
154
WaitHint : uint32 (waitTime / time .Millisecond ),
@@ -145,8 +160,10 @@ hammerLoop:
145
160
case change := <- changes :
146
161
switch change .Cmd {
147
162
case svc .Interrogate :
163
+ log .Trace ("SVC sent interrogate" )
148
164
status <- change .CurrentStatus
149
165
case svc .Stop , svc .Shutdown , hammerCmd :
166
+ log .Trace ("SVC requested hammer - hammering immediately" )
150
167
g .DoImmediateHammer ()
151
168
break hammerLoop
152
169
default :
@@ -156,6 +173,8 @@ hammerLoop:
156
173
break hammerLoop
157
174
}
158
175
}
176
+
177
+ log .Trace ("Stopped" )
159
178
return false , 0
160
179
}
161
180
0 commit comments