Introduce LTTNG_UST_APP_PATH environment variable
[lttng-ust.git] / src / lib / lttng-ust-java-agent / java / lttng-ust-agent-common / org / lttng / ust / agent / client / LttngTcpSessiondClient.java
index cb84087af6a42fc81aa434dd7ec1018098c3e567..95376044a0116e52a6eb9f26656d391ac30e9a62 100644 (file)
@@ -170,20 +170,32 @@ public class LttngTcpSessiondClient implements Runnable {
        }
 
        private void connectToSessiond() throws IOException {
-               int rootPort = getPortFromFile(ROOT_PORT_FILE);
-               int userPort = getPortFromFile(getHomePath() + USER_PORT_FILE);
+               int portToUse;
 
                /*
-                * Check for the edge case of both files existing but pointing to the
-                * same port. In this case, let the root client handle it.
+                * The environment variable LTTNG_UST_APP_PATH disables
+                * connection to per-user and root session daemons.
                 */
-               if ((rootPort != 0) && (rootPort == userPort) && (!isRoot)) {
-                       log("User and root config files both point to port " + rootPort +
-                                       ". Letting the root client handle it.");
-                       throw new IOException();
-               }
+               String lttngUstAppPath = getUstAppPath();
+
+               if (lttngUstAppPath != null) {
+                       portToUse = getPortFromFile(lttngUstAppPath + USER_PORT_FILE);
+               } else {
+                       int rootPort = getPortFromFile(ROOT_PORT_FILE);
+                       int userPort = getPortFromFile(getHomePath() + USER_PORT_FILE);
+
+                       /*
+                        * Check for the edge case of both files existing but pointing to the
+                        * same port. In this case, let the root client handle it.
+                        */
+                       if ((rootPort != 0) && (rootPort == userPort) && (!isRoot)) {
+                               log("User and root config files both point to port " + rootPort +
+                                               ". Letting the root client handle it.");
+                               throw new IOException();
+                       }
 
-               int portToUse = (isRoot ? rootPort : userPort);
+                       portToUse = (isRoot ? rootPort : userPort);
+               }
 
                if (portToUse == 0) {
                        /* No session daemon available. Stop and retry later. */
@@ -195,17 +207,20 @@ public class LttngTcpSessiondClient implements Runnable {
                this.outToSessiond = new DataOutputStream(sessiondSock.getOutputStream());
        }
 
+       private static String getUstAppPath() {
+               return System.getenv("LTTNG_UST_APP_PATH");
+       }
+
        private static String getHomePath() {
                /*
                 * The environment variable LTTNG_HOME overrides HOME if
-                * defined.
+                * set.
                 */
-               String homePath = System.getenv("LTTNG_HOME");
-
-               if (homePath == null) {
-                       homePath = System.getProperty("user.home");
+               String lttngHomePath = System.getenv("LTTNG_HOME");
+               if (lttngHomePath != null) {
+                       return lttngHomePath;
                }
-               return homePath;
+               return System.getProperty("user.home");
        }
 
        /**
This page took 0.023915 seconds and 4 git commands to generate.