Rename rotate_count to current_archive_id
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 2 May 2018 19:27:37 +0000 (15:27 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 2 May 2018 19:27:37 +0000 (15:27 -0400)
The ltt_session's rotate count will no longer be used only to
count the number of rotations. It will be used to tag streams
with a "trace archive chunk id" that indicates the epoch of
their creation.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/cmd.c
src/bin/lttng-sessiond/kernel.c
src/bin/lttng-sessiond/rotate.c
src/bin/lttng-sessiond/rotation-thread.c
src/bin/lttng-sessiond/session.h
src/bin/lttng-sessiond/ust-app.c

index 2e2ae6006023c13b8457b30071e1332fdf24ef14..56c7633a07fc55b7a648a27e199c7a138d6043b1 100644 (file)
@@ -2613,7 +2613,7 @@ int rename_active_chunk(struct ltt_session *session)
 {
        int ret;
 
-       session->rotate_count++;
+       session->current_archive_id++;
 
        /*
         * The currently active tracing path is now the folder we
@@ -2646,7 +2646,7 @@ int rename_active_chunk(struct ltt_session *session)
                goto end;
        }
 end:
-       session->rotate_count--;
+       session->current_archive_id--;
        return ret;
 }
 
@@ -2682,7 +2682,7 @@ int cmd_stop_trace(struct ltt_session *session)
                sessiond_rotate_timer_stop(session);
        }
 
-       if (session->rotate_count > 0 && !session->rotate_pending) {
+       if (session->current_archive_id > 0 && !session->rotate_pending) {
                ret = rename_active_chunk(session);
                if (ret) {
                        /*
@@ -4443,7 +4443,7 @@ int cmd_rotate_session(struct ltt_session *session,
        }
 
        /* Special case for the first rotation. */
-       if (session->rotate_count == 0) {
+       if (session->current_archive_id == 0) {
                const char *base_path = NULL;
 
                /* Either one of the two sessions is enough to get the root path. */
@@ -4479,7 +4479,7 @@ int cmd_rotate_session(struct ltt_session *session,
        }
        DBG("Current rotate path %s", session->rotation_chunk.current_rotate_path);
 
-       session->rotate_count++;
+       session->current_archive_id++;
        session->rotate_pending = true;
        session->rotation_state = LTTNG_ROTATION_STATE_ONGOING;
 
@@ -4516,7 +4516,7 @@ int cmd_rotate_session(struct ltt_session *session,
                                sizeof(session->rotation_chunk.active_tracing_path),
                                "%s/%s-%" PRIu64,
                                session_get_base_path(session),
-                               datetime, session->rotate_count + 1);
+                               datetime, session->current_archive_id + 1);
                if (ret < 0 || ret == sizeof(session->rotation_chunk.active_tracing_path)) {
                        ERR("Failed to format active kernel tracing path in rotate session command");
                        ret = -LTTNG_ERR_UNK;
@@ -4529,7 +4529,7 @@ int cmd_rotate_session(struct ltt_session *session,
                ret = snprintf(session->kernel_session->consumer->chunk_path,
                                sizeof(session->kernel_session->consumer->chunk_path),
                                "/%s-%" PRIu64, datetime,
-                               session->rotate_count + 1);
+                               session->current_archive_id + 1);
                if (ret < 0 || ret == sizeof(session->kernel_session->consumer->chunk_path)) {
                        ERR("Failed to format the kernel consumer's sub-directory in rotate session command");
                        ret = -LTTNG_ERR_UNK;
@@ -4558,7 +4558,7 @@ int cmd_rotate_session(struct ltt_session *session,
                ret = snprintf(session->rotation_chunk.active_tracing_path,
                                PATH_MAX, "%s/%s-%" PRIu64,
                                session_get_base_path(session),
-                               datetime, session->rotate_count + 1);
+                               datetime, session->current_archive_id + 1);
                if (ret < 0) {
                        ERR("Failed to format active UST tracing path in rotate session command");
                        ret = -LTTNG_ERR_UNK;
@@ -4566,7 +4566,7 @@ int cmd_rotate_session(struct ltt_session *session,
                }
                ret = snprintf(session->ust_session->consumer->chunk_path,
                                PATH_MAX, "/%s-%" PRIu64, datetime,
-                               session->rotate_count + 1);
+                               session->current_archive_id + 1);
                if (ret < 0) {
                        ERR("Failed to format the UST consumer's sub-directory in rotate session command");
                        ret = -LTTNG_ERR_UNK;
@@ -4609,11 +4609,11 @@ int cmd_rotate_session(struct ltt_session *session,
        }
 
        if (rotate_return) {
-               rotate_return->rotation_id = session->rotate_count;
+               rotate_return->rotation_id = session->current_archive_id;
        }
 
-       DBG("Cmd rotate session %s, rotate_id %" PRIu64 " sent", session->name,
-                       session->rotate_count);
+       DBG("Cmd rotate session %s, current_archive_id %" PRIu64 " sent",
+                       session->name, session->current_archive_id);
        ret = LTTNG_OK;
 
 end:
@@ -4636,9 +4636,9 @@ int cmd_rotate_get_info(struct ltt_session *session,
        assert(session);
 
        DBG("Cmd rotate_get_info session %s, rotation id %" PRIu64, session->name,
-                       session->rotate_count);
+                       session->current_archive_id);
 
-       if (session->rotate_count != rotation_id) {
+       if (session->current_archive_id != rotation_id) {
                info_return->status = (int32_t) LTTNG_ROTATION_STATE_EXPIRED;
                ret = LTTNG_OK;
                goto end;
@@ -4827,7 +4827,7 @@ int cmd_session_get_current_output(struct ltt_session *session,
        const char *path;
 
        if (!session->snapshot_mode) {
-               if (session->rotate_count == 0) {
+               if (session->current_archive_id == 0) {
                        if (session->kernel_session) {
                                path = session_get_base_path(session);
                        } else if (session->ust_session) {
index 2b59fe09d3b19924993b08849b5360d5d8eeac9e..19a325da1f1421b27c73bfb7866ae5204b87ca7b 100644 (file)
@@ -1190,7 +1190,7 @@ int kernel_rotate_session(struct ltt_session *session)
                                        ksess->uid, ksess->gid, ksess->consumer,
                                        ksess->consumer->subdir,
                                        /* is_metadata_channel */ false,
-                                       session->rotate_count,
+                                       session->current_archive_id,
                                        &session->rotate_pending_relay);
                        if (ret < 0) {
                                ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
@@ -1205,7 +1205,7 @@ int kernel_rotate_session(struct ltt_session *session)
                                ksess->uid, ksess->gid, ksess->consumer,
                                ksess->consumer->subdir,
                                /* is_metadata_channel */ true,
-                               session->rotate_count,
+                               session->current_archive_id,
                                &session->rotate_pending_relay);
                if (ret < 0) {
                        ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
index bd6dbddf95492492eb02a5dd87d138cfffe6c108..dac0f2a1fda8145cfa8f7fdbca724a2890257f87 100644 (file)
@@ -232,7 +232,7 @@ int rename_complete_chunk(struct ltt_session *session, time_t ts)
                goto end;
        }
 
-       if (session->rotate_count == 1) {
+       if (session->current_archive_id == 1) {
                char start_time[21];
 
                timeinfo = localtime(&session->last_chunk_start_ts);
@@ -258,7 +258,7 @@ int rename_complete_chunk(struct ltt_session *session, time_t ts)
                ret = snprintf(new_path, sizeof(new_path), "%s/%s-%s-%" PRIu64,
                                session->rotation_chunk.current_rotate_path,
                                start_time,
-                               datetime, session->rotate_count);
+                               datetime, session->current_archive_id);
                if (ret < 0 || ret >= sizeof(new_path)) {
                        ERR("Failed to format new chunk path while renaming session \"%s\"'s first chunk",
                                        session->name);
@@ -315,7 +315,7 @@ int rename_complete_chunk(struct ltt_session *session, time_t ts)
                ret = snprintf(new_path, sizeof(new_path), "%s/%s-%s-%" PRIu64,
                                session_get_base_path(session),
                                start_datetime,
-                               datetime, session->rotate_count);
+                               datetime, session->current_archive_id);
                if (ret < 0 || ret >= sizeof(new_path)) {
                        ERR("Failed to format new chunk path while renaming chunk of session \"%s\"",
                                        session->name);
index d39aad80b413e888a9d6859a5be17473e7b11e0f..dcae248b4088c5aa068b871afbc37871176f532b 100644 (file)
@@ -433,7 +433,7 @@ int rotate_pending_relay_timer(struct ltt_session *session)
 
        DBG("[rotation-thread] Check rotate pending on session %" PRIu64,
                        session->id);
-       ret = relay_rotate_pending(session, session->rotate_count - 1);
+       ret = relay_rotate_pending(session, session->current_archive_id - 1);
        if (ret < 0) {
                ERR("[rotation-thread] Check relay rotate pending");
                goto end;
index b8c7890810ab966d23860805cabfff5be62426e9..3ace323bab4a9ac18fd0a6d654498b7117f1bc14 100644 (file)
@@ -120,8 +120,20 @@ struct ltt_session {
         * Node in ltt_sessions_ht_by_id.
         */
        struct lttng_ht_node_u64 node;
-       /* Number of session rotation for this session. */
-       uint64_t rotate_count;
+       /*
+        * The current archive id corresponds to the number of session rotations
+        * that have occured for this session. The archive id
+        * is used to tag the "generation" of a stream. This tag allows the
+        * consumer and relay daemons to track when a given stream was created
+        * during the lifetime of a session.
+        *
+        * For instance, if a stream is created after a session rotation was
+        * launched, the consumer and relay daemons must not check its position
+        * to determine if that specific session rotation was completed. It is
+        * implicitly "completed" since the stream appeared _after_ the session
+        * rotation was initiated.
+        */
+       uint64_t current_archive_id;
        /*
         * Rotation is pending between the time it starts until the consumer has
         * finished extracting the data. If the session uses a relay, data related
index 6828660aa537a22e73a23a73c4c38665af03f2fc..8f0d898219d98e4aba0dcda13eedd1816ac2b5f0 100644 (file)
@@ -6365,7 +6365,7 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active)
                                                usess->uid, usess->gid,
                                                usess->consumer, pathname,
                                                /* is_metadata_channel */ false,
-                                               session->rotate_count,
+                                               session->current_archive_id,
                                                &session->rotate_pending_relay);
                                if (ret < 0) {
                                        goto error;
@@ -6379,7 +6379,7 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active)
                                        usess->uid, usess->gid,
                                        usess->consumer, pathname,
                                        /* is_metadata_channel */ true,
-                                       session->rotate_count,
+                                       session->current_archive_id,
                                        &session->rotate_pending_relay);
                        if (ret < 0) {
                                goto error;
@@ -6456,7 +6456,7 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active)
                                                ua_sess->euid, ua_sess->egid,
                                                ua_sess->consumer, pathname,
                                                /* is_metadata_channel */ false,
-                                               session->rotate_count,
+                                               session->current_archive_id,
                                                &session->rotate_pending_relay);
                                if (ret < 0) {
                                        goto error;
@@ -6469,7 +6469,7 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active)
                                        ua_sess->euid, ua_sess->egid,
                                        ua_sess->consumer, pathname,
                                        /* is_metadata_channel */ true,
-                                       session->rotate_count,
+                                       session->current_archive_id,
                                        &session->rotate_pending_relay);
                        if (ret < 0) {
                                goto error;
This page took 0.033004 seconds and 4 git commands to generate.