From adac1be4fb13f5b97df8385ca60b30ec0bf2bd09 Mon Sep 17 00:00:00 2001 From: doujiang24 Date: Mon, 5 May 2025 21:54:50 +0800 Subject: [PATCH] [Transfer Engine]: make reclaimEndpoint got chance to run. (#322) Signed-off-by: doujiang24 --- .devcontainer/Dockerfile | 8 ++++++++ .../transport/rdma_transport/rdma_context.cpp | 16 +++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 9add570d..f74f07ec 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -25,6 +25,14 @@ RUN apt-get install -y libibverbs-dev \ RUN wget https://go.dev/dl/go1.22.12.linux-amd64.tar.gz \ && tar -C /usr/local -xzf go1.22.12.linux-amd64.tar.gz +RUN git clone https://github.com/alibaba/yalantinglibs.git \ + && cd yalantinglibs \ + && mkdir -p build \ + && cd build \ + && cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_BENCHMARK=OFF -DBUILD_UNIT_TESTS=OFF \ + && cmake --build . -j$(nproc) \ + && cmake --install . + ENV GOPROXY='https://goproxy.cn' ENV PATH=/usr/local/go/bin:$PATH diff --git a/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp b/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp index 548d7dba..45d57be9 100644 --- a/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp +++ b/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp @@ -265,13 +265,11 @@ std::shared_ptr RdmaContext::endpoint( auto endpoint = endpoint_store_->getEndpoint(peer_nic_path); if (endpoint) { return endpoint; - } else { - auto endpoint = endpoint_store_->insertEndpoint(peer_nic_path, this); - return endpoint; } + endpoint = endpoint_store_->insertEndpoint(peer_nic_path, this); endpoint_store_->reclaimEndpoint(); - return nullptr; + return endpoint; } int RdmaContext::disconnectAllEndpoints() { @@ -328,13 +326,13 @@ int RdmaContext::getBestGidIndex(const std::string &device_name, for (i = 0; i < port_attr.gid_tbl_len; i++) { if (ibv_query_gid_ex(context, port, i, &gid_entry, 0)) { - PLOG(ERROR) << "Failed to query GID " << i << " on " - << device_name << "/" << port; - continue; // if gid is invalid ibv_query_gid_ex() will return !0 + PLOG(ERROR) << "Failed to query GID " << i << " on " << device_name + << "/" << port; + continue; // if gid is invalid ibv_query_gid_ex() will return !0 } if ((ipv6_addr_v4mapped((struct in6_addr *)gid_entry.gid.raw) && - gid_entry.gid_type == IBV_GID_TYPE_ROCE_V2) - || gid_entry.gid_type == IBV_GID_TYPE_IB) { + gid_entry.gid_type == IBV_GID_TYPE_ROCE_V2) || + gid_entry.gid_type == IBV_GID_TYPE_IB) { gid_index = i; break; }