projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: sessiond: session destruction errors are unreported
[lttng-tools.git]
/
src
/
bin
/
lttng
/
commands
/
destroy.c
diff --git
a/src/bin/lttng/commands/destroy.c
b/src/bin/lttng/commands/destroy.c
index 7cea7bf23303a6a2cadf48709f881f58c79964f5..be0261d11b760b67561b52d324334c35f39162e7 100644
(file)
--- a/
src/bin/lttng/commands/destroy.c
+++ b/
src/bin/lttng/commands/destroy.c
@@
-101,7
+101,7
@@
static int destroy_session(struct lttng_session *session)
fflush(stdout);
}
fflush(stdout);
}
- usleep(DEFAULT_DATA_AVAILABILITY_WAIT_TIME);
+ usleep(DEFAULT_DATA_AVAILABILITY_WAIT_TIME
_US
);
_MSG(".");
fflush(stdout);
}
_MSG(".");
fflush(stdout);
}
@@
-127,7
+127,7
@@
static int destroy_session(struct lttng_session *session)
do {
status = lttng_destruction_handle_wait_for_completion(handle,
do {
status = lttng_destruction_handle_wait_for_completion(handle,
- DEFAULT_DATA_AVAILABILITY_WAIT_TIME);
+ DEFAULT_DATA_AVAILABILITY_WAIT_TIME
_US / USEC_PER_MSEC
);
switch (status) {
case LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT:
if (!printed_wait_msg) {
switch (status) {
case LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT:
if (!printed_wait_msg) {
@@
-155,12
+155,16
@@
static int destroy_session(struct lttng_session *session)
goto error;
}
if (ret_code != LTTNG_OK) {
goto error;
}
if (ret_code != LTTNG_OK) {
- ret = -
LTTNG_OK
;
+ ret = -
ret_code
;
goto error;
}
status = lttng_destruction_handle_get_rotation_state(handle,
&rotation_state);
goto error;
}
status = lttng_destruction_handle_get_rotation_state(handle,
&rotation_state);
+ if (status != LTTNG_DESTRUCTION_HANDLE_STATUS_OK) {
+ ERR("Failed to get rotation state from destruction handle");
+ goto skip_wait_rotation;
+ }
switch (rotation_state) {
case LTTNG_ROTATION_STATE_NO_ROTATION:
break;
switch (rotation_state) {
case LTTNG_ROTATION_STATE_NO_ROTATION:
break;
@@
-192,6
+196,7
@@
static int destroy_session(struct lttng_session *session)
skip_wait_rotation:
MSG("%sSession \"%s\" destroyed", printed_wait_msg ? "\n" : "",
session->name);
skip_wait_rotation:
MSG("%sSession \"%s\" destroyed", printed_wait_msg ? "\n" : "",
session->name);
+ printed_wait_msg = false;
session_name = get_session_name_quiet();
if (session_name && !strncmp(session->name, session_name, NAME_MAX)) {
session_name = get_session_name_quiet();
if (session_name && !strncmp(session->name, session_name, NAME_MAX)) {
@@
-208,6
+213,9
@@
skip_wait_rotation:
ret = CMD_SUCCESS;
error:
ret = CMD_SUCCESS;
error:
+ if (printed_wait_msg) {
+ MSG("");
+ }
lttng_destruction_handle_destroy(handle);
free(session_name);
return ret;
lttng_destruction_handle_destroy(handle);
free(session_name);
return ret;
@@
-220,23
+228,27
@@
error:
*/
static int destroy_all_sessions(struct lttng_session *sessions, int count)
{
*/
static int destroy_all_sessions(struct lttng_session *sessions, int count)
{
- int i, ret = CMD_SUCCESS;
+ int i;
+ bool error_occurred = false;
+ assert(count >= 0);
if (count == 0) {
MSG("No session found, nothing to do.");
if (count == 0) {
MSG("No session found, nothing to do.");
- } else if (count < 0) {
- ERR("%s", lttng_strerror(ret));
- goto error;
}
for (i = 0; i < count; i++) {
}
for (i = 0; i < count; i++) {
- ret = destroy_session(&sessions[i]);
+ int ret = destroy_session(&sessions[i]);
+
if (ret < 0) {
if (ret < 0) {
- goto error;
+ ERR("%s during the destruction of session \"%s\"",
+ lttng_strerror(ret),
+ sessions[i].name);
+ /* Continue to next session. */
+ error_occurred = true;
}
}
}
}
-error:
- return
ret
;
+
+ return
error_occurred ? CMD_ERROR : CMD_SUCCESS
;
}
/*
}
/*
@@
-342,8
+354,10
@@
int cmd_destroy(int argc, const char **argv)
command_ret = destroy_session(&sessions[i]);
if (command_ret) {
success = 0;
command_ret = destroy_session(&sessions[i]);
if (command_ret) {
success = 0;
+ ERR("%s during the destruction of session \"%s\"",
+ lttng_strerror(command_ret),
+ sessions[i].name);
}
}
-
}
}
}
}
This page took
0.024704 seconds
and
4
git commands to generate.