From c2e80ed6fff5452ddd9491e37b377477ce9d1de9 Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Wed, 16 Mar 2016 23:35:33 +0000 Subject: [PATCH] make whole process die if main worker thread dies --- bin/brozzler-worker | 15 ++++++++++----- brozzler/worker.py | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/bin/brozzler-worker b/bin/brozzler-worker index c677bc5..b6c3506 100755 --- a/bin/brozzler-worker +++ b/bin/brozzler-worker @@ -52,7 +52,8 @@ def dump_state(signum, frame): stack = traceback.format_stack(sys._current_frames()[th.ident]) state_strs.append("".join(stack)) - logging.warn("dumping state (caught signal {})\n{}".format(signum, "\n".join(state_strs))) + logging.warn("dumping state (caught signal {})\n{}".format( + signum, "\n".join(state_strs))) signal.signal(signal.SIGQUIT, dump_state) signal.signal(signal.SIGTERM, sigterm) @@ -61,16 +62,20 @@ signal.signal(signal.SIGINT, sigint) r = rethinkstuff.Rethinker(args.rethinkdb_servers.split(","), args.rethinkdb_db) frontier = brozzler.RethinkDbFrontier(r) service_registry = rethinkstuff.ServiceRegistry(r) -worker = brozzler.worker.BrozzlerWorker(frontier, service_registry, max_browsers=int(args.max_browsers), chrome_exe=args.chrome_exe) +worker = brozzler.worker.BrozzlerWorker( + frontier, service_registry, max_browsers=int(args.max_browsers), + chrome_exe=args.chrome_exe) -worker.start() +worker_thread = worker.start() try: - while True: + while worker_thread.is_alive(): time.sleep(0.5) + logging.critical("worker thread has died, shutting down") except brozzler.ShutdownRequested as e: + pass +finally: worker.shutdown_now() - for th in threading.enumerate(): if th != threading.current_thread(): th.join() diff --git a/brozzler/worker.py b/brozzler/worker.py index 2ef0f4a..24aa8ad 100644 --- a/brozzler/worker.py +++ b/brozzler/worker.py @@ -221,6 +221,7 @@ class BrozzlerWorker: def start(self): th = threading.Thread(target=self.run, name="BrozzlerWorker") th.start() + return th def shutdown_now(self): self.logger.info("brozzler worker shutting down")