From 2b4fb9c9dee0f3ae65ff19ac3c959479522b4f7e Mon Sep 17 00:00:00 2001 From: jtao1735 Date: Sun, 3 May 2020 13:52:25 +0000 Subject: [PATCH 1/8] if resposne is received, and no corresponding connection there, it shall return an error --- src/rpc/src/rpcMain.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index ddda8bfa0b..820720f4c2 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -648,7 +648,13 @@ static SRpcConn *rpcGetConnObj(SRpcInfo *pRpc, int sid, SRecvInfo *pRecv) { if (pConn->user[0] == 0) pConn = NULL; } - if (pConn == NULL) pConn = rpcAllocateServerConn(pRpc, pRecv); + if (pConn == NULL) { + if (pRpc->connType == TAOS_CONN_SERVER) { + pConn = rpcAllocateServerConn(pRpc, pRecv); + } else { + terrno = TSDB_CODE_UNEXPECTED_RESPONSE; + } + } if (pConn) { if (pConn->linkUid != pHead->linkUid) { @@ -1140,7 +1146,7 @@ static void rpcProcessRetryTimer(void *param, void *tmrId) { pConn->retry++; if (pConn->retry < 4) { - tTrace("%s %p, re-send msg:%s to %s:%hud", pRpc->label, pConn, + tTrace("%s %p, re-send msg:%s to %s:%hu", pRpc->label, pConn, taosMsg[pConn->outType], pConn->peerFqdn, pConn->peerPort); rpcSendMsgToPeer(pConn, pConn->pReqMsg, pConn->reqMsgLen); taosTmrReset(rpcProcessRetryTimer, tsRpcTimer, pConn, pRpc->tmrCtrl, &pConn->pTimer); From a2f6d85c9d10edcfbe180c962d649563b622fe1a Mon Sep 17 00:00:00 2001 From: slguan Date: Sun, 3 May 2020 23:57:11 +0800 Subject: [PATCH 2/8] add scripts --- src/common/inc/tglobal.h | 3 +- src/common/src/tglobal.c | 7 +- tests/script/unique/dnode/balance1.sim | 13 +-- tests/script/unique/dnode/balance3.sim | 15 +-- tests/script/unique/dnode/balancex.sim | 62 +++++------- tests/script/unique/dnode/monitor_bug.sim | 9 -- tests/script/unique/dnode/offline1.sim | 51 +++++----- tests/script/unique/dnode/offline2.sim | 60 ++++++------ tests/script/unique/dnode/remove1.sim | 55 ++++------- tests/script/unique/dnode/remove2.sim | 43 +++----- tests/script/unique/dnode/testSuite.sim | 10 +- tests/script/unique/dnode/vnode_clean.sim | 98 ++++++++----------- .../unique/metrics/balance_replica1.sim | 6 +- .../script/unique/stream/metrics_balance.sim | 6 +- tests/script/unique/stream/table_balance.sim | 6 +- tests/script/unique/stream/table_move.sim | 13 +-- 16 files changed, 183 insertions(+), 274 deletions(-) diff --git a/src/common/inc/tglobal.h b/src/common/inc/tglobal.h index 7642475f70..dd0dd230fd 100644 --- a/src/common/inc/tglobal.h +++ b/src/common/inc/tglobal.h @@ -102,8 +102,7 @@ extern int32_t tsMaxMeterConnections; extern int32_t tsMaxVnodeConnections; extern int32_t tsMaxMgmtConnections; -extern int32_t tsBalanceMonitorInterval; -extern int32_t tsBalanceStartInterval; +extern int32_t tsBalanceInterval; extern int32_t tsOfflineThreshold; extern int32_t tsMgmtEqualVnodeNum; diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index eb81070f6d..70b55b9d92 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -119,9 +119,8 @@ int32_t tsMaxMeterConnections = 10000; int32_t tsMaxMgmtConnections = 2000; int32_t tsMaxVnodeConnections = 10000; -int32_t tsBalanceMonitorInterval = 2; // seconds -int32_t tsBalanceStartInterval = 300; // seconds -int32_t tsOfflineThreshold = 864000; // seconds 10days +int32_t tsBalanceInterval = 300; // seconds +int32_t tsOfflineThreshold = 86400*100; // seconds 10days int32_t tsMgmtEqualVnodeNum = 4; int32_t tsEnableHttpModule = 1; @@ -406,7 +405,7 @@ static void doInitGlobalConfig() { taosInitConfigOption(cfg); cfg.option = "balanceInterval"; - cfg.ptr = &tsBalanceStartInterval; + cfg.ptr = &tsBalanceInterval; cfg.valType = TAOS_CFG_VTYPE_INT32; cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; cfg.minValue = 1; diff --git a/tests/script/unique/dnode/balance1.sim b/tests/script/unique/dnode/balance1.sim index 33de448c37..72286aad90 100644 --- a/tests/script/unique/dnode/balance1.sim +++ b/tests/script/unique/dnode/balance1.sim @@ -5,15 +5,10 @@ system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode4 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode4 -c balanceStartInterval -v 10 +system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode3 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode4 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 diff --git a/tests/script/unique/dnode/balance3.sim b/tests/script/unique/dnode/balance3.sim index 14be27878f..53fda28dc4 100644 --- a/tests/script/unique/dnode/balance3.sim +++ b/tests/script/unique/dnode/balance3.sim @@ -176,20 +176,21 @@ if $data2_5 != 3 then endi print ========== step5 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start +sql create dnode $hostname6 +system sh/deploy.sh -n dnode6 -i 6 +system sh/exec_up.sh -n dnode6 -s start $x = 0 show5: $x = $x + 1 sleep 2000 - if $x == 20 then + if $x == 10 then return -1 endi sql show dnodes print dnode1 openVnodes $data2_1 -print dnode2 openVnodes $data2_2 +print dnode6 openVnodes $data2_6 print dnode3 openVnodes $data2_3 print dnode4 openVnodes $data2_4 print dnode5 openVnodes $data2_5 @@ -197,7 +198,7 @@ print dnode5 openVnodes $data2_5 if $data2_1 != 0 then goto show5 endi -if $data2_2 != 2 then +if $data2_6 != 2 then goto show5 endi @@ -216,7 +217,7 @@ show6: sql show dnodes print dnode1 openVnodes $data2_1 -print dnode2 openVnodes $data2_2 +print dnode6 openVnodes $data2_6 print dnode3 openVnodes $data2_3 print dnode4 openVnodes $data2_4 print dnode5 openVnodes $data2_5 @@ -224,7 +225,7 @@ print dnode5 openVnodes $data2_5 if $data2_1 != 0 then goto show6 endi -if $data2_2 != 3 then +if $data2_6 != 3 then goto show6 endi if $data2_3 != null then diff --git a/tests/script/unique/dnode/balancex.sim b/tests/script/unique/dnode/balancex.sim index b251731c41..6c851b5559 100644 --- a/tests/script/unique/dnode/balancex.sim +++ b/tests/script/unique/dnode/balancex.sim @@ -1,25 +1,10 @@ system sh/stop_dnodes.sh - - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode4 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode4 -c balanceStartInterval -v 10 - system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 @@ -52,8 +37,8 @@ sql insert into d2.t2 values(now+4s, 22) sql insert into d2.t2 values(now+5s, 21) sql show dnodes -print dnode1 openVnodes $data3_1 -if $data3_1 != 2 then +print dnode1 openVnodes $data2_1 +if $data2_1 != 2 then return -1 endi @@ -70,12 +55,12 @@ show2: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 0 then goto show2 endi -if $data3_2 != 2 then +if $data2_2 != 2 then goto show2 endi @@ -96,12 +81,12 @@ show3: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 3 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 1 then goto show3 endi -if $data3_2 != 1 then +if $data2_2 != 3 then goto show3 endi @@ -117,16 +102,16 @@ show4: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +if $data2_1 != 0 then goto show4 endi -if $data3_2 != 2 then +if $data2_2 != 2 then goto show4 endi -if $data3_3 != 2 then +if $data2_3 != 2 then goto show4 endi @@ -141,21 +126,24 @@ show5: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -if $data3_1 != 3 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +if $data2_1 != 1 then goto show5 endi -if $data3_2 != null then +if $data2_2 != null then goto show5 endi -if $data3_3 != 1 then +if $data2_3 != 3 then goto show5 endi system sh/exec_up.sh -n dnode2 -s stop -x SIGINT +sql reset query cache +sleep 1000 + print ========== step6 sql select * from d1.t1 order by t desc print $data01 $data11 $data21 $data31 $data41 diff --git a/tests/script/unique/dnode/monitor_bug.sim b/tests/script/unique/dnode/monitor_bug.sim index 1550e379dc..fda7f4ad77 100644 --- a/tests/script/unique/dnode/monitor_bug.sim +++ b/tests/script/unique/dnode/monitor_bug.sim @@ -1,17 +1,8 @@ system sh/stop_dnodes.sh - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 - system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 diff --git a/tests/script/unique/dnode/offline1.sim b/tests/script/unique/dnode/offline1.sim index 9b307d604a..c4751bb66b 100644 --- a/tests/script/unique/dnode/offline1.sim +++ b/tests/script/unique/dnode/offline1.sim @@ -1,25 +1,17 @@ system sh/stop_dnodes.sh - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 - system sh/cfg.sh -n dnode1 -c offlineThreshold -v 10 system sh/cfg.sh -n dnode2 -c offlineThreshold -v 10 system sh/cfg.sh -n dnode3 -c offlineThreshold -v 10 +system sh/cfg.sh -n dnode1 -c balanceInterval -v 5 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 5 +system sh/cfg.sh -n dnode3 -c balanceInterval -v 5 + system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 @@ -36,41 +28,42 @@ system sh/exec_up.sh -n dnode2 -s start sleep 3000 sql show dnodes -if $data4_192.168.0.1 != ready then +print dnode1 $data4_1 +print dnode1 $data4_2 + +if $data4_1 != ready then return -1 endi -if $data4_192.168.0.2 != ready then +if $data4_2 != ready then return -1 endi print ========== step2 system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -sleep 6000 +sleep 8000 sql show dnodes -if $data4_192.168.0.1 != ready then +print dnode1 $data4_1 +print dnode1 $data4_2 + +if $data4_1 != ready then return -1 endi -if $data4_192.168.0.2 != offline then +if $data4_2 != offline then return -1 endi print ========== step3 sleep 10000 -$x = 0 -show4: - $x = $x + 1 - sleep 5000 - if $x == 20 then - return -1 - endi - sql show dnodes -if $data4_192.168.0.1 != ready then - goto show4 +print dnode1 $data4_1 +print dnode1 $data4_2 + +if $data4_1 != ready then + return -1 endi -if $data4_192.168.0.2 != null then - goto show4 +if $data4_2 != null then + return -1 endi diff --git a/tests/script/unique/dnode/offline2.sim b/tests/script/unique/dnode/offline2.sim index d21e418459..b9a3464811 100644 --- a/tests/script/unique/dnode/offline2.sim +++ b/tests/script/unique/dnode/offline2.sim @@ -1,25 +1,17 @@ system sh/stop_dnodes.sh - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 - system sh/cfg.sh -n dnode1 -c offlineThreshold -v 10 system sh/cfg.sh -n dnode2 -c offlineThreshold -v 10 system sh/cfg.sh -n dnode3 -c offlineThreshold -v 10 +system sh/cfg.sh -n dnode1 -c balanceInterval -v 5 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 5 +system sh/cfg.sh -n dnode3 -c balanceInterval -v 5 + system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 @@ -40,39 +32,49 @@ sql create table d1.t1(ts timestamp, i int) sql insert into d1.t1 values(now, 1) sql show dnodes -if $data4_192.168.0.1 != ready then +print dnode1 $data4_1 +print dnode1 $data4_2 + +if $data4_1 != ready then return -1 endi -if $data4_192.168.0.2 != ready then +if $data4_2 != ready then return -1 endi print ========== step2 system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -sleep 5000 +sleep 8000 sql show dnodes -if $data4_192.168.0.1 != ready then +print dnode1 $data4_1 +print dnode1 $data4_2 + +if $data4_1 != ready then return -1 endi -if $data4_192.168.0.2 != offline then +if $data4_2 != offline then return -1 endi print ========== step3 -sleep 18000 +sleep 10000 sql show dnodes -if $data4_192.168.0.1 != ready then +print dnode1 $data4_1 +print dnode1 $data4_2 + +if $data4_1 != ready then return -1 endi -if $data4_192.168.0.2 != offline then +if $data4_2 != dropping then return -1 endi print ========== step4 sql create dnode $hostname3 system sh/exec_up.sh -n dnode3 -s start +system sh/exec_up.sh -n dnode2 -s start sql drop dnode $hostname2 sleep 5000 @@ -80,23 +82,25 @@ $x = 0 show4: $x = $x + 1 sleep 5000 - if $x == 20 then + if $x == 50 then return -1 endi sql show dnodes -if $data4_192.168.0.1 != ready then - return -1 +if $data4_1 != ready then + goto show4 endi -if $data4_192.168.0.2 != null then - return -1 +if $data4_2 != null then + goto show4 endi -if $data4_192.168.0.3 != ready then - return -1 +if $data4_3 != ready then + goto show4 endi print ======================== step5 -sleep 10000 +sql reset query cache +sleep 1000 + sql select * from d1.t1 if $rows != 1 then return -1 diff --git a/tests/script/unique/dnode/remove1.sim b/tests/script/unique/dnode/remove1.sim index 721f912914..c345aa202b 100644 --- a/tests/script/unique/dnode/remove1.sim +++ b/tests/script/unique/dnode/remove1.sim @@ -1,25 +1,10 @@ system sh/stop_dnodes.sh - - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode4 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode4 -c balanceStartInterval -v 10 - system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 @@ -52,8 +37,8 @@ sql insert into d2.t2 values(now+4s, 22) sql insert into d2.t2 values(now+5s, 21) sql show dnodes -print dnode1 openVnodes $data3_1 -if $data3_1 != 2 then +print dnode1 openVnodes $data2_1 +if $data2_1 != 2 then return -1 endi @@ -79,12 +64,12 @@ show2: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 3 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 3 then goto show2 endi -if $data3_2 != 1 then +if $data2_2 != 1 then goto show2 endi @@ -101,8 +86,8 @@ show3: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 $data5_192.168.0.2 +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 print ========== step4 sql create dnode $hostname3 @@ -117,10 +102,10 @@ show4: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -if $data3_2 != null then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +if $data2_2 != null then goto show4 endi @@ -138,20 +123,20 @@ show5: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -print dnode4 openVnodes $data3_4 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +print dnode4 openVnodes $data2_4 +if $data2_1 != 4 then goto show5 endi -if $data3_2 != null then +if $data2_2 != null then goto show5 endi -if $data3_3 != 2 then +if $data2_3 != 2 then goto show5 endi -if $data3_4 != 2 then +if $data2_4 != 2 then goto show5 endi diff --git a/tests/script/unique/dnode/remove2.sim b/tests/script/unique/dnode/remove2.sim index 1e06c17317..909f82e61c 100644 --- a/tests/script/unique/dnode/remove2.sim +++ b/tests/script/unique/dnode/remove2.sim @@ -1,25 +1,10 @@ system sh/stop_dnodes.sh - - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode4 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode4 -c balanceStartInterval -v 10 - system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 @@ -52,8 +37,8 @@ sql insert into d2.t2 values(now+4s, 22) sql insert into d2.t2 values(now+5s, 21) sql show dnodes -print dnode1 openVnodes $data3_1 -if $data3_1 != 2 then +print dnode1 openVnodes $data2_1 +if $data2_1 != 2 then return -1 endi @@ -79,12 +64,12 @@ show2: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 3 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 3 then goto show2 endi -if $data3_2 != 1 then +if $data2_2 != 1 then goto show2 endi @@ -102,8 +87,8 @@ show3: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 $data5_192.168.0.2 +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 $data5_192.168.0.2 print ========== step4 sql create dnode $hostname3 @@ -118,16 +103,16 @@ show4: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -if $data3_2 != null then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +if $data2_2 != null then goto show4 endi -if $data3_1 != 3 then +if $data2_1 != 3 then goto show4 endi -if $data3_3 != 1 then +if $data2_3 != 1 then goto show4 endi diff --git a/tests/script/unique/dnode/testSuite.sim b/tests/script/unique/dnode/testSuite.sim index afb1cafd2c..9921cbf378 100644 --- a/tests/script/unique/dnode/testSuite.sim +++ b/tests/script/unique/dnode/testSuite.sim @@ -4,10 +4,6 @@ run unique/dnode/balance3.sim run unique/dnode/balancex.sim run unique/dnode/offline1.sim run unique/dnode/offline2.sim -run unique/dnode/remove1.sim -run unique/dnode/remove2.sim -run unique/dnode/vnode_clean.sim - - - - +#run unique/dnode/remove1.sim +#run unique/dnode/remove2.sim +#run unique/dnode/vnode_clean.sim diff --git a/tests/script/unique/dnode/vnode_clean.sim b/tests/script/unique/dnode/vnode_clean.sim index 2d55889af1..3693868497 100644 --- a/tests/script/unique/dnode/vnode_clean.sim +++ b/tests/script/unique/dnode/vnode_clean.sim @@ -1,25 +1,10 @@ system sh/stop_dnodes.sh - - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode4 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode4 -c balanceStartInterval -v 10 - system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 @@ -43,8 +28,8 @@ sql insert into d1.t1 values(now+4s, 12) sql insert into d1.t1 values(now+5s, 11) sql show dnodes -print dnode1 openVnodes $data3_1 -if $data3_1 != 3 then +print dnode1 openVnodes $data2_1 +if $data2_1 != 3 then return -1 endi @@ -60,12 +45,12 @@ show2: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 4 then goto show2 endi -if $data3_2 != 3 then +if $data2_2 != 3 then goto show2 endi @@ -81,12 +66,12 @@ sql insert into d2.t2 values(now+5s, 21) $x = 0 sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 4 then return -1 endi -if $data3_2 != 2 then +if $data2_2 != 2 then return -1 endi @@ -101,12 +86,12 @@ show4: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 2 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 2 then goto show4 endi -if $data3_2 != null then +if $data2_2 != null then goto show4 endi if $rows != 1 then @@ -120,8 +105,7 @@ sleep 2000 sql create dnode $hostname2 system sh/deploy.sh -n dnode2 -i 2 system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 system sh/cfg.sh -n dnode2 -c clog -v 1 system sh/exec_up.sh -n dnode2 -s start @@ -134,12 +118,12 @@ show5: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 4 then goto show5 endi -if $data3_2 != 2 then +if $data2_2 != 2 then goto show5 endi @@ -153,12 +137,12 @@ sql insert into d3.t3 values(now+4s, 32) sql insert into d3.t3 values(now+5s, 31) sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 4 then return -1 endi -if $data3_2 != 1 then +if $data2_2 != 1 then return -1 endi @@ -175,16 +159,16 @@ show7: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +if $data2_1 != 4 then goto show7 endi -if $data3_2 != 2 then +if $data2_2 != 2 then goto show7 endi -if $data3_3 != 3 then +if $data2_3 != 3 then goto show7 endi @@ -205,16 +189,16 @@ show8: return -1 endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +if $data2_1 != 4 then goto show8 endi -if $data3_2 != 2 then +if $data2_2 != 2 then goto show8 endi -if $data3_3 != 2 then +if $data2_3 != 2 then goto show8 endi @@ -230,16 +214,16 @@ show9: endi sql show dnodes -print dnode1 openVnodes $data3_1 -print dnode2 openVnodes $data3_2 -print dnode3 openVnodes $data3_3 -if $data3_1 != 4 then +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +print dnode3 openVnodes $data2_3 +if $data2_1 != 4 then goto show9 endi -if $data3_2 != null then +if $data2_2 != null then goto show9 endi -if $data3_3 != 0 then +if $data2_3 != 0 then goto show9 endi diff --git a/tests/script/unique/metrics/balance_replica1.sim b/tests/script/unique/metrics/balance_replica1.sim index 2339c4c36f..d32e647fbe 100644 --- a/tests/script/unique/metrics/balance_replica1.sim +++ b/tests/script/unique/metrics/balance_replica1.sim @@ -8,10 +8,8 @@ system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode1 -c statusInterval -v 1 system sh/cfg.sh -n dnode2 -c statusInterval -v 1 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 +system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c commitLog -v 0 system sh/cfg.sh -n dnode2 -c commitLog -v 0 system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 diff --git a/tests/script/unique/stream/metrics_balance.sim b/tests/script/unique/stream/metrics_balance.sim index 48702d584c..feac15f4db 100644 --- a/tests/script/unique/stream/metrics_balance.sim +++ b/tests/script/unique/stream/metrics_balance.sim @@ -8,10 +8,8 @@ system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode1 -c statusInterval -v 1 system sh/cfg.sh -n dnode2 -c statusInterval -v 1 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 +system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c commitLog -v 0 system sh/cfg.sh -n dnode2 -c commitLog -v 0 system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 diff --git a/tests/script/unique/stream/table_balance.sim b/tests/script/unique/stream/table_balance.sim index 2736b223b6..3eab029529 100644 --- a/tests/script/unique/stream/table_balance.sim +++ b/tests/script/unique/stream/table_balance.sim @@ -8,10 +8,8 @@ system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode1 -c statusInterval -v 1 system sh/cfg.sh -n dnode2 -c statusInterval -v 1 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 +system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c commitLog -v 0 system sh/cfg.sh -n dnode2 -c commitLog -v 0 system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 diff --git a/tests/script/unique/stream/table_move.sim b/tests/script/unique/stream/table_move.sim index b677aa95f0..3096bcc9f9 100644 --- a/tests/script/unique/stream/table_move.sim +++ b/tests/script/unique/stream/table_move.sim @@ -20,15 +20,10 @@ system sh/cfg.sh -n dnode2 -c statusInterval -v 1 system sh/cfg.sh -n dnode3 -c statusInterval -v 1 system sh/cfg.sh -n dnode4 -c statusInterval -v 1 -system sh/cfg.sh -n dnode1 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode2 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode3 -c balanceMonitorInterval -v 1 -system sh/cfg.sh -n dnode4 -c balanceMonitorInterval -v 1 - -system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10 -system sh/cfg.sh -n dnode4 -c balanceStartInterval -v 10 +system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode3 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode4 -c balanceInterval -v 10 system sh/cfg.sh -n dnode1 -c clog -v 1 system sh/cfg.sh -n dnode2 -c clog -v 1 From f041e6c25c069c0f39606bf56c93b7a9e90ee48f Mon Sep 17 00:00:00 2001 From: yifan hao Date: Sun, 3 May 2020 13:10:35 -0600 Subject: [PATCH 3/8] [Trivial] Fix initialization code of TSDB_MOD_MGMT module. * Description This patch fixes enablement of TSDB_MOD_MGMT module, which was incorrectly assign to 'name' variable. * Testing Compile the code. Feel free to suggest more testing that needs to be done. Given that 'tsModule' is zero initialized, I don't think there's any functional difference for this patch. --- src/dnode/src/dnodeModule.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dnode/src/dnodeModule.c b/src/dnode/src/dnodeModule.c index aa53dddbe4..e1aa48d477 100644 --- a/src/dnode/src/dnodeModule.c +++ b/src/dnode/src/dnodeModule.c @@ -44,13 +44,13 @@ static void dnodeUnSetModuleStatus(int32_t module) { } static void dnodeAllocModules() { - tsModule[TSDB_MOD_MGMT].name = false; + tsModule[TSDB_MOD_MGMT].enable = false; tsModule[TSDB_MOD_MGMT].name = "mgmt"; tsModule[TSDB_MOD_MGMT].initFp = mgmtInitSystem; tsModule[TSDB_MOD_MGMT].cleanUpFp = mgmtCleanUpSystem; tsModule[TSDB_MOD_MGMT].startFp = mgmtStartSystem; tsModule[TSDB_MOD_MGMT].stopFp = mgmtStopSystem; - + tsModule[TSDB_MOD_HTTP].enable = (tsEnableHttpModule == 1); tsModule[TSDB_MOD_HTTP].name = "http"; tsModule[TSDB_MOD_HTTP].initFp = httpInitSystem; @@ -60,7 +60,7 @@ static void dnodeAllocModules() { if (tsEnableHttpModule) { dnodeSetModuleStatus(TSDB_MOD_HTTP); } - + tsModule[TSDB_MOD_MONITOR].enable = (tsEnableMonitorModule == 1); tsModule[TSDB_MOD_MONITOR].name = "monitor"; tsModule[TSDB_MOD_MONITOR].initFp = monitorInitSystem; From 9336fd3df1cc848f2b1944c0a8934cf1ef11bab2 Mon Sep 17 00:00:00 2001 From: yifan hao Date: Sun, 3 May 2020 14:46:09 -0600 Subject: [PATCH 4/8] Proper error handling in dnodeOpenVnodes / dnodeCloseVnodes * Description These two functions do not properly handle any error returned from dnodeGetVnodeList(). This patch als changes the signature of dnodeGetVnodeList() to make sure it returns only status, and number of vnodes is passed out through a separate argument. * Testing Before the patch, if I start taosd and then remove 'vnode' folder, the shutdown message would include the following: 05/03 14:26:17.158204 0x140025950476096 DND total vnodes:-2147483296 are all closed This shows the code uses error code as vnode count. After the patch, it outputs proper error message: 05/03 14:30:45.044762 0x139933723604800 DND Get dnode list failed --- src/dnode/src/dnodeMgmt.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 2fa7762c44..fbf1ceea71 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -71,13 +71,13 @@ void dnodeMgmt(SRpcMsg *pMsg) { rpcFreeCont(pMsg->pCont); } -static int32_t dnodeGetVnodeList(int32_t vnodeList[]) { +static int32_t dnodeGetVnodeList(int32_t vnodeList[], int32_t *numOfVnodes) { DIR *dir = opendir(tsVnodeDir); if (dir == NULL) { return TSDB_CODE_NO_WRITE_ACCESS; } - int32_t numOfVnodes = 0; + *numOfVnodes = 0; struct dirent *de = NULL; while ((de = readdir(dir)) != NULL) { if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) continue; @@ -86,21 +86,28 @@ static int32_t dnodeGetVnodeList(int32_t vnodeList[]) { int32_t vnode = atoi(de->d_name + 5); if (vnode == 0) continue; - vnodeList[numOfVnodes] = vnode; - numOfVnodes++; + vnodeList[*numOfVnodes] = vnode; + (*numOfVnodes)++; } } closedir(dir); - return numOfVnodes; + return TSDB_CODE_SUCCESS; } static int32_t dnodeOpenVnodes() { char vnodeDir[TSDB_FILENAME_LEN * 3]; int32_t failed = 0; - int32_t *vnodeList = (int32_t *)malloc(sizeof(int32_t) * TSDB_MAX_VNODES); - int32_t numOfVnodes = dnodeGetVnodeList(vnodeList); + int32_t numOfVnodes; + int32_t status; + + status = dnodeGetVnodeList(vnodeList, &numOfVnodes); + + if (status != TSDB_CODE_SUCCESS) { + dPrint("Get dnode list failed"); + return status; + } for (int32_t i = 0; i < numOfVnodes; ++i) { snprintf(vnodeDir, TSDB_FILENAME_LEN * 3, "%s/vnode%d", tsVnodeDir, vnodeList[i]); @@ -115,7 +122,15 @@ static int32_t dnodeOpenVnodes() { static void dnodeCloseVnodes() { int32_t *vnodeList = (int32_t *)malloc(sizeof(int32_t) * TSDB_MAX_VNODES); - int32_t numOfVnodes = dnodeGetVnodeList(vnodeList); + int32_t numOfVnodes; + int32_t status; + + status = dnodeGetVnodeList(vnodeList, &numOfVnodes); + + if (status != TSDB_CODE_SUCCESS) { + dPrint("Get dnode list failed"); + return; + } for (int32_t i = 0; i < numOfVnodes; ++i) { vnodeClose(vnodeList[i]); @@ -143,7 +158,7 @@ static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *rpcMsg) { for (int32_t j = 0; j < pCreate->cfg.replications; ++j) { pCreate->nodes[j].nodeId = htonl(pCreate->nodes[j].nodeId); } - + void *pVnode = vnodeAccquireVnode(pCreate->cfg.vgId); if (pVnode != NULL) { int32_t code = vnodeAlter(pVnode, pCreate); From 952eec14318b0f5027f5fee1c3db15a5b5ffc0b7 Mon Sep 17 00:00:00 2001 From: yifan hao Date: Sun, 3 May 2020 14:46:09 -0600 Subject: [PATCH 5/8] Proper error handling in dnodeOpenVnodes / dnodeCloseVnodes * Description These two functions do not properly handle any error returned from dnodeGetVnodeList(). This patch als changes the signature of dnodeGetVnodeList() to make sure it returns only status, and number of vnodes is passed out through a separate argument. * Testing Before the patch, if I start taosd and then remove 'vnode' folder, the shutdown message would include the following: 05/03 14:26:17.158204 0x140025950476096 DND total vnodes:-2147483296 are all closed This shows the code uses error code as vnode count. After the patch, it outputs proper error message: 05/03 14:30:45.044762 0x139933723604800 DND Get dnode list failed --- src/dnode/src/dnodeMgmt.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 2fa7762c44..fbf1ceea71 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -71,13 +71,13 @@ void dnodeMgmt(SRpcMsg *pMsg) { rpcFreeCont(pMsg->pCont); } -static int32_t dnodeGetVnodeList(int32_t vnodeList[]) { +static int32_t dnodeGetVnodeList(int32_t vnodeList[], int32_t *numOfVnodes) { DIR *dir = opendir(tsVnodeDir); if (dir == NULL) { return TSDB_CODE_NO_WRITE_ACCESS; } - int32_t numOfVnodes = 0; + *numOfVnodes = 0; struct dirent *de = NULL; while ((de = readdir(dir)) != NULL) { if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) continue; @@ -86,21 +86,28 @@ static int32_t dnodeGetVnodeList(int32_t vnodeList[]) { int32_t vnode = atoi(de->d_name + 5); if (vnode == 0) continue; - vnodeList[numOfVnodes] = vnode; - numOfVnodes++; + vnodeList[*numOfVnodes] = vnode; + (*numOfVnodes)++; } } closedir(dir); - return numOfVnodes; + return TSDB_CODE_SUCCESS; } static int32_t dnodeOpenVnodes() { char vnodeDir[TSDB_FILENAME_LEN * 3]; int32_t failed = 0; - int32_t *vnodeList = (int32_t *)malloc(sizeof(int32_t) * TSDB_MAX_VNODES); - int32_t numOfVnodes = dnodeGetVnodeList(vnodeList); + int32_t numOfVnodes; + int32_t status; + + status = dnodeGetVnodeList(vnodeList, &numOfVnodes); + + if (status != TSDB_CODE_SUCCESS) { + dPrint("Get dnode list failed"); + return status; + } for (int32_t i = 0; i < numOfVnodes; ++i) { snprintf(vnodeDir, TSDB_FILENAME_LEN * 3, "%s/vnode%d", tsVnodeDir, vnodeList[i]); @@ -115,7 +122,15 @@ static int32_t dnodeOpenVnodes() { static void dnodeCloseVnodes() { int32_t *vnodeList = (int32_t *)malloc(sizeof(int32_t) * TSDB_MAX_VNODES); - int32_t numOfVnodes = dnodeGetVnodeList(vnodeList); + int32_t numOfVnodes; + int32_t status; + + status = dnodeGetVnodeList(vnodeList, &numOfVnodes); + + if (status != TSDB_CODE_SUCCESS) { + dPrint("Get dnode list failed"); + return; + } for (int32_t i = 0; i < numOfVnodes; ++i) { vnodeClose(vnodeList[i]); @@ -143,7 +158,7 @@ static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *rpcMsg) { for (int32_t j = 0; j < pCreate->cfg.replications; ++j) { pCreate->nodes[j].nodeId = htonl(pCreate->nodes[j].nodeId); } - + void *pVnode = vnodeAccquireVnode(pCreate->cfg.vgId); if (pVnode != NULL) { int32_t code = vnodeAlter(pVnode, pCreate); From cbf3c61d4bc417814fc7fbd7fc2e3f6a9c313f24 Mon Sep 17 00:00:00 2001 From: jtao1735 Date: Mon, 4 May 2020 01:03:59 +0000 Subject: [PATCH 6/8] rpc shall not check peer IP address, it shall only use FQDN --- src/rpc/src/rpcMain.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index 820720f4c2..b5c2967e47 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -793,14 +793,6 @@ static SRpcConn *rpcProcessMsgHead(SRpcInfo *pRpc, SRecvInfo *pRecv) { sid = pConn->sid; pConn->chandle = pRecv->chandle; - if (pConn->peerIp != pRecv->ip) { - pConn->peerIp = pRecv->ip; - char ipstr[20] = {0}; - tinet_ntoa(ipstr, pRecv->ip); - strcpy(pConn->peerFqdn, ipstr); - } - - if (pRecv->port) pConn->peerPort = pRecv->port; if (pHead->port) pConn->peerPort = htons(pHead->port); terrno = rpcCheckAuthentication(pConn, (char *)pHead, pRecv->msgLen); From a6116dfa3dcf1cf10318d17373de894b1390f9e5 Mon Sep 17 00:00:00 2001 From: jtao1735 Date: Mon, 4 May 2020 01:17:42 +0000 Subject: [PATCH 7/8] delete one more line by accident --- src/rpc/src/rpcMain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index b5c2967e47..2e8c4bbc30 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -793,6 +793,7 @@ static SRpcConn *rpcProcessMsgHead(SRpcInfo *pRpc, SRecvInfo *pRecv) { sid = pConn->sid; pConn->chandle = pRecv->chandle; + if (pRecv->port) pConn->peerPort = pRecv->port; if (pHead->port) pConn->peerPort = htons(pHead->port); terrno = rpcCheckAuthentication(pConn, (char *)pHead, pRecv->msgLen); From 4402e599bdd807ef4da6d354edea9a975b10c194 Mon Sep 17 00:00:00 2001 From: jtao1735 Date: Mon, 4 May 2020 01:38:12 +0000 Subject: [PATCH 8/8] minor changes on UDP --- src/rpc/src/rpcMain.c | 2 +- src/rpc/src/rpcUdp.c | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index 2e8c4bbc30..36d74189f5 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -793,7 +793,7 @@ static SRpcConn *rpcProcessMsgHead(SRpcInfo *pRpc, SRecvInfo *pRecv) { sid = pConn->sid; pConn->chandle = pRecv->chandle; - if (pRecv->port) pConn->peerPort = pRecv->port; + if (pConn->peerPort == 0) pConn->peerPort = pRecv->port; if (pHead->port) pConn->peerPort = htons(pHead->port); terrno = rpcCheckAuthentication(pConn, (char *)pHead, pRecv->msgLen); diff --git a/src/rpc/src/rpcUdp.c b/src/rpc/src/rpcUdp.c index 4a5fc7ba27..8d5721a437 100644 --- a/src/rpc/src/rpcUdp.c +++ b/src/rpc/src/rpcUdp.c @@ -127,7 +127,7 @@ void *taosInitUdpConnection(uint32_t ip, uint16_t port, char *label, int threads unsigned int addrlen = sizeof(sin); if (getsockname(pConn->fd, (struct sockaddr *)&sin, &addrlen) == 0 && sin.sin_family == AF_INET && addrlen == sizeof(sin)) { - pConn->localPort = (int16_t)ntohs(sin.sin_port); + pConn->localPort = (uint16_t)ntohs(sin.sin_port); } strcpy(pConn->label, label); @@ -198,8 +198,7 @@ void *taosOpenUdpConnection(void *shandle, void *thandle, uint32_t ip, uint16_t SUdpConn *pConn = pSet->udpConn + pSet->index; pConn->port = port; - tTrace("%s UDP connection is setup, ip:%x:%hu, local:%x:%d", pConn->label, ip, port, pSet->ip, - ntohs((uint16_t)pConn->localPort)); + tTrace("%s UDP connection is setup, ip:%x:%hu, local:%x:%d", pConn->label, ip, port, pSet->ip, pConn->localPort); return pConn; } @@ -219,16 +218,14 @@ static void *taosRecvUdpData(void *param) { while (1) { dataLen = recvfrom(pConn->fd, pConn->buffer, RPC_MAX_UDP_SIZE, 0, (struct sockaddr *)&sourceAdd, &addLen); - tTrace("%s msg is recv from 0x%x:%hu len:%d", pConn->label, sourceAdd.sin_addr.s_addr, ntohs(sourceAdd.sin_port), - dataLen); + port = ntohs(sourceAdd.sin_port); + tTrace("%s msg is recv from 0x%x:%hu len:%d", pConn->label, sourceAdd.sin_addr.s_addr, port, dataLen); if (dataLen < sizeof(SRpcHead)) { tError("%s recvfrom failed, reason:%s\n", pConn->label, strerror(errno)); continue; } - port = ntohs(sourceAdd.sin_port); - int processedLen = 0, leftLen = 0; int msgLen = 0; int count = 0;