*
* Called with session lock held.
*/
-int cmd_destroy_session(struct ltt_session *session, int wpipe)
+int cmd_destroy_session(struct ltt_session *session, int wpipe,
+ struct notification_thread_handle *notification_thread_handle)
{
int ret;
struct ltt_ust_session *usess;
sessiond_rotate_timer_stop(session);
}
+ if (session->rotate_size) {
+ unsubscribe_session_consumed_size_rotation(session, notification_thread_handle);
+ session->rotate_size = 0;
+ }
+
/*
* The rename of the current chunk is performed at stop, but if we rotated
* the session after the previous stop command, we need to rename the
int ret;
size_t strf_ret;
struct tm *timeinfo;
- char datetime[16];
+ char datetime[21];
time_t now;
bool ust_active = false;
ret = -LTTNG_ERR_UNK;
goto end;
}
- strf_ret = strftime(datetime, sizeof(datetime), "%Y%m%d-%H%M%S",
+ strf_ret = strftime(datetime, sizeof(datetime), "%Y%m%dT%H%M%S%z",
timeinfo);
if (!strf_ret) {
ERR("Failed to format local time timestamp in rotate session command");
* Return 0 on success or else an LTTNG_ERR code.
*/
int cmd_rotation_set_schedule(struct ltt_session *session,
- uint64_t timer_us, uint64_t size)
+ uint64_t timer_us, uint64_t size,
+ struct notification_thread_handle *notification_thread_handle)
{
int ret;
goto end;
}
+ if (size && size != -1ULL && session->rotate_size) {
+ ret = LTTNG_ERR_ROTATION_SIZE_SET;
+ goto end;
+ } else if (size == -1ULL && !session->rotate_size) {
+ ret = LTTNG_ERR_ROTATION_NO_SIZE_SET;
+ goto end;
+ }
+
if (timer_us && !session->rotate_timer_period) {
if (timer_us > UINT_MAX) {
ret = LTTNG_ERR_INVALID;
session->rotate_timer_period = 0;
}
+ if (size > 0) {
+ if (size == -1ULL) {
+ ret = unsubscribe_session_consumed_size_rotation(session,
+ notification_thread_handle);
+ if (ret) {
+ ret = LTTNG_ERR_UNK;
+ goto end;
+ }
+ session->rotate_size = 0;
+ } else {
+ ret = subscribe_session_consumed_size_rotation(session,
+ size, notification_thread_handle);
+ if (ret) {
+ PERROR("Subscribe to session usage");
+ ret = LTTNG_ERR_UNK;
+ goto end;
+ }
+ session->rotate_size = size;
+ }
+ }
+
ret = LTTNG_OK;
goto end;