Add support for LTTNG_UST_HOME
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Tue, 28 Sep 2021 21:47:31 +0000 (17:47 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 19 Oct 2023 17:25:15 +0000 (13:25 -0400)
Namespacing the LTTNG_HOME env variable facilitates the work carried to
have a way to trace the tracer (lttng-sessiond). This also fits with
the work done lately to namespace lttng-ust.

The LTTNG_HOME environment variable is used by lttng-sessiond to setup
the whole tracing environment for the application to be traced. When
lttng-ust is loaded by the lttng-sessiond to be traced, the fact that it
reuse the `LTTNG_HOME` set for the lttng-sessiond prevent us from
specifying an external lttng-sessiond home.

Albeit it could be possible for the lttng-sessiond to "trace" itself
(self tracing), it make more sense, in our testing environment, to have
a supplementary lttng-sessiond handling the tracing of the
lttng-sessiond under testing.

Note that some work will be carried to limit the use of LTTNG_HOME to
setup the tracing environment by lttng-sessiond and liblttng-ctl APIs
but it will be a long effort. Providing `LTTNG_UST_HOME` allows us to
start dogfooding today.

`LTTNG_HOME` is still used as a fallback to `LTTNG_UST_HOME` to preserve
backward compatibility.

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I6aed21fd70d1b79b6768d237f59cc80612938d65

README.md
doc/man/lttng-ust.3.txt
src/common/getenv.c
src/lib/lttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/LttngTcpSessiondClient.java
src/lib/lttng-ust/lttng-ust-comm.c
src/python-lttngust/lttngust/agent.py

index 286703baa2c4e90501f8d33b1ed825acd230fbf8..d53f8bb5a6bbc195be5e2cd9b0fcb9bd652f4eb1 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+Useless change
 LTTng-UST
 =========
 
index 0924a4de2dc7d65c411951293598ab0baafd22e6..76b5c37aa60a9cb6e7a1e8e26a39e97abc4ea436 100644 (file)
@@ -1479,15 +1479,18 @@ int main(int argc, char* argv[])
 
 ENVIRONMENT VARIABLES
 ---------------------
-`LTTNG_HOME`::
+`LTTNG_UST_HOME`::
     Alternative user's home directory. This variable is useful when the
     user running the instrumented application has a non-writable home
     directory.
 +
 Unix sockets used for the communication between `liblttng-ust` and the
 LTTng session and consumer daemons (part of the LTTng-tools project)
-are located in a specific directory under `$LTTNG_HOME` (or `$HOME` if
-`$LTTNG_HOME` is not set).
+are located in a specific directory under `$LTTNG_UST_HOME` (or `$HOME` if
+`$LTTNG_UST_HOME` is not set).
+
+NOTE: `$LTTNG_HOME` is also supported as a fallback of `$LTTNG_UST_HOME` for
+backward compatibility reason.
 
 `LTTNG_UST_ALLOW_BLOCKING`::
     If set, allow the application to retry event tracing when there's
index 55e6ad7cc5a069130ffb2172890752ef3e0d22c6..1b5717c778014c8cff3b3226f64ed73366d9040a 100644 (file)
@@ -49,6 +49,7 @@ static struct lttng_env lttng_env[] = {
        { "LTTNG_UST_ALLOW_BLOCKING", LTTNG_ENV_SECURE, NULL, },
        { "HOME", LTTNG_ENV_SECURE, NULL, },
        { "LTTNG_HOME", LTTNG_ENV_SECURE, NULL, },
+       { "LTTNG_UST_HOME", LTTNG_ENV_SECURE, NULL, },
 };
 
 static
index cb84087af6a42fc81aa434dd7ec1018098c3e567..2c44a0df98f5455c3eb15cc7c2f5a3bc05e85f1a 100644 (file)
@@ -197,15 +197,29 @@ public class LttngTcpSessiondClient implements Runnable {
 
        private static String getHomePath() {
                /*
+                * The environment variable LTTNG_UST_HOME overrides LTTNG_HOME
+                * if present.
                 * The environment variable LTTNG_HOME overrides HOME if
                 * defined.
                 */
-               String homePath = System.getenv("LTTNG_HOME");
+               String lttngUstHomePath = System.getenv("LTTNG_UST_HOME");
+               String lttngHomePath = System.getenv("LTTNG_HOME");
+
+               if (lttngUstHomePath != null) {
+                       /*
+                        * LTTNG_UST_HOME has priority over LTTNG_HOME and user
+                        * home directory.
+                        */
+                       return lttngUstHomePath;
+               }
 
-               if (homePath == null) {
-                       homePath = System.getProperty("user.home");
+               if (lttngHomePath != null) {
+                       /* LTTNG_HOME has priority over user home directory. */
+                       return lttngHomePath;
                }
-               return homePath;
+
+               /* Default to the user home directory. */
+               return System.getProperty("user.home");
        }
 
        /**
index e57caa12f7e23c73765b990fa804cf76685ba7f6..e206456f0d98060ea20c2310c4f993c1d6494ece 100644 (file)
@@ -370,16 +370,26 @@ static char *get_map_shm(struct sock_info *sock_info);
 /*
  * Returns the HOME directory path. Caller MUST NOT free(3) the returned
  * pointer.
+ * The following env are checked in order of priority:
+ *  1 - LTTNG_UST_HOME
+ *  2 - LTTNG_HOME
+ *  3 - HOME
  */
 static
 const char *get_lttng_home_dir(void)
 {
        const char *val;
 
+       val = (const char *) lttng_ust_getenv("LTTNG_UST_HOME");
+       if (val != NULL) {
+               return val;
+       }
+
        val = (const char *) lttng_ust_getenv("LTTNG_HOME");
        if (val != NULL) {
                return val;
        }
+
        return (const char *) lttng_ust_getenv("HOME");
 }
 
index 66dbbd5e2b5efc00f5cc8b263f2f1aeffc29f94f..b99293424aac705728c13c47716b5b9f516951ab 100644 (file)
@@ -268,8 +268,10 @@ def _get_port_from_file(path):
 
 
 def _get_user_home_path():
-    # $LTTNG_HOME overrides $HOME if it exists
-    return os.getenv('LTTNG_HOME', os.path.expanduser('~'))
+    # $LTTNG_UST_HOME overrides $LTTNG_HOME if it exist.
+    # In turn, $LTTNG_HOME overrides $HOME if it exists
+    return os.getenv('LTTNG_UST_HOME', os.getenv('LTTNG_HOME',
+        os.path.expanduser('~')))
 
 
 _initialized = False
This page took 0.028917 seconds and 4 git commands to generate.