Typo in ust consumer log message (channek -> channel)
[lttng-tools.git] / src / common / ust-consumer / ust-consumer.c
index 6873273a3aa939ac166c97e939745238cce71ee5..70bd140672e8ddb7aa5d4c3c39835148aee85ec9 100644 (file)
@@ -407,9 +407,7 @@ error_shm_open:
        return -1;
 }
 
-static int open_ust_stream_fd(struct lttng_consumer_channel *channel,
-               struct ustctl_consumer_channel_attr *attr,
-               int cpu)
+static int open_ust_stream_fd(struct lttng_consumer_channel *channel, int cpu)
 {
        char shm_path[PATH_MAX];
        int ret;
@@ -464,7 +462,7 @@ static int create_ust_channel(struct lttng_consumer_channel *channel,
                goto error_alloc;
        }
        for (i = 0; i < nr_stream_fds; i++) {
-               stream_fds[i] = open_ust_stream_fd(channel, attr, i);
+               stream_fds[i] = open_ust_stream_fd(channel, i);
                if (stream_fds[i] < 0) {
                        ret = -1;
                        goto error_open;
@@ -540,11 +538,11 @@ error:
 }
 
 /*
- * Send channel to sessiond.
+ * Send channel to sessiond and relayd if applicable.
  *
  * Return 0 on success or else a negative value.
  */
-static int send_sessiond_channel(int sock,
+static int send_channel_to_sessiond_and_relayd(int sock,
                struct lttng_consumer_channel *channel,
                struct lttng_consumer_local_data *ctx, int *relayd_error)
 {
@@ -564,6 +562,8 @@ static int send_sessiond_channel(int sock,
                        health_code_update();
 
                        /* Try to send the stream to the relayd if one is available. */
+                       DBG("Sending stream %" PRIu64 " of channel \"%s\" to relayd",
+                                       stream->key, channel->name);
                        ret = consumer_send_relayd_stream(stream, stream->chan->pathname);
                        if (ret < 0) {
                                /*
@@ -639,7 +639,7 @@ error:
  * Return 0 on success or else, a negative value is returned and the channel
  * MUST be destroyed by consumer_del_channel().
  */
-static int ask_channel(struct lttng_consumer_local_data *ctx, int sock,
+static int ask_channel(struct lttng_consumer_local_data *ctx,
                struct lttng_consumer_channel *channel,
                struct ustctl_consumer_channel_attr *attr)
 {
@@ -1492,7 +1492,7 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
 
                health_code_update();
 
-               ret = ask_channel(ctx, sock, channel, &attr);
+               ret = ask_channel(ctx, channel, &attr);
                if (ret < 0) {
                        goto end_channel_error;
                }
@@ -1577,8 +1577,9 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
 
                health_code_update();
 
-               /* Send everything to sessiond. */
-               ret = send_sessiond_channel(sock, channel, ctx, &relayd_err);
+               /* Send the channel to sessiond (and relayd, if applicable). */
+               ret = send_channel_to_sessiond_and_relayd(sock, channel, ctx,
+                               &relayd_err);
                if (ret < 0) {
                        if (relayd_err) {
                                /*
@@ -2010,7 +2011,7 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                                msg.u.rotate_rename.relayd_id);
                if (ret < 0) {
                        ERR("Rotate rename failed");
-                       ret_code = LTTCOMM_CONSUMERD_CHAN_NOT_FOUND;
+                       ret_code = LTTCOMM_CONSUMERD_RELAYD_FAIL;
                }
 
                health_code_update();
@@ -2022,6 +2023,37 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                }
                break;
        }
+       case LTTNG_CONSUMER_ROTATE_PENDING_RELAY:
+       {
+               uint32_t pending;
+
+               DBG("Consumer rotate pending on relay for session %" PRIu64,
+                               msg.u.rotate_pending_relay.session_id);
+               pending = lttng_consumer_rotate_pending_relay(
+                               msg.u.rotate_pending_relay.session_id,
+                               msg.u.rotate_pending_relay.relayd_id,
+                               msg.u.rotate_pending_relay.chunk_id);
+               if (pending < 0) {
+                       ERR("Rotate pending relay failed");
+                       ret_code = LTTCOMM_CONSUMERD_RELAYD_FAIL;
+               }
+
+               health_code_update();
+
+               ret = consumer_send_status_msg(sock, ret_code);
+               if (ret < 0) {
+                       /* Somehow, the session daemon is not responding anymore. */
+                       goto end_nosignal;
+               }
+
+               /* Send back returned value to session daemon */
+               ret = lttcomm_send_unix_sock(sock, &pending, sizeof(pending));
+               if (ret < 0) {
+                       PERROR("send data pending ret code");
+                       goto error_fatal;
+               }
+               break;
+       }
        case LTTNG_CONSUMER_MKDIR:
        {
                DBG("Consumer mkdir %s in session %" PRIu64,
@@ -2033,7 +2065,7 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                                msg.u.mkdir.relayd_id);
                if (ret < 0) {
                        ERR("consumer mkdir failed");
-                       ret_code = LTTCOMM_CONSUMERD_CHAN_NOT_FOUND;
+                       ret_code = LTTCOMM_CONSUMERD_RELAYD_FAIL;
                }
 
                health_code_update();
@@ -3086,7 +3118,7 @@ int lttng_ustconsumer_request_metadata(struct lttng_consumer_local_data *ctx,
        request.key = channel->key;
 
        DBG("Sending metadata request to sessiond, session id %" PRIu64
-                       ", per-pid %" PRIu64 ", app UID %u and channek key %" PRIu64,
+                       ", per-pid %" PRIu64 ", app UID %u and channel key %" PRIu64,
                        request.session_id, request.session_id_per_pid, request.uid,
                        request.key);
 
This page took 0.026699 seconds and 5 git commands to generate.