Fix: streaming and snapshot backward compat for relayd < 2.11
[lttng-tools.git] / src / bin / lttng-sessiond / cmd.c
index 0596033b1441fda9aaa3ca20e613be5923d4b714..4447747de752608f08aa02719af5254ab3f2a26c 100644 (file)
@@ -1040,7 +1040,8 @@ static enum lttng_error_code send_consumer_relayd_socket(
                const char *session_name, const char *hostname,
                const char *base_path, int session_live_timer,
                const uint64_t *current_chunk_id,
-               time_t session_creation_time)
+               time_t session_creation_time,
+               bool session_name_contains_creation_time)
 {
        int ret;
        struct lttcomm_relayd_sock *rsock = NULL;
@@ -1070,7 +1071,7 @@ static enum lttng_error_code send_consumer_relayd_socket(
                        relayd_uri->stype, session_id,
                        session_name, hostname, base_path,
                        session_live_timer, current_chunk_id,
-                       session_creation_time);
+                       session_creation_time, session_name_contains_creation_time);
        if (ret < 0) {
                status = LTTNG_ERR_ENABLE_CONSUMER_FAIL;
                goto close_sock;
@@ -1118,7 +1119,8 @@ static enum lttng_error_code send_consumer_relayd_sockets(
                unsigned int session_id, struct consumer_output *consumer,
                struct consumer_socket *sock, const char *session_name,
                const char *hostname, const char *base_path, int session_live_timer,
-               const uint64_t *current_chunk_id, time_t session_creation_time)
+               const uint64_t *current_chunk_id, time_t session_creation_time,
+               bool session_name_contains_creation_time)
 {
        enum lttng_error_code status = LTTNG_OK;
 
@@ -1130,7 +1132,8 @@ static enum lttng_error_code send_consumer_relayd_sockets(
                status = send_consumer_relayd_socket(session_id,
                                &consumer->dst.net.control, consumer, sock,
                                session_name, hostname, base_path, session_live_timer,
-                               current_chunk_id, session_creation_time);
+                               current_chunk_id, session_creation_time,
+                               session_name_contains_creation_time);
                if (status != LTTNG_OK) {
                        goto error;
                }
@@ -1141,7 +1144,8 @@ static enum lttng_error_code send_consumer_relayd_sockets(
                status = send_consumer_relayd_socket(session_id,
                                &consumer->dst.net.data, consumer, sock,
                                session_name, hostname, base_path, session_live_timer,
-                               current_chunk_id, session_creation_time);
+                               current_chunk_id, session_creation_time,
+                               session_name_contains_creation_time);
                if (status != LTTNG_OK) {
                        goto error;
                }
@@ -1199,7 +1203,8 @@ int cmd_setup_relayd(struct ltt_session *session)
                                        session->base_path,
                                        session->live_timer,
                                        current_chunk_id.is_set ? &current_chunk_id.value : NULL,
-                                       session->creation_time);
+                                       session->creation_time,
+                                       session->name_contains_creation_time);
                        pthread_mutex_unlock(socket->lock);
                        if (ret != LTTNG_OK) {
                                goto error;
@@ -1224,7 +1229,8 @@ int cmd_setup_relayd(struct ltt_session *session)
                                        session->base_path,
                                        session->live_timer,
                                        current_chunk_id.is_set ? &current_chunk_id.value : NULL,
-                                       session->creation_time);
+                                       session->creation_time,
+                                       session->name_contains_creation_time);
                        pthread_mutex_unlock(socket->lock);
                        if (ret != LTTNG_OK) {
                                goto error;
@@ -2582,8 +2588,7 @@ int cmd_start_trace(struct ltt_session *session)
                goto error;
        }
 
-       if (session->output_traces && !session->current_trace_chunk &&
-                       session_output_supports_trace_chunks(session)) {
+       if (session->output_traces && !session->current_trace_chunk) {
                struct lttng_trace_chunk *trace_chunk;
 
                trace_chunk = session_create_new_trace_chunk(
@@ -3193,8 +3198,7 @@ int cmd_destroy_session(struct ltt_session *session,
                 if (reply_context) {
                        reply_context->implicit_rotation_on_destroy = true;
                 }
-        } else if (session->has_been_started && session->current_trace_chunk &&
-                               session_output_supports_trace_chunks(session)) {
+        } else if (session->has_been_started && session->current_trace_chunk) {
                /*
                 * The user has not triggered a session rotation. However, to
                 * ensure all data has been consumed, the session is rotated
@@ -4289,7 +4293,8 @@ static enum lttng_error_code set_relayd_for_snapshot(
                                base_path,
                                session->live_timer,
                                current_chunk_id.is_set ? &current_chunk_id.value : NULL,
-                               session->creation_time);
+                               session->creation_time,
+                               session->name_contains_creation_time);
                pthread_mutex_unlock(socket->lock);
                if (status != LTTNG_OK) {
                        rcu_read_unlock();
@@ -4780,7 +4785,7 @@ int cmd_rotate_session(struct ltt_session *session,
        }
 
        /* Unsupported feature in lttng-relayd before 2.11. */
-       if (session->consumer->type == CONSUMER_DST_NET &&
+       if (!quiet_rotation && session->consumer->type == CONSUMER_DST_NET &&
                        (session->consumer->relay_major_version == 2 &&
                        session->consumer->relay_minor_version < 11)) {
                cmd_ret = LTTNG_ERR_ROTATION_NOT_AVAILABLE_RELAY;
This page took 0.02455 seconds and 4 git commands to generate.