From 7dbf8da8cbc3b086d96ae2df1a32a17b2651cc6e Mon Sep 17 00:00:00 2001 From: canewsin Date: Wed, 22 Dec 2021 15:09:52 +0530 Subject: [PATCH] Parallel Shutdown of file_server and ui_server Make Parallel Shutdown of file_server and ui_server at Shutdown of ZeroNet --- src/Debug/DebugHook.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/Debug/DebugHook.py b/src/Debug/DebugHook.py index d100a3b8..772d309c 100644 --- a/src/Debug/DebugHook.py +++ b/src/Debug/DebugHook.py @@ -10,19 +10,31 @@ from Config import config from . import Debug last_error = None +thread_shutdown = None + +def shutdownThread(): + import main + try: + if "file_server" in dir(main): + thread = gevent.spawn(main.file_server.stop) + thread.join(timeout=60) + if "ui_server" in dir(main): + thread = gevent.spawn(main.ui_server.stop) + thread.join(timeout=10) + except Exception as err: + print("Error in shutdown thread: %s" % err) + sys.exit(0) + else: + sys.exit(0) def shutdown(reason="Unknown"): + global thread_shutdown logging.info("Shutting down (reason: %s)..." % reason) - import main - if "file_server" in dir(main): - try: - gevent.spawn(main.file_server.stop) - if "ui_server" in dir(main): - gevent.spawn(main.ui_server.stop) - except Exception as err: - print("Proper shutdown error: %s" % err) - sys.exit(0) - else: + try: + if not thread_shutdown: + thread_shutdown = gevent.spawn(shutdownThread) + except Exception as err: + print("Proper shutdown error: %s" % err) sys.exit(0) # Store last error, ignore notify, allow manual error logging