X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Fust-consumer%2Fust-consumer.c;h=5dbd6ba4b4aff3feea113a2092165d13bf5bd160;hb=f789c65addd72f6f2ac0d3c7ca60a952669d5952;hp=c0999b613b496446c3c0de472af7f76cad6085d1;hpb=f50f23d9f80ed9fae7fe5c49aee65e813e0031c8;p=lttng-tools.git diff --git a/src/common/ust-consumer/ust-consumer.c b/src/common/ust-consumer/ust-consumer.c index c0999b613..5dbd6ba4b 100644 --- a/src/common/ust-consumer/ust-consumer.c +++ b/src/common/ust-consumer/ust-consumer.c @@ -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); }