TD-30340
This commit is contained in:
parent
f74fad7e60
commit
5a91039f04
|
@ -62,6 +62,7 @@ typedef struct SRpcHandleInfo {
|
||||||
SRpcConnInfo conn;
|
SRpcConnInfo conn;
|
||||||
int8_t forbiddenIp;
|
int8_t forbiddenIp;
|
||||||
int8_t notFreeAhandle;
|
int8_t notFreeAhandle;
|
||||||
|
int8_t compressed;
|
||||||
} SRpcHandleInfo;
|
} SRpcHandleInfo;
|
||||||
|
|
||||||
typedef struct SRpcMsg {
|
typedef struct SRpcMsg {
|
||||||
|
|
|
@ -76,6 +76,9 @@ typedef struct SCliConn {
|
||||||
|
|
||||||
SDelayTask* task;
|
SDelayTask* task;
|
||||||
|
|
||||||
|
uint32_t clientIp;
|
||||||
|
uint32_t serverIp;
|
||||||
|
|
||||||
char* dstAddr;
|
char* dstAddr;
|
||||||
char src[32];
|
char src[32];
|
||||||
char dst[32];
|
char dst[32];
|
||||||
|
@ -1089,7 +1092,7 @@ void cliSendBatch(SCliConn* pConn) {
|
||||||
}
|
}
|
||||||
pHead->timestamp = taosHton64(taosGetTimestampUs());
|
pHead->timestamp = taosHton64(taosGetTimestampUs());
|
||||||
|
|
||||||
if (pHead->comp == 0) {
|
if (pHead->comp == 0 && pMsg->info.compressed == 0 && pConn->clientIp != pConn->serverIp) {
|
||||||
if (pTransInst->compressSize != -1 && pTransInst->compressSize < pMsg->contLen) {
|
if (pTransInst->compressSize != -1 && pTransInst->compressSize < pMsg->contLen) {
|
||||||
msgLen = transCompressMsg(pMsg->pCont, pMsg->contLen) + sizeof(STransMsgHead);
|
msgLen = transCompressMsg(pMsg->pCont, pMsg->contLen) + sizeof(STransMsgHead);
|
||||||
pHead->msgLen = (int32_t)htonl((uint32_t)msgLen);
|
pHead->msgLen = (int32_t)htonl((uint32_t)msgLen);
|
||||||
|
@ -1167,7 +1170,7 @@ void cliSend(SCliConn* pConn) {
|
||||||
uv_timer_start((uv_timer_t*)pConn->timer, cliReadTimeoutCb, TRANS_READ_TIMEOUT, 0);
|
uv_timer_start((uv_timer_t*)pConn->timer, cliReadTimeoutCb, TRANS_READ_TIMEOUT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pHead->comp == 0) {
|
if (pHead->comp == 0 && pMsg->info.compressed == 0 && pConn->clientIp != pConn->serverIp) {
|
||||||
if (pTransInst->compressSize != -1 && pTransInst->compressSize < pMsg->contLen) {
|
if (pTransInst->compressSize != -1 && pTransInst->compressSize < pMsg->contLen) {
|
||||||
msgLen = transCompressMsg(pMsg->pCont, pMsg->contLen) + sizeof(STransMsgHead);
|
msgLen = transCompressMsg(pMsg->pCont, pMsg->contLen) + sizeof(STransMsgHead);
|
||||||
pHead->msgLen = (int32_t)htonl((uint32_t)msgLen);
|
pHead->msgLen = (int32_t)htonl((uint32_t)msgLen);
|
||||||
|
@ -1398,6 +1401,12 @@ void cliConnCb(uv_connect_t* req, int status) {
|
||||||
uv_tcp_getsockname((uv_tcp_t*)pConn->stream, &sockname, &addrlen);
|
uv_tcp_getsockname((uv_tcp_t*)pConn->stream, &sockname, &addrlen);
|
||||||
transSockInfo2Str(&sockname, pConn->src);
|
transSockInfo2Str(&sockname, pConn->src);
|
||||||
|
|
||||||
|
struct sockaddr_in addr = *(struct sockaddr_in*)&sockname;
|
||||||
|
struct sockaddr_in saddr = *(struct sockaddr_in*)&peername;
|
||||||
|
|
||||||
|
pConn->clientIp = addr.sin_addr.s_addr;
|
||||||
|
pConn->serverIp = saddr.sin_addr.s_addr;
|
||||||
|
|
||||||
tTrace("%s conn %p connect to server successfully", CONN_GET_INST_LABEL(pConn), pConn);
|
tTrace("%s conn %p connect to server successfully", CONN_GET_INST_LABEL(pConn), pConn);
|
||||||
if (pConn->pBatch != NULL) {
|
if (pConn->pBatch != NULL) {
|
||||||
cliSendBatch(pConn);
|
cliSendBatch(pConn);
|
||||||
|
|
|
@ -623,7 +623,8 @@ static int uvPrepareSendData(SSvrMsg* smsg, uv_buf_t* wb) {
|
||||||
int32_t len = transMsgLenFromCont(pMsg->contLen);
|
int32_t len = transMsgLenFromCont(pMsg->contLen);
|
||||||
|
|
||||||
STrans* pTransInst = pConn->pTransInst;
|
STrans* pTransInst = pConn->pTransInst;
|
||||||
if (pTransInst->compressSize != -1 && pTransInst->compressSize < pMsg->contLen) {
|
if (pMsg->info.compressed == 0 && pConn->clientIp != pConn->serverIp && pTransInst->compressSize != -1 &&
|
||||||
|
pTransInst->compressSize < pMsg->contLen) {
|
||||||
len = transCompressMsg(pMsg->pCont, pMsg->contLen) + sizeof(STransMsgHead);
|
len = transCompressMsg(pMsg->pCont, pMsg->contLen) + sizeof(STransMsgHead);
|
||||||
pHead->msgLen = (int32_t)htonl((uint32_t)len);
|
pHead->msgLen = (int32_t)htonl((uint32_t)len);
|
||||||
}
|
}
|
||||||
|
@ -688,11 +689,11 @@ static void destroyAllConn(SWorkThrd* pThrd) {
|
||||||
QUEUE_REMOVE(h);
|
QUEUE_REMOVE(h);
|
||||||
QUEUE_INIT(h);
|
QUEUE_INIT(h);
|
||||||
|
|
||||||
SSvrConn* c = QUEUE_DATA(h, SSvrConn, queue);
|
SSvrConn* c = QUEUE_DATA(h, SSvrConn, queue);
|
||||||
while (T_REF_VAL_GET(c) >= 2) {
|
while (T_REF_VAL_GET(c) >= 2) {
|
||||||
transUnrefSrvHandle(c);
|
transUnrefSrvHandle(c);
|
||||||
}
|
}
|
||||||
transUnrefSrvHandle(c);
|
transUnrefSrvHandle(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void uvWorkerAsyncCb(uv_async_t* handle) {
|
void uvWorkerAsyncCb(uv_async_t* handle) {
|
||||||
|
|
Loading…
Reference in New Issue