Fix: sessiond vs consumerd push/get metadata deadlock
[lttng-tools.git] / src / common / consumer.c
index 1cb1c47431303e6ed3c516948a78b5807855c48c..526fbbf35c157f2bf545ef53b68dc0e45ef17365 100644 (file)
@@ -563,6 +563,7 @@ struct lttng_consumer_stream *consumer_allocate_stream(uint64_t channel_key,
        stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE;
        stream->index_fd = -1;
        pthread_mutex_init(&stream->lock, NULL);
+       pthread_mutex_init(&stream->metadata_timer_lock, NULL);
 
        /* If channel is the metadata, flag this stream as metadata. */
        if (type == CONSUMER_CHANNEL_TYPE_METADATA) {
@@ -937,6 +938,7 @@ struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
                uint64_t session_id_per_pid,
                unsigned int monitor,
                unsigned int live_timer_interval,
+               const char *root_shm_path,
                const char *shm_path)
 {
        struct lttng_consumer_channel *channel;
@@ -994,6 +996,10 @@ struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
        strncpy(channel->name, name, sizeof(channel->name));
        channel->name[sizeof(channel->name) - 1] = '\0';
 
+       if (root_shm_path) {
+               strncpy(channel->root_shm_path, root_shm_path, sizeof(channel->root_shm_path));
+               channel->root_shm_path[sizeof(channel->root_shm_path) - 1] = '\0';
+       }
        if (shm_path) {
                strncpy(channel->shm_path, shm_path, sizeof(channel->shm_path));
                channel->shm_path[sizeof(channel->shm_path) - 1] = '\0';
This page took 0.023782 seconds and 4 git commands to generate.