From d1bc11c3e8bbd032c6638a2def5994703e7c9778 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 10 Mar 2022 17:46:31 -0500 Subject: [PATCH] Fix: relayd: session id is ignored by 2.11+ create session command MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Change-Id: I7e33f5f93dc46bb630c431408c9472be3a75c030 --- src/bin/lttng-relayd/cmd-2-11.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/lttng-relayd/cmd-2-11.cpp b/src/bin/lttng-relayd/cmd-2-11.cpp index aa97dd0f0..cef90fdc4 100644 --- a/src/bin/lttng-relayd/cmd-2-11.cpp +++ b/src/bin/lttng-relayd/cmd-2-11.cpp @@ -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; -- 2.34.1