/* * destroy_session * * Unregister the provided session to the session daemon. On success, removes * the default configuration. */ static int destroy_session(struct lttng_session *session) { int ret; ret = lttng_destroy_session(session->name); if (ret < 0) { switch (-ret) { case LTTNG_ERR_SESS_NOT_FOUND: WARN("Session name %s not found", session->name); break; default: ERR("%s", lttng_strerror(ret)); break; } goto error; } MSG("Session %s destroyed", session->name); config_destroy_default(); if (lttng_opt_mi) { ret = mi_lttng_session(writer, session, 0); if (ret) { ret = CMD_ERROR; goto error; } } ret = CMD_SUCCESS; error: return ret; }
/* * destroy_session * * Unregister the provided session to the session daemon. On success, removes * the default configuration. */ static int destroy_session(struct lttng_session *session) { int ret; char *session_name = NULL; bool session_was_stopped; ret = lttng_stop_tracing_no_wait(session->name); if (ret < 0 && ret != -LTTNG_ERR_TRACE_ALREADY_STOPPED) { ERR("%s", lttng_strerror(ret)); } session_was_stopped = ret == -LTTNG_ERR_TRACE_ALREADY_STOPPED; if (!opt_no_wait) { bool printed_wait_msg = false; do { ret = lttng_data_pending(session->name); if (ret < 0) { /* Return the data available call error. */ goto error; } /* * Data sleep time before retrying (in usec). Don't sleep if the call * returned value indicates availability. */ if (ret) { if (!printed_wait_msg) { _MSG("Waiting for data availability"); fflush(stdout); } printed_wait_msg = true; usleep(DEFAULT_DATA_AVAILABILITY_WAIT_TIME); _MSG("."); fflush(stdout); } } while (ret != 0); if (printed_wait_msg) { MSG(""); } } if (!session_was_stopped) { /* * Don't print the event and packet loss warnings since the user * already saw them when stopping the trace. */ print_session_stats(session->name); } ret = lttng_destroy_session_no_wait(session->name); if (ret < 0) { goto error; } MSG("Session %s destroyed", session->name); session_name = get_session_name_quiet(); if (session_name && !strncmp(session->name, session_name, NAME_MAX)) { config_destroy_default(); } if (lttng_opt_mi) { ret = mi_lttng_session(writer, session, 0); if (ret) { ret = CMD_ERROR; goto error; } } ret = CMD_SUCCESS; error: free(session_name); return ret; }