Remove unused relay daemon commands
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 3 Jul 2019 20:23:28 +0000 (16:23 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 25 Jul 2019 19:51:46 +0000 (15:51 -0400)
Remove the now-unused rename, mkdir, and rotation pending commands
that are replaced by the trace chunk infrastructure.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-relayd/main.c
src/common/relayd/relayd.c
src/common/relayd/relayd.h
src/common/sessiond-comm/relayd.h

index 282bb8461b1f97a595958cd75504fdf86fb3b322..db021f43fc5b28a9ac0de322752880a3c9a171c9 100644 (file)
@@ -2665,365 +2665,6 @@ end_no_reply:
        return ret;
 }
 
-/*
- * relay_mkdir: Create a folder on the disk.
- */
-static int relay_mkdir(const struct lttcomm_relayd_hdr *recv_hdr,
-               struct relay_connection *conn,
-               const struct lttng_buffer_view *payload)
-{
-       int ret;
-       struct relay_session *session = conn->session;
-       struct lttcomm_relayd_mkdir path_info_header;
-       struct lttcomm_relayd_generic_reply reply;
-       char *path = NULL;
-       size_t header_len;
-       ssize_t send_ret;
-       struct lttng_buffer_view path_view;
-
-       if (!session || !conn->version_check_done) {
-               ERR("Trying to create a directory before version check");
-               ret = -1;
-               goto end_no_session;
-       }
-
-       if (session->major == 2 && session->minor < 11) {
-               /*
-                * This client is not supposed to use this command since
-                * it predates its introduction.
-                */
-               ERR("relay_mkdir command is unsupported before LTTng 2.11");
-               ret = -1;
-               goto end_no_session;
-       }
-
-       header_len = sizeof(path_info_header);
-       if (payload->size < header_len) {
-               ERR("Unexpected payload size in \"relay_mkdir\": expected >= %zu bytes, got %zu bytes",
-                               header_len, payload->size);
-               ret = -1;
-               goto end_no_session;
-       }
-
-       memcpy(&path_info_header, payload->data, header_len);
-
-       path_info_header.length = be32toh(path_info_header.length);
-
-       if (payload->size < header_len + path_info_header.length) {
-               ERR("Unexpected payload size in \"relay_mkdir\" including path: expected >= %zu bytes, got %zu bytes",
-                               header_len + path_info_header.length, payload->size);
-               ret = -1;
-               goto end_no_session;
-       }
-
-       /* Ensure that it fits in local path length. */
-       if (path_info_header.length >= LTTNG_PATH_MAX) {
-               ret = -ENAMETOOLONG;
-               ERR("Path name argument of mkdir command (%" PRIu32 " bytes) exceeds the maximal length allowed (%d bytes)",
-                               path_info_header.length, LTTNG_PATH_MAX);
-               goto end;
-       }
-
-       path_view = lttng_buffer_view_from_view(payload, header_len,
-                       path_info_header.length);
-
-       path = create_output_path(path_view.data);
-       if (!path) {
-               ERR("Failed to create output path");
-               ret = -1;
-               goto end;
-       }
-
-       DBG("MKDIR command has path \"%s\", changed to \"%s\"", path_view.data, path);
-       ret = utils_mkdir_recursive(path, S_IRWXU | S_IRWXG, -1, -1);
-       if (ret < 0) {
-               ERR("relay creating output directory");
-               goto end;
-       }
-
-       ret = 0;
-
-end:
-       memset(&reply, 0, sizeof(reply));
-       if (ret < 0) {
-               reply.ret_code = htobe32(LTTNG_ERR_UNK);
-       } else {
-               reply.ret_code = htobe32(LTTNG_OK);
-       }
-       send_ret = conn->sock->ops->sendmsg(conn->sock, &reply, sizeof(reply), 0);
-       if (send_ret < (ssize_t) sizeof(reply)) {
-               ERR("Failed to send \"mkdir\" command reply (ret = %zd)", send_ret);
-               ret = -1;
-       }
-
-end_no_session:
-       free(path);
-       return ret;
-}
-
-static int validate_rotate_rename_path_length(const char *path_type,
-               uint32_t path_length)
-{
-       int ret = 0;
-
-       if (path_length > LTTNG_PATH_MAX) {
-               ret = -ENAMETOOLONG;
-               ERR("rotate rename \"%s\" path name length (%" PRIu32 " bytes) exceeds the allowed size of %i bytes",
-                               path_type, path_length, LTTNG_PATH_MAX);
-       } else if (path_length == 0) {
-               ret = -EINVAL;
-               ERR("rotate rename \"%s\" path name has an illegal length of 0", path_type);
-       }
-       return ret;
-}
-
-/*
- * relay_rotate_rename: rename the trace folder after a rotation is
- * completed. We are not closing any fd here, just moving the folder, so it
- * works even if data is still in-flight.
- */
-static int relay_rotate_rename(const struct lttcomm_relayd_hdr *recv_hdr,
-               struct relay_connection *conn,
-               const struct lttng_buffer_view *payload)
-{
-       int ret;
-       ssize_t send_ret;
-       struct relay_session *session = conn->session;
-       struct lttcomm_relayd_generic_reply reply;
-       struct lttcomm_relayd_rotate_rename header;
-       size_t header_len;
-       size_t received_paths_size;
-       char *complete_old_path = NULL, *complete_new_path = NULL;
-       struct lttng_buffer_view old_path_view;
-       struct lttng_buffer_view new_path_view;
-
-       if (!session || !conn->version_check_done) {
-               ERR("Trying to rename a trace folder before version check");
-               ret = -1;
-               goto end_no_reply;
-       }
-
-       if (session->major == 2 && session->minor < 11) {
-               ERR("relay_rotate_rename command is unsupported before LTTng 2.11");
-               ret = -1;
-               goto end_no_reply;
-       }
-
-       header_len = sizeof(header);
-       if (payload->size < header_len) {
-               ERR("Unexpected payload size in \"relay_rotate_rename\": expected >= %zu bytes, got %zu bytes",
-                               header_len, payload->size);
-               ret = -1;
-               goto end_no_reply;
-       }
-
-       memcpy(&header, payload->data, header_len);
-
-       header.old_path_length = be32toh(header.old_path_length);
-       header.new_path_length = be32toh(header.new_path_length);
-       received_paths_size = header.old_path_length + header.new_path_length;
-
-       if (payload->size < header_len + received_paths_size) {
-               ERR("Unexpected payload size in \"relay_rotate_rename\" including paths: expected >= %zu bytes, got %zu bytes",
-                               header_len, payload->size);
-               ret = -1;
-               goto end_no_reply;
-       }
-
-       /* Ensure the paths don't exceed their allowed size. */
-       ret = validate_rotate_rename_path_length("old", header.old_path_length);
-       if (ret) {
-               goto end;
-       }
-       ret = validate_rotate_rename_path_length("new", header.new_path_length);
-       if (ret) {
-               goto end;
-       }
-
-       old_path_view = lttng_buffer_view_from_view(payload, header_len,
-                       header.old_path_length);
-       new_path_view = lttng_buffer_view_from_view(payload,
-                       header_len + header.old_path_length,
-                       header.new_path_length);
-
-       /* Validate that both paths received are NULL terminated. */
-       if (old_path_view.data[old_path_view.size - 1] != '\0') {
-               ERR("relay_rotate_rename command's \"old\" path is invalid (not NULL terminated)");
-               ret = -1;
-               goto end;
-       }
-       if (new_path_view.data[new_path_view.size - 1] != '\0') {
-               ERR("relay_rotate_rename command's \"new\" path is invalid (not NULL terminated)");
-               ret = -1;
-               goto end;
-       }
-
-       DBG("ROTATE_RENAME command has argument old path = \"%s\", new_path = \"%s\"",
-                       old_path_view.data, new_path_view.data);
-       complete_old_path = create_output_path(old_path_view.data);
-       if (!complete_old_path) {
-               ERR("Failed to build old output path in rotate_rename command");
-               ret = -1;
-               goto end;
-       }
-
-       complete_new_path = create_output_path(new_path_view.data);
-       if (!complete_new_path) {
-               ERR("Failed to build new output path in rotate_rename command");
-               ret = -1;
-               goto end;
-       }
-       DBG("Expanded ROTATE_RENAME arguments to old path = \"%s\", new_path = \"%s\"",
-                       complete_old_path, complete_new_path);
-
-       ret = utils_mkdir_recursive(complete_new_path, S_IRWXU | S_IRWXG,
-                       -1, -1);
-       if (ret < 0) {
-               ERR("Failed to mkdir() rotate_rename's \"new\" output directory at \"%s\"",
-                               complete_new_path);
-               goto end;
-       }
-
-       /*
-        * If a domain has not yet created its channel, the domain-specific
-        * folder might not exist, but this is not an error.
-        */
-       ret = rename(complete_old_path, complete_new_path);
-       if (ret < 0 && errno != ENOENT) {
-               PERROR("Renaming chunk in rotate_rename command from \"%s\" to \"%s\"",
-                               complete_old_path, complete_new_path);
-               goto end;
-       }
-       ret = 0;
-
-end:
-       memset(&reply, 0, sizeof(reply));
-       if (ret < 0) {
-               reply.ret_code = htobe32(LTTNG_ERR_UNK);
-       } else {
-               reply.ret_code = htobe32(LTTNG_OK);
-       }
-       send_ret = conn->sock->ops->sendmsg(conn->sock, &reply,
-                       sizeof(reply), 0);
-       if (send_ret < sizeof(reply)) {
-               ERR("Failed to send \"rotate rename\" command reply (ret = %zd)",
-                               send_ret);
-               ret = -1;
-       }
-
-end_no_reply:
-       free(complete_old_path);
-       free(complete_new_path);
-       return ret;
-}
-
-/*
- * Check if all the streams in the session have completed the last rotation.
- * The chunk_id value is used to distinguish the cases where a stream was
- * closed on the consumerd before the rotation started but it still active on
- * the relayd, and the case where a stream appeared on the consumerd/relayd
- * after the last rotation started (in that case, it is already writing in the
- * new chunk folder).
- */
-static
-int relay_rotate_pending(const struct lttcomm_relayd_hdr *recv_hdr,
-               struct relay_connection *conn,
-               const struct lttng_buffer_view *payload)
-{
-       struct relay_session *session = conn->session;
-       struct lttcomm_relayd_rotate_pending msg;
-       struct lttcomm_relayd_rotate_pending_reply reply;
-       struct lttng_ht_iter iter;
-       struct relay_stream *stream;
-       int ret = 0;
-       ssize_t send_ret;
-       uint64_t chunk_id;
-        bool rotate_pending = false;
-
-       DBG("Rotate pending command received");
-
-       if (!session || !conn->version_check_done) {
-               ERR("Trying to check for data before version check");
-               ret = -1;
-               goto end_no_reply;
-       }
-
-       if (session->major == 2 && session->minor < 11) {
-               ERR("Unsupported feature before 2.11");
-               ret = -1;
-               goto end_no_reply;
-       }
-
-       if (payload->size < sizeof(msg)) {
-               ERR("Unexpected payload size in \"relay_rotate_pending\": expected >= %zu bytes, got %zu bytes",
-                               sizeof(msg), payload->size);
-               ret = -1;
-               goto end_no_reply;
-       }
-
-       memcpy(&msg, payload->data, sizeof(msg));
-
-       chunk_id = be64toh(msg.chunk_id);
-
-       DBG("Evaluating rotate pending for session \"%s\" and  chunk id %" PRIu64,
-                       session->session_name, chunk_id);
-
-       /*
-        * Iterate over all the streams in the session and check if they are
-        * still waiting for data to perform their rotation.
-        */
-       rcu_read_lock();
-       cds_lfht_for_each_entry(relay_streams_ht->ht, &iter.iter, stream,
-                       node.node) {
-               if (!stream_get(stream)) {
-                       continue;
-               }
-               if (stream->trace->session != session) {
-                       stream_put(stream);
-                       continue;
-               }
-               pthread_mutex_lock(&stream->lock);
-               if (stream->rotate_at_seq_num != -1ULL) {
-                       /* We have not yet performed the rotation. */
-                       rotate_pending = true;
-                       DBG("Stream %" PRIu64 " is still rotating",
-                                       stream->stream_handle);
-               } else if (stream->current_chunk_id.value <= chunk_id) {
-                       /*
-                        * Stream closed on the consumer but still active on the
-                        * relay.
-                        */
-                       rotate_pending = true;
-                       DBG("Stream %" PRIu64 " did not exist on the consumer "
-                                       "when the last rotation started, but is"
-                                       "still waiting for data before getting"
-                                       "closed",
-                                       stream->stream_handle);
-               }
-               pthread_mutex_unlock(&stream->lock);
-               stream_put(stream);
-               if (rotate_pending) {
-                       goto send_reply;
-               }
-       }
-
-send_reply:
-       rcu_read_unlock();
-       memset(&reply, 0, sizeof(reply));
-       reply.generic.ret_code = htobe32((uint32_t) LTTNG_OK);
-       reply.is_pending = (uint8_t) !!rotate_pending;
-       send_ret = conn->sock->ops->sendmsg(conn->sock, &reply,
-                       sizeof(reply), 0);
-       if (send_ret < (ssize_t) sizeof(reply)) {
-               ERR("Failed to send \"rotate pending\" command reply (ret = %zd)",
-                               send_ret);
-               ret = -1;
-       }
-
-end_no_reply:
-       return ret;
-}
-
 #define DBG_CMD(cmd_name, conn) \
                DBG3("Processing \"%s\" command for socket %i", cmd_name, conn->sock->fd);
 
