+func (wp *Pool) shutdownIfBroken(wkr *worker, dur time.Duration) {
+ if wkr.state == StateHold {
+ return
+ }
+ label, threshold := "", wp.timeoutProbe
+ if wkr.state == StateBooting {
+ label, threshold = "new ", wp.timeoutBooting
+ }
+ if dur < threshold {
+ return
+ }
+ wp.logger.WithFields(logrus.Fields{
+ "Instance": wkr.instance,
+ "Duration": dur,
+ "Since": wkr.probed,
+ "State": wkr.state,
+ }).Warnf("%sinstance unresponsive, shutting down", label)
+ wp.shutdown(wkr, wp.logger)
+}
+
+// caller must have lock.
+func (wp *Pool) shutdownIfIdle(wkr *worker) bool {