Fix: Python agent: do not register twice to same port
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Sat, 5 Sep 2015 17:38:01 +0000 (13:38 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 9 Sep 2015 21:55:24 +0000 (17:55 -0400)
It is possible that one of the session daemons left its agent.port
file on the file system, for example when killed with SIGKILL. It
is also common that both those session daemons use the same port for
listening to agent connections. In this case, if one session daemon
is running, but two agent.port files exist, the Python agent would
connect its two threads to the same session daemon, leading to
everything done twice: list shows events twice, tracing records
events twice, etc.

This patch ensures that if two agent.port files are found and have
the same content, only one thread is used.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust-python-agent/lttngust/agent.py

index 8ec26cde0514283fe068895134c4ac2360686a90..84cfd838b70ee812d51fa16037b95805c1e5d672 100644 (file)
@@ -317,6 +317,12 @@ def _init_threads():
     dbg._pdebug('system session daemon port: {}'.format(sys_port))
     dbg._pdebug('user session daemon port: {}'.format(user_port))
 
+    if sys_port == user_port and sys_port is not None:
+        # The two session daemon ports are the same. This is not normal.
+        # Connect to only one.
+        dbg._pdebug('both user and system session daemon have the same port')
+        sys_port = None
+
     try:
         if sys_port is not None:
             dbg._pdebug('creating system client thread')
This page took 0.025398 seconds and 4 git commands to generate.