X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Frotation-thread.cpp;fp=src%2Fbin%2Flttng-sessiond%2Frotation-thread.cpp;h=4a0865eb8940a4faec5bb288ac61e50e1bca79ad;hp=aa5dc4a8c40432a7c7a2f03dfb36e6982f0c150f;hb=56047f5a23df5c2c583a102b8015bbec5a7da9f1;hpb=66cefebdc240cbae0bc79594305f509b0779fa98 diff --git a/src/bin/lttng-sessiond/rotation-thread.cpp b/src/bin/lttng-sessiond/rotation-thread.cpp index aa5dc4a8c..4a0865eb8 100644 --- a/src/bin/lttng-sessiond/rotation-thread.cpp +++ b/src/bin/lttng-sessiond/rotation-thread.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -318,6 +319,7 @@ static void check_session_rotation_pending_on_consumers(struct ltt_session *sess uint64_t relayd_id; bool chunk_exists_on_peer = false; enum lttng_trace_chunk_status chunk_status; + lttng::urcu::read_lock_guard read_lock; LTTNG_ASSERT(session->chunk_being_archived); @@ -325,10 +327,10 @@ static void check_session_rotation_pending_on_consumers(struct ltt_session *sess * Check for a local pending rotation on all consumers (32-bit * user space, 64-bit user space, and kernel). */ - rcu_read_lock(); if (!session->ust_session) { goto skip_ust; } + cds_lfht_for_each_entry ( session->ust_session->consumer->socks->ht, &iter, socket, node.node) { relayd_id = session->ust_session->consumer->type == CONSUMER_DST_LOCAL ? @@ -386,7 +388,6 @@ skip_ust: } skip_kernel: end: - rcu_read_unlock(); if (!chunk_exists_on_peer) { uint64_t chunk_being_archived_id;