@@ -3090,18 +2731,6 @@ static int relay_process_control_command(struct relay_connection *conn,
                DBG_CMD("RELAYD_ROTATE_STREAM", conn);
                ret = relay_rotate_session_stream(header, conn, payload);
                break;
-       case RELAYD_ROTATE_RENAME:
-               DBG_CMD("RELAYD_ROTATE_RENAME", conn);
-               ret = relay_rotate_rename(header, conn, payload);
-               break;
-       case RELAYD_ROTATE_PENDING:
-               DBG_CMD("RELAYD_ROTATE_PENDING", conn);
-               ret = relay_rotate_pending(header, conn, payload);
-               break;
-       case RELAYD_MKDIR:
-               DBG_CMD("RELAYD_MKDIR", conn);
-               ret = relay_mkdir(header, conn, payload);
-               break;
        case RELAYD_UPDATE_SYNC_INFO:
        default:
                ERR("Received unknown command (%u)", header->cmd);
index fb459699d32a68ddbf93d001df1829d93798181f..ed788b993ffed5e27535e92b3e03323ef05a396b 100644 (file)
@@ -1187,176 +1187,3 @@ error:
        free(msg);
        return ret;
 }
-
-int relayd_rotate_rename(struct lttcomm_relayd_sock *rsock,
-               const char *old_path, const char *new_path)
-{
-       int ret;
-       struct lttcomm_relayd_rotate_rename *msg = NULL;
-       struct lttcomm_relayd_generic_reply reply;
-       size_t old_path_length, new_path_length;
-       size_t msg_length;
-
-       /* Code flow error. Safety net. */
-       assert(rsock);
-
-       DBG("Relayd rename chunk %s to %s", old_path, new_path);
-
-       /* The two paths are sent with a '\0' delimiter between them. */
-       old_path_length = strlen(old_path) + 1;
-       new_path_length = strlen(new_path) + 1;
-
-       msg_length = sizeof(*msg) + old_path_length + new_path_length;
-       msg = zmalloc(msg_length);
-       if (!msg) {
-               PERROR("zmalloc rotate-rename command message");
-               ret = -1;
-               goto error;
-       }
-
-       assert(old_path_length <= UINT32_MAX);
-       msg->old_path_length = htobe32(old_path_length);
-
-       assert(new_path_length <= UINT32_MAX);
-       msg->new_path_length = htobe32(new_path_length);
-
-       strcpy(msg->paths, old_path);
-       strcpy(msg->paths + old_path_length, new_path);
-
-       /* Send command */
-       ret = send_command(rsock, RELAYD_ROTATE_RENAME, (const void *) msg,
-                       msg_length, 0);
-       if (ret < 0) {
-               goto error;
-       }
-
-       /* Receive response */
-       ret = recv_reply(rsock, (void *) &reply, sizeof(reply));
-       if (ret < 0) {
-               goto error;
-       }
-
-       reply.ret_code = be32toh(reply.ret_code);
-
-       /* Return session id or negative ret code. */
-       if (reply.ret_code != LTTNG_OK) {
-               ret = -1;
-               ERR("Relayd rotate rename replied error %d", reply.ret_code);
-       } else {
-               /* Success */
-               ret = 0;
-       }
-
-       DBG("Relayd rotate rename completed successfully");
-
-error:
-       free(msg);
-       return ret;
-}
-
-int relayd_rotate_pending(struct lttcomm_relayd_sock *rsock, uint64_t chunk_id)
-{
-       int ret;
-       struct lttcomm_relayd_rotate_pending msg;
-       struct lttcomm_relayd_rotate_pending_reply reply;
-
-       /* Code flow error. Safety net. */
-       assert(rsock);
-
-       DBG("Querying relayd for rotate pending with chunk_id %" PRIu64,
-                       chunk_id);
-
-       memset(&msg, 0, sizeof(msg));
-       msg.chunk_id = htobe64(chunk_id);
-
-       /* Send command */
-       ret = send_command(rsock, RELAYD_ROTATE_PENDING, (void *) &msg,
-                       sizeof(msg), 0);
-       if (ret < 0) {
-               goto error;
-       }
-
-       /* Receive response */
-       ret = recv_reply(rsock, (void *) &reply, sizeof(reply));
-       if (ret < 0) {
-               goto error;
-       }
-
-       reply.generic.ret_code = be32toh(reply.generic.ret_code);
-
-       /* Return session id or negative ret code. */
-       if (reply.generic.ret_code != LTTNG_OK) {
-               ret = -reply.generic.ret_code;
-               ERR("Relayd rotate pending replied with error %d", ret);
-               goto error;
-       } else {
-               /* No error, just rotate pending state */
-               if (reply.is_pending == 0 || reply.is_pending == 1) {
-                       ret = reply.is_pending;
-                       DBG("Relayd rotate pending command completed successfully with result \"%s\"",
-                                       ret ? "rotation pending" : "rotation NOT pending");
-               } else {
-                       ret = -LTTNG_ERR_UNK;
-               }
-       }
-
-error:
-       return ret;
-}
-
-int relayd_mkdir(struct lttcomm_relayd_sock *rsock, const char *path)
-{
-       int ret;
-       struct lttcomm_relayd_mkdir *msg;
-       struct lttcomm_relayd_generic_reply reply;
-       size_t len;
-
-       /* Code flow error. Safety net. */
-       assert(rsock);
-
-       DBG("Relayd mkdir path %s", path);
-
-       len = strlen(path) + 1;
-       msg = zmalloc(sizeof(msg->length) + len);
-       if (!msg) {
-               PERROR("Alloc mkdir msg");
-               ret = -1;
-               goto error;
-       }
-       msg->length = htobe32((uint32_t) len);
-
-       if (lttng_strncpy(msg->path, path, len)) {
-               ret = -1;
-               goto error;
-       }
-
-       /* Send command */
-       ret = send_command(rsock, RELAYD_MKDIR, (void *) msg,
-                       sizeof(msg->length) + len, 0);
-       if (ret < 0) {
-               goto error;
-       }
-
-       /* Receive response */
-       ret = recv_reply(rsock, (void *) &reply, sizeof(reply));
-       if (ret < 0) {
-               goto error;
-       }
-
-       reply.ret_code = be32toh(reply.ret_code);
-
-       /* Return session id or negative ret code. */
-       if (reply.ret_code != LTTNG_OK) {
-               ret = -1;
-               ERR("Relayd mkdir replied error %d", reply.ret_code);
-       } else {
-               /* Success */
-               ret = 0;
-       }
-
-       DBG("Relayd mkdir completed successfully");
-
-error:
-       free(msg);
-       return ret;
-}
index d4b86f4b23c61d063afe0aad91f3aa59c12ed3b8..ec114020e57e50ad177d3a3e7d364e053c874fbb 100644 (file)
@@ -57,10 +57,5 @@ int relayd_reset_metadata(struct lttcomm_relayd_sock *rsock,
                uint64_t stream_id, uint64_t version);
 int relayd_rotate_stream(struct lttcomm_relayd_sock *sock, uint64_t stream_id,
                uint64_t new_chunk_id, uint64_t seq_num);
