start to handle async rotation on the relay + basics for remote rotate_pending
[deliverable/lttng-tools.git] / src / bin / lttng-sessiond / ust-app.c
index 85e2f1a7d34af70608f9f9f50734356a8c9cfeed..2283f980ae079c53c483f5c9f11e58aa4600b099 100644 (file)
@@ -6286,7 +6286,7 @@ int ust_app_regenerate_statedump_all(struct ltt_ust_session *usess)
  */
 int ust_app_rotate_session(struct ltt_session *session)
 {
-       int ret = 0;
+       int ret = 0, nr_channels = 0, nr_app = 0;
        struct lttng_ht_iter iter;
        struct ust_app *app;
        struct ltt_ust_session *usess = session->ust_session;
@@ -6312,6 +6312,7 @@ int ust_app_rotate_session(struct ltt_session *session)
                        struct buffer_reg_channel *reg_chan;
                        struct consumer_socket *socket;
 
+                       nr_channels++;
                        /* Get consumer socket to use to push the metadata.*/
                        socket = consumer_find_socket_by_bitness(reg->bits_per_long,
                                        usess->consumer);
@@ -6358,7 +6359,8 @@ int ust_app_rotate_session(struct ltt_session *session)
                                ret = consumer_rotate_channel(socket,
                                                reg_chan->consumer_key,
                                                usess->uid, usess->gid,
-                                               usess->consumer, pathname, 0);
+                                               usess->consumer, pathname, 0,
+                                               session->rotate_count);
                                if (ret < 0) {
                                        goto error;
                                }
@@ -6369,7 +6371,8 @@ int ust_app_rotate_session(struct ltt_session *session)
                        ret = consumer_rotate_channel(socket,
                                        reg->registry->reg.ust->metadata_key,
                                        usess->uid, usess->gid,
-                                       usess->consumer, pathname, 1);
+                                       usess->consumer, pathname, 1,
+                                       session->rotate_count);
                        if (ret < 0) {
                                goto error;
                        }
@@ -6390,6 +6393,7 @@ int ust_app_rotate_session(struct ltt_session *session)
                                /* Session not associated with this app. */
                                continue;
                        }
+                       nr_app++;
                        ret = snprintf(pathname, PATH_MAX, DEFAULT_UST_TRACE_DIR "/%s",
                                        ua_sess->path);
                        if (ret < 0) {
@@ -6439,7 +6443,8 @@ int ust_app_rotate_session(struct ltt_session *session)
                                }
                                ret = consumer_rotate_channel(socket, ua_chan->key,
                                                ua_sess->euid, ua_sess->egid,
-                                               ua_sess->consumer, pathname, 0);
+                                               ua_sess->consumer, pathname, 0,
+                                               session->rotate_count);
                                if (ret < 0) {
                                        goto error;
                                }
@@ -6449,7 +6454,8 @@ int ust_app_rotate_session(struct ltt_session *session)
                        (void) push_metadata(registry, usess->consumer);
                        ret = consumer_rotate_channel(socket, registry->metadata_key,
                                        ua_sess->euid, ua_sess->egid,
-                                       ua_sess->consumer, pathname, 1);
+                                       ua_sess->consumer, pathname, 1,
+                                       session->rotate_count);
                        if (ret < 0) {
                                goto error;
                        }
@@ -6461,6 +6467,11 @@ int ust_app_rotate_session(struct ltt_session *session)
                break;
        }
 
+       if (nr_app == 0 && nr_channels == 0) {
+               session->rotate_pending = 0;
+               session->rotate_status = LTTNG_ROTATE_EMPTY;
+       }
+
        ret = LTTNG_OK;
 
 error:
This page took 0.039589 seconds and 5 git commands to generate.