core: fix profiling

* SIGTERM safety net prevents profiler from writing results, so disable
  it when profiling is active.
* fix warning corrupting stream when profiling=True
wip-fakessh-exit-status
David Wilson 7 years ago
parent b158259c86
commit a0d9d34231

@ -43,8 +43,13 @@ import sys
import threading import threading
import time import time
import traceback import traceback
import warnings
import zlib import zlib
# TODO: usage of 'import' after setting __name__, but before fixing up
# sys.modules generates a warning. This happens when profiling = True.
warnings.filterwarnings('ignore',
"Parent module 'mitogen' not found while handling absolute import")
LOG = logging.getLogger('mitogen') LOG = logging.getLogger('mitogen')
IOLOG = logging.getLogger('mitogen.io') IOLOG = logging.getLogger('mitogen.io')
@ -1129,6 +1134,7 @@ class ExternalContext(object):
self.channel.close() self.channel.close()
def _on_broker_exit(self): def _on_broker_exit(self):
if not self.profiling:
os.kill(os.getpid(), signal.SIGTERM) os.kill(os.getpid(), signal.SIGTERM)
def _on_shutdown_msg(self, msg): def _on_shutdown_msg(self, msg):
@ -1139,6 +1145,7 @@ class ExternalContext(object):
self.broker.shutdown() self.broker.shutdown()
def _setup_master(self, profiling, parent_id, context_id, in_fd, out_fd): def _setup_master(self, profiling, parent_id, context_id, in_fd, out_fd):
self.profiling = profiling
if profiling: if profiling:
enable_profiling() enable_profiling()
self.broker = Broker() self.broker = Broker()

Loading…
Cancel
Save