Fix: relayd: session id is ignored by 2.11+ create session command
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 10 Mar 2022 22:46:31 +0000 (17:46 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 11 Mar 2022 15:41:48 +0000 (10:41 -0500)
The id of the session used by the sessiond is not returned by
cmd_create_session_2_11 and its caller sets the value in the
relay_session to an uninitialized value.

Up until recently this didn't have much effect as this uninitialized
value was stored and used to perform look-ups in the trace chunk
registry, which would work.

However, the recent multi-consumer rotation fixes make this problem more
significant as this 'id' is used as a key to join relay sessions
originating from the same session daemon.

This was discovered by enabling the '-Wunused-parameter' warning.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I7e33f5f93dc46bb630c431408c9472be3a75c030

src/bin/lttng-relayd/cmd-2-11.cpp

index aa97dd0f0e0ddfd3e36f7e7857876f70c80864a7..cef90fdc46166bc5ea5a13bc1d49d7a980034a90 100644 (file)
@@ -50,6 +50,7 @@ int cmd_create_session_2_11(const struct lttng_buffer_view *payload,
        header.current_chunk_id.value = be64toh(header.current_chunk_id.value);
        header.current_chunk_id.is_set = !!header.current_chunk_id.is_set;
        header.creation_time = be64toh(header.creation_time);
+       header.session_id = be64toh(header.session_id);
 
        lttng_uuid_copy(sessiond_uuid, header.sessiond_uuid);
 
@@ -145,6 +146,7 @@ int cmd_create_session_2_11(const struct lttng_buffer_view *payload,
        *creation_time = (time_t) header.creation_time;
        *session_name_contains_creation_time =
                header.session_name_contains_creation_time;
+       *id_sessiond = header.session_id;
 
        ret = 0;
 
This page took 0.02689 seconds and 5 git commands to generate.