diff --git a/cpp/wedpr-protocol/protobuf/src/NodeInfoImpl.cpp b/cpp/wedpr-protocol/protobuf/src/NodeInfoImpl.cpp index 131a7eda..f7deddf7 100644 --- a/cpp/wedpr-protocol/protobuf/src/NodeInfoImpl.cpp +++ b/cpp/wedpr-protocol/protobuf/src/NodeInfoImpl.cpp @@ -32,6 +32,7 @@ void NodeInfoImpl::encode(bcos::bytes& data) const void NodeInfoImpl::encodeFields() const { bcos::ReadGuard l(x_components); + m_rawNodeInfo->clear_components(); // set the components for (auto const& component : m_components) { diff --git a/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/GatewayNodeInfoImpl.cpp b/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/GatewayNodeInfoImpl.cpp index c6bc0d95..95721ec7 100644 --- a/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/GatewayNodeInfoImpl.cpp +++ b/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/GatewayNodeInfoImpl.cpp @@ -117,6 +117,12 @@ bool GatewayNodeInfoImpl::tryAddNodeInfo(INodeInfo::Ptr const& info, bool& updat GATEWAY_LOG(INFO) << LOG_DESC("tryAddNodeInfo, update the components, updated nodeInfo") << printNodeInfo(existedNodeInfo); } + // the existed node re-encode + if (updated) + { + auto nodeInfo = std::dynamic_pointer_cast(existedNodeInfo); + nodeInfo->encodeFields(); + } return false; } { diff --git a/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/LocalRouter.cpp b/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/LocalRouter.cpp index 9e09e4b2..794cca9f 100644 --- a/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/LocalRouter.cpp +++ b/cpp/wedpr-transport/ppc-gateway/ppc-gateway/gateway/router/LocalRouter.cpp @@ -29,9 +29,10 @@ using namespace ppc::gateway; bool LocalRouter::registerNodeInfo(ppc::protocol::INodeInfo::Ptr nodeInfo, std::function onUnHealthHandler, bool removeHandlerOnUnhealth) { - LOCAL_ROUTER_LOG(DEBUG) << LOG_DESC("registerNodeInfo") << printNodeInfo(nodeInfo); bool updated = false; auto ret = m_routerInfo->tryAddNodeInfo(nodeInfo, updated); + LOCAL_ROUTER_LOG(DEBUG) << LOG_DESC("registerNodeInfo") << printNodeInfo(nodeInfo) + << LOG_KV("updated", updated); if (ret) { // only create the frontClient when update diff --git a/cpp/wedpr-transport/ppc-gateway/test/unittests/GatewayNodeInfoImplTest.cpp b/cpp/wedpr-transport/ppc-gateway/test/unittests/GatewayNodeInfoImplTest.cpp index 0a2f80e4..0b094f6f 100644 --- a/cpp/wedpr-transport/ppc-gateway/test/unittests/GatewayNodeInfoImplTest.cpp +++ b/cpp/wedpr-transport/ppc-gateway/test/unittests/GatewayNodeInfoImplTest.cpp @@ -77,7 +77,8 @@ void registerNode(GatewayNodeInfoImpl::Ptr gatewayNodeInfo, int nodeSize) auto populatedNodeID = nodeID + std::to_string(i); auto nodeInfo = fakeNodeInfo(nodeInfoFactory, populatedNodeID, endPoint, components); testNodeInfoEncodeDecode(nodeInfoFactory, nodeInfo); - gatewayNodeInfo->tryAddNodeInfo(nodeInfo); + bool updated = false; + gatewayNodeInfo->tryAddNodeInfo(nodeInfo, updated); } } diff --git a/docker-files/cpp/Dockerfile b/docker-files/cpp/Dockerfile index 144d02ec..e83deee6 100644 --- a/docker-files/cpp/Dockerfile +++ b/docker-files/cpp/Dockerfile @@ -67,7 +67,7 @@ CMD ["--version"] FROM fiscoorg/wedpr-mpc-base-ubuntu:v3.0.0 as wedpr-mpc-service LABEL maintainer=service@webank.com -RUN apt-get -q update && apt-get install -qy --no-install-recommends vim libkrb5-dev python3.11 python3-pip python3-dev telnet tcpdump \ +RUN apt-get -q update && apt-get install -qy --no-install-recommends vim libkrb5-dev python3.11 python3-pip python3-dev telnet tcpdump net-tools\ && rm -f /usr/bin/python && ln -s /usr/bin/python3.11 /usr/bin/python \ && rm -f /usr/bin/python3 && ln -s /usr/bin/python3.11 /usr/bin/python3 \ && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \