Fix: variable usage for data pending and add comments
[lttng-tools.git] / src / common / ust-consumer / ust-consumer.c
index c0999b613b496446c3c0de472af7f76cad6085d1..5dbd6ba4b4aff3feea113a2092165d13bf5bd160 100644 (file)
@@ -86,7 +86,7 @@ int lttng_ustconsumer_get_produced_snapshot(
                        stream->buf, pos);
        if (ret != 0) {
                errno = -ret;
-               PERROR("kernctl_snapshot_get_produced");
+               PERROR("ustctl_snapshot_get_produced");
        }
 
        return ret;
@@ -109,6 +109,10 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                DBG("Consumer received unexpected message size %zd (expects %zu)",
                        ret, sizeof(msg));
                lttng_consumer_send_error(ctx, LTTCOMM_CONSUMERD_ERROR_RECV_FD);
+               /*
+                * The ret value might 0 meaning an orderly shutdown but this is ok
+                * since the caller handles this.
+                */
                return ret;
        }
        if (msg.cmd_type == LTTNG_CONSUMER_STOP) {
@@ -132,7 +136,7 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                /* Session daemon status message are handled in the following call. */
                ret = consumer_add_relayd_socket(msg.u.relayd_sock.net_index,
                                msg.u.relayd_sock.type, ctx, sock, consumer_sockpoll,
-                               &msg.u.relayd_sock.sock);
+                               &msg.u.relayd_sock.sock, msg.u.relayd_sock.session_id);
                goto end_nosignal;
        }
        case LTTNG_CONSUMER_ADD_CHANNEL:
@@ -159,6 +163,10 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                if (ret != sizeof(fds)) {
                        lttng_consumer_send_error(ctx, LTTCOMM_CONSUMERD_ERROR_RECV_FD);
                        rcu_read_unlock();
+                       /*
+                        * The ret value might 0 meaning an orderly shutdown but this is ok
+                        * since the caller handles this.
+                        */
                        return ret;
                }
 
@@ -222,6 +230,10 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                if (ret != sizeof(fds)) {
                        lttng_consumer_send_error(ctx, LTTCOMM_CONSUMERD_ERROR_RECV_FD);
                        rcu_read_unlock();
+                       /*
+                        * The ret value might 0 meaning an orderly shutdown but this is ok
+                        * since the caller handles this.
+                        */
                        return ret;
                }
 
@@ -333,7 +345,7 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                /* Get relayd reference if exists. */
                relayd = consumer_find_relayd(index);
                if (relayd == NULL) {
-                       ERR("Unable to find relayd %" PRIu64, index);
+                       DBG("Unable to find relayd %" PRIu64, index);
                        ret_code = LTTNG_ERR_NO_CONSUMER;
                }
 
@@ -366,17 +378,18 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
        }
        case LTTNG_CONSUMER_DATA_PENDING:
        {
-               int32_t ret;
+               int ret, is_data_pending;
                uint64_t id = msg.u.data_pending.session_id;
 
                DBG("UST consumer data pending command for id %" PRIu64, id);
 
-               ret = consumer_data_pending(id);
+               is_data_pending = consumer_data_pending(id);
 
                /* Send back returned value to session daemon */
-               ret = lttcomm_send_unix_sock(sock, &ret, sizeof(ret));
+               ret = lttcomm_send_unix_sock(sock, &is_data_pending,
+                               sizeof(is_data_pending));
                if (ret < 0) {
-                       PERROR("send data pending ret code");
+                       DBG("Error when sending the data pending ret code: %d", ret);
                }
 
                /*
@@ -484,13 +497,14 @@ int lttng_ustconsumer_read_subbuffer(struct lttng_consumer_stream *stream,
        struct lttng_ust_shm_handle *handle;
        struct lttng_ust_lib_ring_buffer *buf;
        char dummy;
-       ssize_t readlen;
 
        DBG("In read_subbuffer (wait_fd: %d, stream key: %d)",
                stream->wait_fd, stream->key);
 
        /* We can consume the 1 byte written into the wait_fd by UST */
        if (!stream->hangup_flush_done) {
+               ssize_t readlen;
+
                do {
                        readlen = read(stream->wait_fd, &dummy, 1);
                } while (readlen == -1 && errno == EINTR);
@@ -539,9 +553,13 @@ int lttng_ustconsumer_read_subbuffer(struct lttng_consumer_stream *stream,
                        (ret != len && stream->net_seq_idx == -1)) {
                /*
                 * Display the error but continue processing to try to release the
-                * subbuffer
+                * subbuffer. This is a DBG statement since any unexpected kill or
+                * signal, the application gets unregistered, relayd gets closed or
+                * anything that affects the buffer lifetime will trigger this error.
+                * So, for the sake of the user, don't print this error since it can
+                * happen and it is OK with the code flow.
                 */
-               ERR("Error writing to tracefile "
+               DBG("Error writing to tracefile "
                                "(ret: %zd != len: %lu != subbuf_size: %lu)",
                                ret, len, subbuf_size);
        }
This page took 0.025946 seconds and 5 git commands to generate.