Propagate error for clear command
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 3 Apr 2019 21:47:20 +0000 (17:47 -0400)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Wed, 10 Apr 2019 23:36:37 +0000 (19:36 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
src/bin/lttng-relayd/main.c
src/bin/lttng-sessiond/clear.c
src/bin/lttng-sessiond/consumer.c
src/bin/lttng-sessiond/main.c
src/common/consumer/consumer.c
src/common/relayd/relayd.c

index 0e95c948173659496c476823a330af4ab9f37ad2..c9b3c9f549e8bc4e1abe058de5c553d24f157dab 100644 (file)
@@ -1463,6 +1463,8 @@ int relay_clear_session(const struct lttcomm_relayd_hdr *recv_hdr,
        struct relay_session *session = conn->session;
        struct lttcomm_relayd_generic_reply reply;
 
+       memset(&reply, 0, sizeof(reply));
+
        DBG("Clear session received");
 
        if (!session || !conn->version_check_done) {
@@ -1473,17 +1475,17 @@ int relay_clear_session(const struct lttcomm_relayd_hdr *recv_hdr,
 
        if (!opt_allow_clear) {
                ERR("Trying to clear session, but clear is disallowed.");
-               ret = -1;
-               goto end_no_session;
+               ret = 0;
+               reply.ret_code = htobe32(LTTNG_ERR_CLEAR_RELAY_DISALLOW);
+               goto reply;
        }
        ret = session_clear(session);
-
-       memset(&reply, 0, sizeof(reply));
        if (ret < 0) {
                reply.ret_code = htobe32(LTTNG_ERR_UNK);
        } else {
                reply.ret_code = htobe32(LTTNG_OK);
        }
+reply:
        send_ret = conn->sock->ops->sendmsg(conn->sock, &reply,
                        sizeof(struct lttcomm_relayd_generic_reply), 0);
        if (send_ret < (ssize_t) sizeof(reply)) {
index e83818dc081c2fdc97b5ef66cba7e5e5a16e3aa0..8ac77d3b6c976778110329a12720f4cdc38c98d3 100644 (file)
@@ -74,7 +74,7 @@ int cmd_clear_session(struct ltt_session *session)
         */
        ret = consumer_clear_session(session);
        if (ret < 0) {
-               ret = LTTNG_ERR_CLEAR_FAIL_CONSUMER;
+               ret = -ret;
                goto error;
        }
        ret = LTTNG_OK;
index f286df9434e930304486219826b4e54e20138c46..c1e018523d4eed3e50e6dd814ec165c794e638bd 100644 (file)
@@ -147,7 +147,6 @@ int consumer_recv_status_reply(struct consumer_socket *sock)
                ret = 0;
        } else {
                ret = -reply.ret_code;
-               DBG("Consumer ret code %d", ret);
        }
 
 end:
index 670ebc747c74249ced48f060433365b767329942..27c32e4d8b6bc34d9ec64fc754cd20633be8a41a 100644 (file)
@@ -4064,9 +4064,6 @@ error_add_context:
        case LTTNG_CLEAR_SESSION:
        {
                ret = cmd_clear_session(cmd_ctx->session);
-               if (ret != LTTNG_OK) {
-                       goto error;
-               }
                break;
        }
        default:
index 7b8782b2e12e2193ebb4f5a8e9062db10ba6ca57..d46fc30a9f0817c48032e9ad69e5e07ec2f01843 100644 (file)
@@ -4098,7 +4098,7 @@ int lttng_consumer_clear_session(uint64_t session_id)
                        }
                        ret = relayd_clear_session(&relayd->control_sock);
                        if (ret < 0) {
-                               ret = LTTCOMM_CONSUMERD_FATAL;
+                               ret = -ret;
                                goto end;
                        }
                        break;  /* Stop after first match. */
index 9f0cf1e3e56e74038ecc4c61f99e1e9cdbed7431..9e25a25eb80300847742445f6bb02d12a4ba95d0 100644 (file)
@@ -969,17 +969,16 @@ int relayd_clear_session(struct lttcomm_relayd_sock *rsock)
 
        reply.ret_code = be32toh(reply.ret_code);
 
-       /* Return session id or negative ret code. */
+       /* Return 0 if OK, or negative ret code. */
        if (reply.ret_code != LTTNG_OK) {
-               ret = -1;
-               ERR("Relayd clear session replied error %d", reply.ret_code);
+               ret = -reply.ret_code;
+               DBG("Relayd clear session failed");
        } else {
                /* Success */
                ret = 0;
+               DBG("Relayd clear session successful");
        }
 
-       DBG("Relayd clear session successful");
-
 error:
        return ret;
 }
This page took 0.03176 seconds and 5 git commands to generate.