Fix: update next_net_seq_num after sending header
[lttng-tools.git] / src / common / consumer.h
index a476dd5bf84fa5617df92ba603557e35b374f0ee..830514659772b0afa6bb5de1ad7be678e033dcfb 100644 (file)
@@ -129,7 +129,19 @@ struct lttng_consumer_stream {
        unsigned int metadata_flag;
        /* Used when the stream is set for network streaming */
        uint64_t relayd_stream_id;
-       /* Next sequence number to use for trace packet */
+       /*
+        * When sending a stream packet to a relayd, this number is used to track
+        * the packet sent by the consumer and seen by the relayd. When sending the
+        * data header to the relayd, this number is sent and if the transmission
+        * was successful, it is incremented.
+        *
+        * Even if the full data is not fully transmitted it won't matter since
+        * only two possible error can happen after that where either the relayd
+        * died or a read error is detected on the stream making this value useless
+        * after that.
+        *
+        * This value SHOULD be read/updated atomically or with the lock acquired.
+        */
        uint64_t next_net_seq_num;
        /*
         * Lock to use the stream FDs since they are used between threads.
@@ -186,6 +198,10 @@ struct consumer_relayd_sock_pair {
         */
        struct lttcomm_sock data_sock;
        struct lttng_ht_node_ulong node;
+
+       /* Session id on both sides for the sockets. */
+       uint64_t relayd_session_id;
+       uint64_t sessiond_session_id;
 };
 
 /*
@@ -412,7 +428,8 @@ ssize_t lttng_consumer_read_subbuffer(struct lttng_consumer_stream *stream,
 int lttng_consumer_on_recv_stream(struct lttng_consumer_stream *stream);
 int consumer_add_relayd_socket(int net_seq_idx, int sock_type,
                struct lttng_consumer_local_data *ctx, int sock,
-               struct pollfd *consumer_sockpoll, struct lttcomm_sock *relayd_sock);
+               struct pollfd *consumer_sockpoll, struct lttcomm_sock *relayd_sock,
+               unsigned int sessiond_id);
 void consumer_flag_relayd_for_destroy(
                struct consumer_relayd_sock_pair *relayd);
 int consumer_data_pending(uint64_t id);
This page took 0.023342 seconds and 4 git commands to generate.