-int relayd_rotate_rename(struct lttcomm_relayd_sock *sock,
-               const char *current_path, const char *new_path);
-int relayd_rotate_pending(struct lttcomm_relayd_sock *sock,
-               uint64_t chunk_id);
-int relayd_mkdir(struct lttcomm_relayd_sock *rsock, const char *path);
 
 #endif /* _RELAYD_H */
index cbeb5b5d6fe20535e398753c07b57d5e62c7febf..b5948cc4a10b7a9d3d6838d7fd89ef4a63ed5d53 100644 (file)
@@ -235,27 +235,4 @@ struct lttcomm_relayd_rotate_stream {
        char new_pathname[];
 } LTTNG_PACKED;
 
-struct lttcomm_relayd_rotate_rename {
-       uint32_t old_path_length;
-       uint32_t new_path_length;
-       /* Concatenation of the old and new paths, separated by \0. */
-       char paths[];
-} LTTNG_PACKED;
-
-struct lttcomm_relayd_rotate_pending {
-       uint64_t chunk_id;
-} LTTNG_PACKED;
-
-struct lttcomm_relayd_rotate_pending_reply {
-       struct lttcomm_relayd_generic_reply generic;
-       /* Valid values are [0, 1]. */
-       uint8_t is_pending;
-} LTTNG_PACKED;
-
-struct lttcomm_relayd_mkdir {
-       /* Includes trailing NULL */
-       uint32_t length;
-       char path[];
-} LTTNG_PACKED;
-
 #endif /* _RELAYD_COMM */
This page took 0.033989 seconds and 4 git commands to generate.