[lttng-dev] [PATCH lttng-tools 2/3] Fix: lttng-sessiond: cpu hotplug: send channel to consumer only once

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Thu May 11 20:00:55 UTC 2017


On CPU hotplug, we currently send a duplicate of the channel key, which
allocates its own object (duplicated) within the consumerd. We want the
newly added stream to map to the pre-existing channel key, so don't send
the channel duplicate.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
---
 src/bin/lttng-sessiond/kernel-consumer.c | 11 +++++++----
 src/bin/lttng-sessiond/trace-kernel.h    |  1 +
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/bin/lttng-sessiond/kernel-consumer.c b/src/bin/lttng-sessiond/kernel-consumer.c
index a65e149..067652b 100644
--- a/src/bin/lttng-sessiond/kernel-consumer.c
+++ b/src/bin/lttng-sessiond/kernel-consumer.c
@@ -338,7 +338,7 @@ int kernel_consumer_send_channel_stream(struct consumer_socket *sock,
 		struct ltt_kernel_channel *channel, struct ltt_kernel_session *session,
 		unsigned int monitor)
 {
-	int ret;
+	int ret = LTTNG_OK;
 	struct ltt_kernel_stream *stream;
 
 	/* Safety net */
@@ -356,9 +356,12 @@ int kernel_consumer_send_channel_stream(struct consumer_socket *sock,
 	DBG("Sending streams of channel %s to kernel consumer",
 			channel->channel->name);
 
-	ret = kernel_consumer_add_channel(sock, channel, session, monitor);
-	if (ret < 0) {
-		goto error;
+	if (!channel->sent_to_consumer) {
+		ret = kernel_consumer_add_channel(sock, channel, session, monitor);
+		if (ret < 0) {
+			goto error;
+		}
+		channel->sent_to_consumer = true;
 	}
 
 	/* Send streams */
diff --git a/src/bin/lttng-sessiond/trace-kernel.h b/src/bin/lttng-sessiond/trace-kernel.h
index 2092469..93870cb 100644
--- a/src/bin/lttng-sessiond/trace-kernel.h
+++ b/src/bin/lttng-sessiond/trace-kernel.h
@@ -71,6 +71,7 @@ struct ltt_kernel_channel {
 	struct cds_list_head list;
 	/* Session pointer which has a reference to this object. */
 	struct ltt_kernel_session *session;
+	bool sent_to_consumer;
 };
 
 /* Metadata */
-- 
2.1.4



More information about the lttng-dev mailing list