Fix: cleanup JUL agent state on sessiond disconnect
[lttng-ust.git] / liblttng-ust-jul / org / lttng / ust / jul / LTTngTCPSessiondClient.java
index 594e735a25309dea2ee21348e85204f71285561c..5fdb04986c6c6f8ab2b6147ad83c43f1adddd12d 100644 (file)
@@ -133,8 +133,7 @@ public class LTTngTCPSessiondClient {
                                                 */
                                                if (handler.logLevelUseAll == 1) {
                                                        it.remove();
-                                                       event.logLevel.level = handler.logLevelAll;
-                                                       event.logLevel.type = handler.logLevelTypeAll;
+                                                       event.logLevels.addAll(handler.logLevelsAll);
                                                        modifiedEvents.add(event);
                                                }
 
@@ -144,8 +143,8 @@ public class LTTngTCPSessiondClient {
                                                 */
                                                if (event.name.equals("*")) {
                                                        enableCmd.name = event.name;
-                                                       enableCmd.lttngLogLevel = event.logLevel.level;
-                                                       enableCmd.lttngLogLevelType = event.logLevel.type;
+                                                       /* Tell the command NOT to add the loglevel. */
+                                                       enableCmd.lttngLogLevel = -1;
                                                        /*
                                                         * The return value is irrelevant since the * event is
                                                         * always kept in the set.
@@ -187,6 +186,17 @@ public class LTTngTCPSessiondClient {
                }
        }
 
+       /*
+        * Cleanup Agent state.
+        */
+       private void cleanupState() {
+               enabledEventSet.clear();
+               enabledLoggers.clear();
+               if (this.handler != null) {
+                       this.handler.clear();
+               }
+       }
+
        public void init(LTTngLogHandler handler) throws InterruptedException {
                this.handler = handler;
 
@@ -195,6 +205,9 @@ public class LTTngTCPSessiondClient {
                                break;
                        }
 
+                       /* Cleanup Agent state before trying to connect or reconnect. */
+                       cleanupState();
+
                        try {
 
                                /*
This page took 0.032449 seconds and 4 git commands to generate.