X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d7db1f0877015228835fac67d4ad08789d39c520..37d9f94b06ff367a3514b58ec6f0e4d4d0116030:/services/crunchstat/crunchstat.go diff --git a/services/crunchstat/crunchstat.go b/services/crunchstat/crunchstat.go index ad433bb3b5..6383eae545 100644 --- a/services/crunchstat/crunchstat.go +++ b/services/crunchstat/crunchstat.go @@ -16,7 +16,8 @@ import ( "syscall" "time" - "git.curoverse.com/arvados.git/lib/crunchstat" + "git.arvados.org/arvados.git/lib/cmd" + "git.arvados.org/arvados.git/lib/crunchstat" ) const MaxLogLine = 1 << 14 // Child stderr lines >16KiB will be split @@ -32,20 +33,23 @@ func main() { Logger: log.New(os.Stderr, "crunchstat: ", 0), } - 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", 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") - getVersion := flag.Bool("version", false, "Print version information and exit.") - - flag.Parse() - - // Print version information if requested - if *getVersion { + flags := flag.NewFlagSet(os.Args[0], flag.ExitOnError) + flags.StringVar(&reporter.CgroupRoot, "cgroup-root", "", "Root of cgroup tree") + flags.StringVar(&reporter.CgroupParent, "cgroup-parent", "", "Name of container parent under cgroup") + flags.StringVar(&reporter.CIDFile, "cgroup-cid", "", "Path to container id file") + flags.IntVar(&signalOnDeadPPID, "signal-on-dead-ppid", signalOnDeadPPID, "Signal to send child if crunchstat's parent process disappears (0 to disable)") + flags.DurationVar(&ppidCheckInterval, "ppid-check-interval", ppidCheckInterval, "Time between checks for parent process disappearance") + pollMsec := flags.Int64("poll", 1000, "Reporting interval, in milliseconds") + getVersion := flags.Bool("version", false, "Print version information and exit.") + + if ok, code := cmd.ParseFlags(flags, os.Args[0], os.Args[1:], "program [args ...]", os.Stderr); !ok { + os.Exit(code) + } else if *getVersion { fmt.Printf("crunchstat %s\n", version) return + } else if flags.NArg() == 0 { + fmt.Fprintf(os.Stderr, "missing required argument: program (try -help)\n") + os.Exit(2) } reporter.Logger.Printf("crunchstat %s started", version) @@ -58,7 +62,7 @@ func main() { reporter.PollPeriod = time.Duration(*pollMsec) * time.Millisecond reporter.Start() - err := runCommand(flag.Args(), reporter.Logger) + err := runCommand(flags.Args(), reporter.Logger) reporter.Stop() if err, ok := err.(*exec.ExitError); ok { @@ -107,7 +111,7 @@ func runCommand(argv []string, logger *log.Logger) error { } // Funnel stderr through our channel - stderr_pipe, err := cmd.StderrPipe() + stderrPipe, err := cmd.StderrPipe() if err != nil { logger.Fatalln("error in StderrPipe:", err) } @@ -121,7 +125,7 @@ func runCommand(argv []string, logger *log.Logger) error { os.Stdin.Close() os.Stdout.Close() - copyPipeToChildLog(stderr_pipe, log.New(os.Stderr, "", 0)) + copyPipeToChildLog(stderrPipe, log.New(os.Stderr, "", 0)) return cmd.Wait() }