def sigusr_handler(_signo, _stack_frame): if _signo == signal.SIGUSR1: emit(jvm={"errors": 1.0}) elif _signo == signal.SIGUSR2: emit(jvm={"ooms": 1.0}) else: # Should not happen pass m2ee.stop() sys.exit(1) signal.signal(signal.SIGTERM, sigterm_handler) signal.signal(signal.SIGUSR1, sigusr_handler) signal.signal(signal.SIGUSR2, sigusr_handler) nginx.set_up_files(m2ee) telegraf.run() datadog.run(m2ee.config.get_runtime_version()) runtime.run(m2ee) set_up_instadeploy_if_deploy_password_is_set(m2ee) runtime.run_components(m2ee) nginx_process = nginx.run() loop_until_process_dies(m2ee) except Exception: ex = traceback.format_exc() logging.error("Starting app container failed: %s", ex) callback_url = os.environ.get("BUILD_STATUS_CALLBACK_URL") if callback_url: requests.put(callback_url, ex) raise
runtime.stop(m2ee) databroker_processes.stop() sys.exit(1) def sigchild_handler(_signo, _stack_frame): logging.debug("Handling SIGCHILD...") os.waitpid(-1, os.WNOHANG) signal.signal(signal.SIGCHLD, sigchild_handler) signal.signal(signal.SIGTERM, sigterm_handler) signal.signal(signal.SIGUSR1, sigusr_handler) signal.signal(signal.SIGUSR2, sigusr_handler) nginx.configure(m2ee) telegraf.run() datadog.run() metering.run() runtime.run(m2ee) def reload_callback(): m2ee.client.request("reload_model") def restart_callback(): global app_is_restarting if not m2ee: logging.warning("M2EE client not set") app_is_restarting = True if not runtime.shutdown(m2ee, 10): logging.warning("Could not kill runtime with M2EE")