From 7847c7e43259dccd8cc8587abd340248328cbd86 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 22 Apr 2020 14:05:41 -0400 Subject: [PATCH] Fix: Java agent: close session daemon socket on error When catching an error, close the socket used to communicate with the session daemon rather than leaking it, before retrying to connect. Also, when sleep is interrupted, there is no point in printing out the stack trace. Just retry connection immediately. Signed-off-by: Mathieu Desnoyers --- .../agent/client/LttngTcpSessiondClient.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/LttngTcpSessiondClient.java b/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/LttngTcpSessiondClient.java index d42bc9af..0e7a5c18 100644 --- a/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/LttngTcpSessiondClient.java +++ b/liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/LttngTcpSessiondClient.java @@ -133,11 +133,31 @@ public class LttngTcpSessiondClient implements Runnable { handleSessiondCmd(); } catch (UnknownHostException uhe) { uhe.printStackTrace(); + /* + * Terminate agent thread. + */ + close(); } catch (IOException ioe) { + /* + * I/O exception may have been triggered by a session daemon + * closing the socket. Close our own socket and + * retry connecting after a delay. + */ try { + if (this.sessiondSock != null) { + this.sessiondSock.close(); + } Thread.sleep(3000); } catch (InterruptedException e) { - e.printStackTrace(); + /* + * Retry immediately if sleep is interrupted. + */ + } catch (IOException closeioe) { + closeioe.printStackTrace(); + /* + * Terminate agent thread. + */ + close(); } } } -- 2.34.1