Fix: lttng-sessiond: cpu hotplug: send channel to consumer only once
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 11 May 2017 20:00:55 +0000 (16:00 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 19 May 2017 20:56:25 +0000 (16:56 -0400)
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@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/kernel-consumer.c
src/bin/lttng-sessiond/trace-kernel.h

index a65e1493c384ea75401266b019b56ab605ce7e89..067652b811def6d6a65a4604c88b8b1f5cd82873 100644 (file)
@@ -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 */
index 2092469ad43b9e304f216e1a245191f05f5a0f8e..93870cbfd6509f98e92b3ff4a4bbb5638c09aaf2 100644 (file)
@@ -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 */
This page took 0.0383 seconds and 4 git commands to generate.