[ARVADOS] updated: cc94954f69ed2d26451bae6610b38de260d2252f

Git user git at public.curoverse.com
Thu Dec 22 01:34:34 EST 2016


Summary of changes:
 services/crunchstat/crunchstat.go | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

       via  cc94954f69ed2d26451bae6610b38de260d2252f (commit)
      from  fc390927833d14b6c439db8ea72d3d52b60a5e6d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit cc94954f69ed2d26451bae6610b38de260d2252f
Author: Tom Clegg <tom at curoverse.com>
Date:   Thu Dec 22 01:32:20 2016 -0500

    10585: Clean up defaults and error checks; release ticker when finished.

diff --git a/services/crunchstat/crunchstat.go b/services/crunchstat/crunchstat.go
index 510df3b..e71989a 100644
--- a/services/crunchstat/crunchstat.go
+++ b/services/crunchstat/crunchstat.go
@@ -16,8 +16,10 @@ import (
 
 const MaxLogLine = 1 << 14 // Child stderr lines >16KiB will be split
 
-var signalOnDeadPPID int
-var ppidCheckInterval = time.Second
+var (
+	signalOnDeadPPID  int = 15
+	ppidCheckInterval     = time.Second
+)
 
 func main() {
 	reporter := crunchstat.Reporter{
@@ -27,7 +29,7 @@ func main() {
 	flag.StringVar(&reporter.CgroupRoot, "cgroup-root", "", "Root of cgroup tree")
 	flag.StringVar(&reporter.CgroupParent, "cgroup-parent", "", "Name of container parent under cgroup")
 	flag.StringVar(&reporter.CIDFile, "cgroup-cid", "", "Path to container id file")
-	flag.IntVar(&signalOnDeadPPID, "signal-on-dead-ppid", 15, "Signal to send child if crunchstat's parent process disappears")
+	flag.IntVar(&signalOnDeadPPID, "signal-on-dead-ppid", signalOnDeadPPID, "Signal to send child if crunchstat's parent process disappears (0 to disable)")
 	flag.DurationVar(&ppidCheckInterval, "ppid-check-interval", ppidCheckInterval, "Time between checks for parent process disappearance")
 	pollMsec := flag.Int64("poll", 1000, "Reporting interval, in milliseconds")
 
@@ -35,6 +37,8 @@ func main() {
 
 	if reporter.CgroupRoot == "" {
 		reporter.Logger.Fatal("error: must provide -cgroup-root")
+	} else if signalOnDeadPPID < 0 {
+		reporter.Logger.Fatalf("-signal-on-dead-ppid=%d is invalid (use a positive signal number, or 0 to disable)", signalOnDeadPPID)
 	}
 	reporter.PollPeriod = time.Duration(*pollMsec) * time.Millisecond
 
@@ -84,7 +88,7 @@ func runCommand(argv []string, logger *log.Logger) error {
 
 	// Kill our child proc if our parent process disappears
 	if signalOnDeadPPID != 0 {
-		go sendSignalOnDeadPPID(signalOnDeadPPID, os.Getppid(), cmd, logger)
+		go sendSignalOnDeadPPID(ppidCheckInterval, signalOnDeadPPID, os.Getppid(), cmd, logger)
 	}
 
 	// Funnel stderr through our channel
@@ -107,8 +111,9 @@ func runCommand(argv []string, logger *log.Logger) error {
 	return cmd.Wait()
 }
 
-func sendSignalOnDeadPPID(signum, ppidOrig int, cmd *exec.Cmd, logger *log.Logger) {
-	for _ = range time.NewTicker(ppidCheckInterval).C {
+func sendSignalOnDeadPPID(intvl time.Duration, signum, ppidOrig int, cmd *exec.Cmd, logger *log.Logger) {
+	ticker := time.NewTicker(intvl)
+	for _ = range ticker.C {
 		ppid := os.Getppid()
 		if ppid == ppidOrig {
 			continue
@@ -120,9 +125,10 @@ func sendSignalOnDeadPPID(signum, ppidOrig int, cmd *exec.Cmd, logger *log.Logge
 		logger.Printf("notice: crunchstat ppid changed from %d to %d -- killing child pid %d with signal %d", ppidOrig, ppid, cmd.Process.Pid, signum)
 		err := cmd.Process.Signal(syscall.Signal(signum))
 		if err != nil {
-			logger.Printf("error: sending signal: %d", err)
+			logger.Printf("error: sending signal: %s", err)
 			continue
 		}
+		ticker.Stop()
 		break
 	}
 }

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list