From 4cf04e264e580081ad669540541091f6b3f0e4cc Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sun, 24 Apr 2022 17:54:01 +0800 Subject: [PATCH] fix heartbeat problem --- source/libs/transport/src/transSrv.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/libs/transport/src/transSrv.c b/source/libs/transport/src/transSrv.c index f9b9bb4cda..e0984eb24c 100644 --- a/source/libs/transport/src/transSrv.c +++ b/source/libs/transport/src/transSrv.c @@ -20,6 +20,7 @@ static TdThreadOnce transModuleInit = PTHREAD_ONCE_INIT; static char* notify = "a"; +static int transSrvInst = 0; typedef struct { int notifyCount; // @@ -757,8 +758,6 @@ static void destroyConn(SSrvConn* conn, bool clear) { if (conn == NULL) { return; } - uvReleaseExHandle(conn->refId); - uvRemoveExHandle(conn->refId); transDestroyBuffer(&conn->readBuf); if (clear) { @@ -774,6 +773,9 @@ static void uvDestroyConn(uv_handle_t* handle) { } SWorkThrdObj* thrd = conn->hostThrd; + uvReleaseExHandle(conn->refId); + uvRemoveExHandle(conn->refId); + tDebug("server conn %p destroy", conn); // uv_timer_stop(&conn->pTimer); transQueueDestroy(&conn->srvMsgs); @@ -799,6 +801,7 @@ void* transInitServer(uint32_t ip, uint32_t port, char* label, int numOfThreads, uv_loop_init(srv->loop); taosThreadOnce(&transModuleInit, uvInitExHandleMgt); + transSrvInst++; // uvOpenExHandleMgt(10000); for (int i = 0; i < srv->numOfThreads; i++) { @@ -974,7 +977,10 @@ void transCloseServer(void* arg) { taosMemoryFree(srv); - // uvCloseExHandleMgt(); + transSrvInst--; + if (transSrvInst == 0) { + uvCloseExHandleMgt(); + } } void transRefSrvHandle(void* handle) {