Fix: sessiond: snapshot errors don't clear session's trace chunk
[lttng-tools.git] / src / bin / lttng-sessiond / cmd.c
index 02a92be1e07e45ba71e4c767ebca0f6a18050ec9..93df59ccdc97d8fe26578866a96ff48229015110 100644 (file)
@@ -4540,7 +4540,7 @@ int64_t get_session_nb_packets_per_stream(const struct ltt_session *session,
                }
                cur_nb_packets++;
        }
-       if (!cur_nb_packets) {
+       if (!cur_nb_packets && size_left != max_size) {
                /* Not enough room to grab one packet of each stream, error. */
                return -1;
        }
@@ -4653,7 +4653,7 @@ enum lttng_error_code snapshot_record(struct ltt_session *session,
                        snapshot_output->max_size);
        if (nb_packets_per_stream < 0) {
                ret_code = LTTNG_ERR_MAX_SIZE_INVALID;
-               goto error;
+               goto error_close_trace_chunk;
        }
 
        if (session->kernel_session) {
@@ -4661,7 +4661,7 @@ enum lttng_error_code snapshot_record(struct ltt_session *session,
                                snapshot_kernel_consumer_output, session,
                                wait, nb_packets_per_stream);
                if (ret_code != LTTNG_OK) {
-                       goto error;
+                       goto error_close_trace_chunk;
                }
        }
 
@@ -4670,10 +4670,10 @@ enum lttng_error_code snapshot_record(struct ltt_session *session,
                                snapshot_ust_consumer_output, session,
                                wait, nb_packets_per_stream);
                if (ret_code != LTTNG_OK) {
-                       goto error;
+                       goto error_close_trace_chunk;
                }
        }
-
+error_close_trace_chunk:
        if (session_close_trace_chunk(
                            session, session->current_trace_chunk, NULL, NULL)) {
                /*
This page took 0.02406 seconds and 4 git commands to generate.