Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
3ba372a8
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3ba372a8
编写于
5月 26, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fix/mnode' of
https://github.com/taosdata/TDengine
into mnode
上级
ddbcaee1
3ecdebc4
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
217 addition
and
141 deletion
+217
-141
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
+7
-0
source/dnode/mnode/impl/src/mndCluster.c
source/dnode/mnode/impl/src/mndCluster.c
+1
-0
source/dnode/mnode/impl/src/mndDnode.c
source/dnode/mnode/impl/src/mndDnode.c
+1
-1
source/dnode/mnode/impl/src/mndMnode.c
source/dnode/mnode/impl/src/mndMnode.c
+1
-1
source/libs/sync/src/syncAppendEntries.c
source/libs/sync/src/syncAppendEntries.c
+21
-17
source/libs/sync/src/syncCommit.c
source/libs/sync/src/syncCommit.c
+4
-1
tests/script/tsim/mnode/basic1.sim
tests/script/tsim/mnode/basic1.sim
+81
-54
tests/script/tsim/mnode/basic2.sim
tests/script/tsim/mnode/basic2.sim
+42
-38
tests/script/tsim/mnode/basic3.sim
tests/script/tsim/mnode/basic3.sim
+59
-29
未找到文件。
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
浏览文件 @
3ba372a8
...
...
@@ -92,6 +92,13 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) {
SEpSet
epSet
=
{
0
};
dmGetMnodeEpSet
(
pMgmt
->
pData
,
&
epSet
);
rpcSendRecv
(
pMgmt
->
msgCb
.
clientRpc
,
&
epSet
,
&
rpcMsg
,
&
rpcRsp
);
if
(
rpcRsp
.
code
!=
0
)
{
dError
(
"failed to send status msg since %s, numOfEps:%d inUse:%d"
,
tstrerror
(
rpcRsp
.
code
),
epSet
.
numOfEps
,
epSet
.
inUse
);
for
(
int32_t
i
=
0
;
i
<
epSet
.
numOfEps
;
++
i
)
{
dDebug
(
"index:%d, mnode ep:%s:%u"
,
i
,
epSet
.
eps
[
i
].
fqdn
,
epSet
.
eps
[
i
].
port
);
}
}
dmProcessStatusRsp
(
pMgmt
,
&
rpcRsp
);
}
...
...
source/dnode/mnode/impl/src/mndCluster.c
浏览文件 @
3ba372a8
...
...
@@ -144,6 +144,7 @@ _OVER:
static
int32_t
mndClusterActionInsert
(
SSdb
*
pSdb
,
SClusterObj
*
pCluster
)
{
mTrace
(
"cluster:%"
PRId64
", perform insert action, row:%p"
,
pCluster
->
id
,
pCluster
);
pSdb
->
pMnode
->
clusterId
=
pCluster
->
id
;
return
0
;
}
...
...
source/dnode/mnode/impl/src/mndDnode.c
浏览文件 @
3ba372a8
...
...
@@ -441,7 +441,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) {
pDnode
->
numOfSupportVnodes
=
statusReq
.
numOfSupportVnodes
;
SStatusRsp
statusRsp
=
{
0
};
statusRsp
.
dnodeVer
=
sdbGetTableVer
(
pMnode
->
pSdb
,
SDB_DNODE
);
statusRsp
.
dnodeVer
=
sdbGetTableVer
(
pMnode
->
pSdb
,
SDB_DNODE
)
+
sdbGetTableVer
(
pMnode
->
pSdb
,
SDB_MNODE
)
;
statusRsp
.
dnodeCfg
.
dnodeId
=
pDnode
->
id
;
statusRsp
.
dnodeCfg
.
clusterId
=
pMnode
->
clusterId
;
statusRsp
.
pDnodeEps
=
taosArrayInit
(
mndGetDnodeSize
(
pMnode
),
sizeof
(
SDnodeEp
));
...
...
source/dnode/mnode/impl/src/mndMnode.c
浏览文件 @
3ba372a8
...
...
@@ -233,7 +233,7 @@ void mndGetMnodeEpSet(SMnode *pMnode, SEpSet *pEpSet) {
if
(
pObj
->
pDnode
==
NULL
)
{
mError
(
"mnode:%d, no corresponding dnode exists"
,
pObj
->
id
);
}
else
{
if
(
pObj
->
state
==
TAOS_SYNC_STATE_LEADER
)
{
if
(
pObj
->
id
==
pMnode
->
selfDnodeId
||
pObj
->
state
==
TAOS_SYNC_STATE_LEADER
)
{
pEpSet
->
inUse
=
pEpSet
->
numOfEps
;
}
addEpIntoEpSet
(
pEpSet
,
pObj
->
pDnode
->
fqdn
,
pObj
->
pDnode
->
port
);
...
...
source/libs/sync/src/syncAppendEntries.c
浏览文件 @
3ba372a8
...
...
@@ -363,28 +363,32 @@ int32_t syncNodeOnAppendEntriesCb(SSyncNode* ths, SyncAppendEntries* pMsg) {
break
;
}
}
ASSERT
(
hit
==
true
);
SReConfigCbMeta
cbMeta
=
{
0
};
bool
isDrop
;
syncNodeUpdateConfig
(
ths
,
&
newSyncCfg
,
&
isDrop
);
// change isStandBy to normal
if
(
!
isDrop
)
{
if
(
ths
->
state
==
TAOS_SYNC_STATE_LEADER
)
{
syncNodeBecomeLeader
(
ths
);
}
else
{
syncNodeBecomeFollower
(
ths
);
// I am in newConfig
if
(
hit
)
{
syncNodeUpdateConfig
(
ths
,
&
newSyncCfg
,
&
isDrop
);
// change isStandBy to normal
if
(
!
isDrop
)
{
if
(
ths
->
state
==
TAOS_SYNC_STATE_LEADER
)
{
syncNodeBecomeLeader
(
ths
);
}
else
{
syncNodeBecomeFollower
(
ths
);
}
}
}
char
*
sOld
=
syncCfg2Str
(
&
oldSyncCfg
);
char
*
sNew
=
syncCfg2Str
(
&
newSyncCfg
);
sInfo
(
"==config change== 0x11 old:%s new:%s isDrop:%d
\n
"
,
sOld
,
sNew
,
isDrop
);
taosMemoryFree
(
sOld
);
taosMemoryFree
(
sNew
);
char
*
sOld
=
syncCfg2Str
(
&
oldSyncCfg
);
char
*
sNew
=
syncCfg2Str
(
&
newSyncCfg
);
sInfo
(
"==config change== 0x11 old:%s new:%s isDrop:%d
\n
"
,
sOld
,
sNew
,
isDrop
);
taosMemoryFree
(
sOld
);
taosMemoryFree
(
sNew
);
}
if
(
ths
->
pFsm
->
FpReConfigCb
!=
NULL
)
{
SReConfigCbMeta
cbMeta
=
{
0
};
// always call FpReConfigCb
if
(
ths
->
pFsm
->
FpReConfigCb
!=
NULL
)
{
cbMeta
.
code
=
0
;
cbMeta
.
currentTerm
=
ths
->
pRaftStore
->
currentTerm
;
cbMeta
.
index
=
pEntry
->
index
;
...
...
source/libs/sync/src/syncCommit.c
浏览文件 @
3ba372a8
...
...
@@ -141,7 +141,10 @@ void syncMaybeAdvanceCommitIndex(SSyncNode* pSyncNode) {
break
;
}
}
ASSERT
(
hit
==
true
);
if
(
pSyncNode
->
state
==
TAOS_SYNC_STATE_LEADER
)
{
ASSERT
(
hit
==
true
);
}
bool
isDrop
;
syncNodeUpdateConfig
(
pSyncNode
,
&
newSyncCfg
,
&
isDrop
);
...
...
tests/script/tsim/mnode/basic1.sim
浏览文件 @
3ba372a8
...
...
@@ -6,15 +6,6 @@ system sh/exec.sh -n dnode2 -s start
sql connect
print =============== show dnodes
sql show dnodes;
if $rows != 1 then
return -1
endi
if $data00 != 1 then
return -1
endi
sql show mnodes;
if $rows != 1 then
return -1
...
...
@@ -30,88 +21,124 @@ endi
print =============== create dnodes
sql create dnode $hostname port 7200
sleep 2000
$x = 0
step1:
$x = $x + 1
sleep 500
if $x == 20 then
return -1
endi
sql show dnodes -x step1
if $data(1)[4] != ready then
goto step1
endi
if $data(2)[4] != ready then
goto step1
endi
print =============== create drop mnode 1
sql_error create mnode on dnode 1
sql_error drop mnode on dnode 1
sql create mnode on dnode 2
$x = 0
step1:
$x = $x + 1
sleep 1000
if $x == 20 then
return -1
endi
sql show mnodes
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
sql show dnodes;
if $rows != 2 then
return -1
endi
if $data00 != 1 then
if $data(1)[0] != 1 then
return -1
endi
if $data10 != 2 then
if $data(1)[2] != LEADER then
return -1
endi
print $data02
if $data02 != 0 then
if $data(2)[0] != 2 then
return -1
endi
if $data12 != 0 then
return -1
if $data(2)[2] != FOLLOWER then
goto step1
endi
if $data04 != ready then
sleep 2000
print ============ drop mnodes
sql drop mnode on dnode 2
sql show mnodes
if $rows != 1 then
return -1
endi
sql_error drop mnode on dnode 2
if $data14 != ready then
return -1
endi
$x = 0
step2:
$x = $x + 1
sleep 1000
if $x == 20 then
return -1
endi
sql show mnodes
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
sql show mnodes;
if $rows != 1 then
if $rows != 2 then
return -1
endi
if $data00 != 1 then
if $data(1)[0] != 1 then
return -1
endi
if $data02 != LEADER then
if $data(1)[2] != LEADER then
return -1
endi
if $data(2)[0] != NULL then
goto step2
endi
if $data(2)[2] != NULL then
goto step2
endi
print =============== create drop mnode 1
sql_error create mnode on dnode 1
sql_error drop mnode on dnode 1
sleep 2000
print =============== create drop mnode
2
print =============== create drop mnode
s
sql create mnode on dnode 2
sql show mnodes
if $rows != 2 then
return -1
endi
sql_error create mnode on dnode 2
sql drop mnode on dnode 2
$x = 0
step3:
$x = $x + 1
sleep 1000
if $x == 20 then
return -1
endi
sql show mnodes
if $rows != 1 then
return -1
endi
sql_error drop mnode on dnode 2
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
print =============== create drop mnodes
sql create mnode on dnode 2
sql show mnodes
if $rows != 2 then
return -1
endi
print =============== restart
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s start
sleep 2000
sql show mnodes
if $rows != 2 then
if $data(1)[0] != 1 then
return -1
endi
if $data(1)[2] != LEADER then
return -1
endi
if $data(2)[0] != 2 then
return -1
endi
if $data(2)[2] != FOLLOWER then
goto step3
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
tests/script/tsim/mnode/basic2.sim
浏览文件 @
3ba372a8
...
...
@@ -21,29 +21,31 @@ endi
print =============== create dnodes
sql create dnode $hostname port 7200
sql create dnode $hostname port 7300
sleep 2000
sql show dnodes;
if $rows != 3 then
return -1
$x = 0
step1:
$x = $x + 1
sleep 500
if $x == 20 then
return -1
endi
sql show dnodes -x step1
if $data(1)[4] != ready then
goto step1
endi
sql show mnodes;
if $rows != 1 then
return -1
endi
if $data00 != 1 then
return -1
endi
if $data02 != LEADER then
return -1
if $data(2)[4] != ready then
goto step1
endi
print =============== create mnode 2
sql create mnode on dnode 2
$x = 0
step1:
$x = $x + 1
sleep 1000
if $x == 20 then
return -1
endi
sql show mnodes
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
...
...
@@ -60,8 +62,8 @@ endi
if $data(2)[0] != 2 then
return -1
endi
if $data(2)[2]
== LEAD
ER then
return -
1
if $data(2)[2]
!= FOLLOW
ER then
goto step
1
endi
print =============== create user
...
...
@@ -71,45 +73,47 @@ if $rows != 2 then
return -1
endi
#
sql create database db
#
sql show databases
#
if $rows != 3 then
#
return -1
#
endi
sql create database db
sql show databases
if $rows != 3 then
return -1
endi
sleep 5000
print =============== restart
system sh/exec.sh -n dnode1 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 100
return
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s start
sql connect
sql show mnodes
if $rows != 2 then
return -1
endi
if $data(1)[0] != 1 then
sql show users
if $rows != 2 then
return -1
endi
if $data(1)[2] != LEADER then
sql show databases
if $rows != 3 then
return -1
endi
sql show users
if $rows != 2 then
sql show dnodes
if $data(1)[4] != ready then
return -1
endi
if $data(2)[4] != ready then
return -1
endi
#sql show databases
#if $rows != 3 then
# return -1
#endi
return
print =============== insert data
sql create table db.stb (ts timestamp, i int) tags (j int)
sql create table db.ctb using db.stb tags(1);
system sh/exec.sh -n dnode1 -s stop
system sh/exec.sh -n dnode2 -s stop
\ No newline at end of file
tests/script/tsim/mnode/basic3.sim
浏览文件 @
3ba372a8
...
...
@@ -15,11 +15,10 @@ $x = 0
step1:
$x = $x + 1
sleep 1000
if $x ==
1
0 then
if $x ==
2
0 then
return -1
endi
sql show dnodes
sql show dnodes -x step1
if $data(1)[4] != ready then
goto step1
endi
...
...
@@ -38,15 +37,10 @@ $x = 0
step2:
$x = $x + 1
sleep 1000
if $x ==
1
0 then
if $x ==
2
0 then
return -1
endi
sql show mnodes
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
print $data(3)[0] $data(3)[1] $data(3)[2]
sql show mnodes -x step2
if $data(1)[2] != LEADER then
goto step2
endi
...
...
@@ -64,44 +58,80 @@ if $rows != 2 then
return -1
endi
# wait mnode2 mnode3 recv data finish
sleep 10000
print =============== step4: stop dnode1
system sh/exec.sh -n dnode1 -s stop
$x = 0
step4:
$x = $x + 1
sleep 1000
if $x == 20 then
return -1
endi
sql show mnodes -x step4
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
print $data(3)[0] $data(3)[1] $data(3)[2]
return
system sh/exec.sh -n dnode2 -s stop
sleep 100
return
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s start
sleep 10000
sql connect
sql show mnodes
sql show users
if $rows != 2 then
return -1
endi
if $data(1)[0] != 1 then
sleep 1000
sql show dnodes
if $data(2)[4] != ready then
return -1
endi
if $data(
1)[2] != LEADER then
if $data(
3)[4] != ready then
return -1
endi
print =============== step5: stop dnode1
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s stop
$x = 0
step5:
$x = $x + 1
sleep 1000
if $x == 20 then
return -1
endi
sql show mnodes -x step5
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
print $data(3)[0] $data(3)[1] $data(3)[2]
sql show users
if $rows != 2 then
return -1
endi
#sql show databases
#if $rows != 3 then
# return -1
#endi
print =============== step6: stop dnode1
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s stop
return
$x = 0
step6:
$x = $x + 1
sleep 1000
if $x == 20 then
return -1
endi
sql show mnodes -x step6
print $data(1)[0] $data(1)[1] $data(1)[2]
print $data(2)[0] $data(2)[1] $data(2)[2]
print $data(3)[0] $data(3)[1] $data(3)[2]
sql show users
if $rows != 2 then
return -1
endi
system sh/exec.sh -n dnode1 -s stop
system sh/exec.sh -n dnode2 -s stop
\ No newline at end of file
system sh/exec.sh -n dnode2 -s stop
system sh/exec.sh -n dnode3 -s stop
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录