From 016d47aa91c0e47688c50425736069ef760b37d1 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Thu, 8 Mar 2018 17:10:46 +0545 Subject: [PATCH] Log and track PIDs everywhere for Ansible. --- ansible_mitogen/logging.py | 3 ++- mitogen/unix.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ansible_mitogen/logging.py b/ansible_mitogen/logging.py index 66cf12ab..422334da 100644 --- a/ansible_mitogen/logging.py +++ b/ansible_mitogen/logging.py @@ -45,7 +45,8 @@ class Handler(logging.Handler): self.method = method def emit(self, record): - self.method(self.format(record)) + msg = self.format(record) + self.method('[pid %d] %s' % (os.getpid(), msg)) def find_display(): diff --git a/mitogen/unix.py b/mitogen/unix.py index d778f453..f3d5f453 100644 --- a/mitogen/unix.py +++ b/mitogen/unix.py @@ -78,13 +78,17 @@ class Listener(mitogen.core.BasicStream): def on_receive(self, broker): sock, _ = self._sock.accept() + pid, = struct.unpack('>L', sock.recv(4)) + context_id = self._router.id_allocator.allocate() context = mitogen.master.Context(self._router, context_id) stream = mitogen.core.Stream(self._router, context_id) stream.accept(sock.fileno(), sock.fileno()) + stream.name = 'unix_client.%d' % (pid,) stream.auth_id = mitogen.context_id self._router.register(context, stream) - sock.send(struct.pack('>LL', context_id, mitogen.context_id)) + sock.send(struct.pack('>LLL', context_id, mitogen.context_id, + os.getpid())) sock.close() @@ -92,7 +96,8 @@ def connect(path): LOG.debug('unix.connect(path=%r)', path) sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock.connect(path) - mitogen.context_id, remote_id = struct.unpack('>LL', sock.recv(8)) + sock.send(struct.pack('>L', os.getpid())) + mitogen.context_id, remote_id, pid = struct.unpack('>LLL', sock.recv(12)) mitogen.parent_id = remote_id mitogen.parent_ids = [remote_id] @@ -102,6 +107,7 @@ def connect(path): router = mitogen.master.Router() stream = mitogen.core.Stream(router, remote_id) stream.accept(sock.fileno(), sock.fileno()) + stream.name = 'unix_listener.%d' % (pid,) context = mitogen.master.Context(router, remote_id) router.register(context, stream)