*/
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;
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);
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;
}
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;
}
/* 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) {
}
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;
}
(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;
}
break;
}
+ if (nr_app == 0 && nr_channels == 0) {
+ session->rotate_pending = 0;
+ session->rotate_status = LTTNG_ROTATE_EMPTY;
+ }
+
ret = LTTNG_OK;
error: