Pass the consumerd stream's trace archive id to the relayd
[lttng-tools.git] / src / common / consumer / consumer.c
index 3ac00cb030bdebc60a3c864a91107873fb683f63..afc346333c5dc780a57c2bb86a548a9b0c60d82f 100644 (file)
@@ -562,7 +562,8 @@ struct lttng_consumer_stream *consumer_allocate_stream(uint64_t channel_key,
                int cpu,
                int *alloc_ret,
                enum consumer_channel_type type,
                int cpu,
                int *alloc_ret,
                enum consumer_channel_type type,
-               unsigned int monitor)
+               unsigned int monitor,
+               uint64_t trace_archive_id)
 {
        int ret;
        struct lttng_consumer_stream *stream;
 {
        int ret;
        struct lttng_consumer_stream *stream;
@@ -589,6 +590,7 @@ struct lttng_consumer_stream *consumer_allocate_stream(uint64_t channel_key,
        stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE;
        stream->index_file = NULL;
        stream->last_sequence_number = -1ULL;
        stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE;
        stream->index_file = NULL;
        stream->last_sequence_number = -1ULL;
+       stream->trace_archive_id = trace_archive_id;
        pthread_mutex_init(&stream->lock, NULL);
        pthread_mutex_init(&stream->metadata_timer_lock, NULL);
 
        pthread_mutex_init(&stream->lock, NULL);
        pthread_mutex_init(&stream->metadata_timer_lock, NULL);
 
@@ -806,7 +808,8 @@ int consumer_send_relayd_stream(struct lttng_consumer_stream *stream,
                pthread_mutex_lock(&relayd->ctrl_sock_mutex);
                ret = relayd_add_stream(&relayd->control_sock, stream->name,
                                path, &stream->relayd_stream_id,
                pthread_mutex_lock(&relayd->ctrl_sock_mutex);
                ret = relayd_add_stream(&relayd->control_sock, stream->name,
                                path, &stream->relayd_stream_id,
-                               stream->chan->tracefile_size, stream->chan->tracefile_count);
+                               stream->chan->tracefile_size, stream->chan->tracefile_count,
+                               stream->trace_archive_id);
                pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
                if (ret < 0) {
                        goto end;
                pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
                if (ret < 0) {
                        goto end;
@@ -1475,7 +1478,7 @@ void lttng_consumer_destroy(struct lttng_consumer_local_data *ctx)
  */
 static int write_relayd_metadata_id(int fd,
                struct lttng_consumer_stream *stream,
  */
 static int write_relayd_metadata_id(int fd,
                struct lttng_consumer_stream *stream,
-               struct consumer_relayd_sock_pair *relayd, unsigned long padding)
+               unsigned long padding)
 {
        ssize_t ret;
        struct lttcomm_relayd_metadata_payload hdr;
 {
        ssize_t ret;
        struct lttcomm_relayd_metadata_payload hdr;
@@ -1610,7 +1613,7 @@ ssize_t lttng_consumer_on_read_subbuffer_mmap(
 
                /* Write metadata stream id before payload */
                if (stream->metadata_flag) {
 
                /* Write metadata stream id before payload */
                if (stream->metadata_flag) {
-                       ret = write_relayd_metadata_id(outfd, stream, relayd, padding);
+                       ret = write_relayd_metadata_id(outfd, stream, padding);
                        if (ret < 0) {
                                relayd_hang_up = 1;
                                goto write_error;
                        if (ret < 0) {
                                relayd_hang_up = 1;
                                goto write_error;
@@ -1799,7 +1802,7 @@ ssize_t lttng_consumer_on_read_subbuffer_splice(
                                }
                                stream->reset_metadata_flag = 0;
                        }
                                }
                                stream->reset_metadata_flag = 0;
                        }
-                       ret = write_relayd_metadata_id(splice_pipe[1], stream, relayd,
+                       ret = write_relayd_metadata_id(splice_pipe[1], stream,
                                        padding);
                        if (ret < 0) {
                                written = ret;
                                        padding);
                        if (ret < 0) {
                                written = ret;
@@ -4389,6 +4392,27 @@ int lttng_consumer_rotate_rename(const char *old_path, const char *new_path,
        }
 }
 
        }
 }
 
+int lttng_consumer_rotate_pending_relay(uint64_t session_id,
+               uint64_t relayd_id, uint64_t chunk_id)
+{
+       int ret;
+       struct consumer_relayd_sock_pair *relayd;
+
+       relayd = consumer_find_relayd(relayd_id);
+       if (!relayd) {
+               ERR("Failed to find relayd");
+               ret = -1;
+               goto end;
+       }
+
+       pthread_mutex_lock(&relayd->ctrl_sock_mutex);
+       ret = relayd_rotate_pending(&relayd->control_sock, chunk_id);
+       pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
+
+end:
+       return ret;
+}
+
 static
 int mkdir_local(const char *path, uid_t uid, gid_t gid)
 {
 static
 int mkdir_local(const char *path, uid_t uid, gid_t gid)
 {
This page took 0.025335 seconds and 4 git commands to generate.