X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.h;h=87ba490d7500af8ea078cec6ab652495ab5c91d5;hp=be532b58789dea028d6919c38a97d3d8d1eedc4d;hb=74251bb8269c4609c776e28fcd137628225e6ca7;hpb=6d805429e9cb049eb0c9205fcf742a53e3166caf diff --git a/src/common/consumer.h b/src/common/consumer.h index be532b587..87ba490d7 100644 --- a/src/common/consumer.h +++ b/src/common/consumer.h @@ -30,21 +30,6 @@ #include #include -/* - * When the receiving thread dies, we need to have a way to make the polling - * thread exit eventually. If all FDs hang up (normal case when the - * lttng-sessiond stops), we can exit cleanly, but if there is a problem and - * for whatever reason some FDs remain open, the consumer should still exit - * eventually. - * - * If the timeout is reached, it means that during this period no events - * occurred on the FDs so we need to force an exit. This case should not happen - * but it is a safety to ensure we won't block the consumer indefinitely. - * - * The value of 2 seconds is an arbitrary choice. - */ -#define LTTNG_CONSUMER_POLL_TIMEOUT 2000 - /* Commands for consumer */ enum lttng_consumer_command { LTTNG_CONSUMER_ADD_CHANNEL, @@ -147,10 +132,10 @@ struct lttng_consumer_stream { /* Next sequence number to use for trace packet */ uint64_t next_net_seq_num; /* - * Lock to use the stream FDs since they are used between threads. Using - * this lock with network streaming, when using the control mutex of a - * consumer_relayd_sock_pair, make sure to acquire this lock BEFORE locking - * it and releasing it AFTER the control mutex unlock. + * Lock to use the stream FDs since they are used between threads. + * + * This is nested INSIDE the consumer_data lock. + * This is nested OUTSIDE consumer_relayd_sock_pair lock. */ pthread_mutex_t lock; /* Tracing session id */ @@ -185,6 +170,9 @@ struct consumer_relayd_sock_pair { * between threads sending data to the relayd. Since metadata data is sent * over that socket, at least two sendmsg() are needed (header + data) * creating a race for packets to overlap between threads using it. + * + * This is nested INSIDE the consumer_data lock. + * This is nested INSIDE the stream lock. */ pthread_mutex_t ctrl_sock_mutex; @@ -272,8 +260,8 @@ struct lttng_consumer_global_data { * and number of element in the hash table. It's also a protection for * concurrent read/write between threads. * - * XXX: We need to see if this lock is still needed with the lockless RCU - * hash tables. + * This is nested OUTSIDE the stream lock. + * This is nested OUTSIDE the consumer_relayd_sock_pair lock. */ pthread_mutex_t lock; @@ -308,10 +296,6 @@ struct lttng_consumer_global_data { struct lttng_ht *stream_list_ht; }; -/* Defined in consumer.c and coupled with explanations */ -extern struct lttng_ht *metadata_ht; -extern struct lttng_ht *data_ht; - /* * Init consumer data structures. */