- /* No config options, just rotate the session now */
- if (timer == 0) {
- ERR("No timer given");
- success = 0;
- command_ret = -1;
- } else {
- command_ret = setup_rotate(session_name, timer);
+ if (!periodic_rotation && !size_rotation) {
+ ERR("No session rotation schedule type provided.");
+ cmd_ret = CMD_ERROR;
+ goto close_command;
+ }
+
+ if (lttng_opt_mi) {
+ ret = mi_lttng_writer_open_element(writer,
+ mi_lttng_element_rotation_schedule_results);
+ if (ret) {
+ goto error;
+ }
+
+ ret = mi_lttng_writer_write_element_string(writer,
+ mi_lttng_element_session_name,
+ session_name);
+ if (ret) {
+ goto error;
+ }
+ }
+
+ if (periodic_rotation) {
+ /*
+ * Continue processing even on error as multiple schedules can
+ * be specified at once.
+ */
+ cmd_ret = remove_schedule(session_name,
+ LTTNG_ROTATION_SCHEDULE_TYPE_PERIODIC);
+ }
+
+ if (size_rotation) {
+ enum lttng_error_code tmp_ret;
+
+ /* Don't overwrite cmd_ret if it already indicates an error. */
+ tmp_ret = remove_schedule(session_name,
+ LTTNG_ROTATION_SCHEDULE_TYPE_SIZE_THRESHOLD);
+ cmd_ret = cmd_ret ? cmd_ret : tmp_ret;