Generate a UUID on lttng-sessiond launch
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 12 Dec 2018 20:39:53 +0000 (15:39 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 18 Jul 2019 19:58:24 +0000 (15:58 -0400)
This commit adds a global sessiond_uuid which can be used to
uniquely identify a session daemon from a relay daemon's
perspective even when it communicates with multiple consumers.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/globals.c
src/bin/lttng-sessiond/lttng-sessiond.h
src/bin/lttng-sessiond/main.c
src/common/compat/uuid.c
src/common/compat/uuid.h

index efe80baaf2fef86a76b8ec66366d67f997c08e0e..a8536afa36a90d63146ccf1c3cb3e49265815097 100644 (file)
@@ -18,6 +18,9 @@
  */
 
 #include "lttng-sessiond.h"
+#include <common/compat/uuid.h>
+
+lttng_uuid sessiond_uuid;
 
 int ust_consumerd64_fd = -1;
 int ust_consumerd32_fd = -1;
@@ -70,3 +73,11 @@ struct consumer_data ustconsumer32_data = {
 
 enum consumerd_state ust_consumerd_state;
 enum consumerd_state kernel_consumerd_state;
+
+static void __attribute__((constructor)) init_sessiond_uuid(void)
+{
+       if (lttng_uuid_generate(sessiond_uuid)) {
+               ERR("Failed to generate a session daemon UUID");
+               abort();
+       }
+}
index d321fceda1de99b870636f6d7b42dc7c57fd19e3..5b6761f55c216801b4327e20347237bb3963c451 100644 (file)
@@ -25,6 +25,7 @@
 #include <common/sessiond-comm/sessiond-comm.h>
 #include <common/compat/poll.h>
 #include <common/compat/socket.h>
+#include <common/compat/uuid.h>
 
 #include "session.h"
 #include "ust-app.h"
@@ -41,6 +42,9 @@ enum consumerd_state {
        CONSUMER_ERROR   = 3,
 };
 
+/* Unique identifier of a session daemon instance. */
+extern lttng_uuid sessiond_uuid;
+
 /*
  * This consumer daemon state is used to validate if a client command will be
  * able to reach the consumer. If not, the client is informed. For instance,
index 57324820bd6aa2c3e09da7f3d0106c8f80c5b89d..dd5cee4bd038333c7bb94e8e5649bfb38803ac4d 100644 (file)
@@ -1369,6 +1369,14 @@ static int launch_run_as_worker(const char *procname)
                        &config);
 }
 
+static void sessiond_uuid_log(void)
+{
+       char uuid_str[UUID_STR_LEN];
+
+       lttng_uuid_to_str(sessiond_uuid, uuid_str);
+       DBG("Starting lttng-sessiond {%s}", uuid_str);
+}
+
 /*
  * main
  */
@@ -1465,6 +1473,7 @@ int main(int argc, char **argv)
        set_clock_plugin_env();
 
        sessiond_config_log(&config);
+       sessiond_uuid_log();
 
        if (create_lttng_rundir()) {
                retval = -1;
index 8759de6f52df71ab59518b0346d3a341636e1448..4f7e3a72b5b70645f3201dc70f42fc6c31f31218 100644 (file)
@@ -18,7 +18,7 @@
 #include <stdio.h>
 #include <common/compat/uuid.h>
 
-void lttng_uuid_to_str(const unsigned char *uuid, char *uuid_str)
+void lttng_uuid_to_str(const lttng_uuid uuid, char *uuid_str)
 {
        sprintf(uuid_str,
                        "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
index dcc4ed5609b2785945f54f00dd7d575e0c8ad82f..0da0b80db72c47be979167687d3309459301df17 100644 (file)
@@ -31,6 +31,8 @@
 #define UUID_STR_LEN           37
 #define UUID_LEN               16
 
+typedef unsigned char lttng_uuid[UUID_LEN];
+
 #ifdef LTTNG_HAVE_LIBUUID
 #include <uuid/uuid.h>
 
@@ -38,7 +40,7 @@
  * uuid_out is of len UUID_LEN.
  */
 static inline
-int lttng_uuid_generate(unsigned char *uuid_out)
+int lttng_uuid_generate(lttng_uuid uuid_out)
 {
        uuid_generate(uuid_out);
        return 0;
@@ -52,7 +54,7 @@ int lttng_uuid_generate(unsigned char *uuid_out)
  * uuid_out is of len UUID_LEN.
  */
 static inline
-int lttng_uuid_generate(unsigned char *uuid_out)
+int lttng_uuid_generate(lttng_uuid uuid_out)
 {
        uint32_t status;
 
@@ -74,6 +76,6 @@ int lttng_uuid_generate(unsigned char *uuid_out)
  * Assumes uuid_str is at least UUID_STR_LEN byte long.
  */
 LTTNG_HIDDEN
-void lttng_uuid_to_str(const unsigned char *uuid, char *uuid_str);
+void lttng_uuid_to_str(const lttng_uuid uuid, char *uuid_str);
 
 #endif /* LTTNG_UUID_H */
This page took 0.030575 seconds and 5 git commands to generate.