From 35cbacdb34948e328f5d360f2fd76618dd678e2f 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