Chromium Code Reviews| Index: scripts/slave/recipe_modules/goma/resources/cloudtail_utils.py |
| diff --git a/scripts/slave/recipe_modules/goma/resources/cloudtail_utils.py b/scripts/slave/recipe_modules/goma/resources/cloudtail_utils.py |
| index ea3c619976c857f27e66c2cefcae7b6e454e78dc..79f20dc1edd7c1ee81c9d20086e9b363e61c5bb5 100644 |
| --- a/scripts/slave/recipe_modules/goma/resources/cloudtail_utils.py |
| +++ b/scripts/slave/recipe_modules/goma/resources/cloudtail_utils.py |
| @@ -20,13 +20,9 @@ def start_cloudtail(args): |
| 'tail', |
| '--log-id', 'goma_compiler_proxy', |
| '--path', |
| - goma_utils.GetLatestGomaCompilerProxyInfo()], |
| - stdout=open(os.devnull, 'w'), |
| - stderr=open(os.devnull, 'w'), |
| - close_fds=True) |
| - |
| - sys.stdout.write(str(proc.pid)) |
| - |
| + goma_utils.GetLatestGomaCompilerProxyInfo()]) |
| + with open(args.pid_file, 'w') as f: |
| + f.write(str(proc.pid)) |
| def main(): |
| parser = argparse.ArgumentParser( |
| @@ -39,25 +35,24 @@ def main(): |
| parser_start.set_defaults(command='start') |
| parser_start.add_argument('--cloudtail-path', required=True, |
| help='path of cloudtail binary') |
| + parser_start.add_argument('--pid-file', required=True, |
| + help='file written pid') |
| parser_stop = subparsers.add_parser('stop', |
| help='subcommand to stop cloudtail') |
| parser_stop.set_defaults(command='stop') |
| - parser_stop.add_argument('--killed-pid', type=int, required=True, |
| - help='pid that is killed.') |
| + parser_stop.add_argument('--killed-pid-file', required=True, |
| + help='file written the pid to be killed.') |
| args = parser.parse_args() |
| if args.command == 'start': |
| start_cloudtail(args) |
| elif args.command == 'stop': |
| - try: |
| - os.kill(args.killed_pid, signal.SIGKILL) |
| - except OSError as e: |
| - if e.errno != errno.ESRCH: |
| - # TODO(tikuta): Resolve https://crbug.com/639910. |
| - raise |
| - |
| + with open(args.killed_pid_file) as f: |
| + # cloudtail flushes log and terminates |
| + # within 5 seconds when it recieves SIGINT. |
| + os.kill(int(f.read()), signal.SIGINT) |
|
Vadim Sh.
2016/09/30 19:04:12
There can potentially be file locking problems on
|
| if '__main__' == __name__: |
| sys.exit(main()) |