Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
780c58e2
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
780c58e2
编写于
10月 19, 2022
作者:
S
Shengliang Guan
提交者:
GitHub
10月 19, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17492 from taosdata/enh/TD-19650
enh: show the restore status of vnode when show vgroups
上级
30b60002
4968b11a
变更
25
隐藏空白更改
内联
并排
Showing
25 changed file
with
94 addition
and
73 deletion
+94
-73
include/common/tmsg.h
include/common/tmsg.h
+4
-2
source/common/src/tmsg.c
source/common/src/tmsg.c
+8
-4
source/dnode/mnode/impl/inc/mndDef.h
source/dnode/mnode/impl/inc/mndDef.h
+4
-2
source/dnode/mnode/impl/src/mndDb.c
source/dnode/mnode/impl/src/mndDb.c
+2
-2
source/dnode/mnode/impl/src/mndDnode.c
source/dnode/mnode/impl/src/mndDnode.c
+9
-6
source/dnode/mnode/impl/src/mndMain.c
source/dnode/mnode/impl/src/mndMain.c
+6
-5
source/dnode/mnode/impl/src/mndMnode.c
source/dnode/mnode/impl/src/mndMnode.c
+7
-7
source/dnode/mnode/impl/src/mndVgroup.c
source/dnode/mnode/impl/src/mndVgroup.c
+14
-10
source/dnode/vnode/src/vnd/vnodeQuery.c
source/dnode/vnode/src/vnd/vnodeQuery.c
+1
-0
source/libs/monitor/src/monMsg.c
source/libs/monitor/src/monMsg.c
+8
-4
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_createDb_replica1.py
...t/6-cluster/vnode/4dnode1mnode_basic_createDb_replica1.py
+3
-3
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas.py
...-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas_querys.py
...r/vnode/4dnode1mnode_basic_replica1_insertdatas_querys.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas.py
...-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys.py
...r/vnode/4dnode1mnode_basic_replica3_insertdatas_querys.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_all_vnode.py
...sic_replica3_insertdatas_querys_loop_restart_all_vnode.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_follower.py
...asic_replica3_insertdatas_querys_loop_restart_follower.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_leader.py
..._basic_replica3_insertdatas_querys_loop_restart_leader.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_sync.py
...de1mnode_basic_replica3_insertdatas_stop_follower_sync.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_unsync.py
...1mnode_basic_replica3_insertdatas_stop_follower_unsync.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_unsync_force_stop.py
...c_replica3_insertdatas_stop_follower_unsync_force_stop.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_leader_forece_stop.py
...ode_basic_replica3_insertdatas_stop_leader_forece_stop.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_mnode3_insertdatas_querys.py
.../4dnode1mnode_basic_replica3_mnode3_insertdatas_querys.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py
...st/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py
+2
-2
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups_stopOne.py
...ster/vnode/4dnode1mnode_basic_replica3_vgroups_stopOne.py
+2
-2
未找到文件。
include/common/tmsg.h
浏览文件 @
780c58e2
...
...
@@ -1074,7 +1074,8 @@ typedef struct {
typedef
struct
{
int32_t
vgId
;
int32_t
syncState
;
int8_t
syncState
;
int8_t
syncRestore
;
int64_t
cacheUsage
;
int64_t
numOfTables
;
int64_t
numOfTimeSeries
;
...
...
@@ -1089,7 +1090,8 @@ typedef struct {
}
SVnodeLoad
;
typedef
struct
{
int32_t
syncState
;
int8_t
syncState
;
int8_t
syncRestore
;
}
SMnodeLoad
;
typedef
struct
{
...
...
source/common/src/tmsg.c
浏览文件 @
780c58e2
...
...
@@ -993,7 +993,8 @@ int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
for
(
int32_t
i
=
0
;
i
<
vlen
;
++
i
)
{
SVnodeLoad
*
pload
=
taosArrayGet
(
pReq
->
pVloads
,
i
);
if
(
tEncodeI32
(
&
encoder
,
pload
->
vgId
)
<
0
)
return
-
1
;
if
(
tEncodeI32
(
&
encoder
,
pload
->
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pload
->
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pload
->
syncRestore
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pload
->
cacheUsage
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pload
->
numOfTables
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pload
->
numOfTimeSeries
)
<
0
)
return
-
1
;
...
...
@@ -1003,7 +1004,8 @@ int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
}
// mnode loads
if
(
tEncodeI32
(
&
encoder
,
pReq
->
mload
.
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pReq
->
mload
.
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pReq
->
mload
.
syncRestore
)
<
0
)
return
-
1
;
if
(
tEncodeI32
(
&
encoder
,
pReq
->
qload
.
dnodeId
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pReq
->
qload
.
numOfProcessedQuery
)
<
0
)
return
-
1
;
...
...
@@ -1063,7 +1065,8 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
for
(
int32_t
i
=
0
;
i
<
vlen
;
++
i
)
{
SVnodeLoad
vload
=
{
0
};
if
(
tDecodeI32
(
&
decoder
,
&
vload
.
vgId
)
<
0
)
return
-
1
;
if
(
tDecodeI32
(
&
decoder
,
&
vload
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
vload
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
vload
.
syncRestore
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
vload
.
cacheUsage
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
vload
.
numOfTables
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
vload
.
numOfTimeSeries
)
<
0
)
return
-
1
;
...
...
@@ -1076,7 +1079,8 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
}
}
if
(
tDecodeI32
(
&
decoder
,
&
pReq
->
mload
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
pReq
->
mload
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
pReq
->
mload
.
syncRestore
)
<
0
)
return
-
1
;
if
(
tDecodeI32
(
&
decoder
,
&
pReq
->
qload
.
dnodeId
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
pReq
->
qload
.
numOfProcessedQuery
)
<
0
)
return
-
1
;
...
...
source/dnode/mnode/impl/inc/mndDef.h
浏览文件 @
780c58e2
...
...
@@ -204,7 +204,8 @@ typedef struct {
int32_t
id
;
int64_t
createdTime
;
int64_t
updateTime
;
ESyncState
state
;
ESyncState
syncState
;
bool
syncRestore
;
int64_t
stateStartTime
;
SDnodeObj
*
pDnode
;
}
SMnodeObj
;
...
...
@@ -324,7 +325,8 @@ typedef struct {
typedef
struct
{
int32_t
dnodeId
;
ESyncState
role
;
ESyncState
syncState
;
bool
syncRestore
;
}
SVnodeGid
;
typedef
struct
{
...
...
source/dnode/mnode/impl/src/mndDb.c
浏览文件 @
780c58e2
...
...
@@ -1157,7 +1157,7 @@ static void mndBuildDBVgroupInfo(SDbObj *pDb, SMnode *pMnode, SArray *pVgList) {
pEp
->
port
=
pDnode
->
port
;
}
mndReleaseDnode
(
pMnode
,
pDnode
);
if
(
pVgid
->
rol
e
==
TAOS_SYNC_STATE_LEADER
)
{
if
(
pVgid
->
syncStat
e
==
TAOS_SYNC_STATE_LEADER
)
{
vgInfo
.
epSet
.
inUse
=
gid
;
}
}
...
...
@@ -1553,7 +1553,7 @@ bool mndIsDbReady(SMnode *pMnode, SDbObj *pDb) {
if
(
pVgroup
->
dbUid
==
pDb
->
uid
&&
pVgroup
->
replica
>
1
)
{
bool
hasLeader
=
false
;
for
(
int32_t
i
=
0
;
i
<
pVgroup
->
replica
;
++
i
)
{
if
(
pVgroup
->
vnodeGid
[
i
].
rol
e
==
TAOS_SYNC_STATE_LEADER
)
{
if
(
pVgroup
->
vnodeGid
[
i
].
syncStat
e
==
TAOS_SYNC_STATE_LEADER
)
{
hasLeader
=
true
;
}
}
...
...
source/dnode/mnode/impl/src/mndDnode.c
浏览文件 @
780c58e2
...
...
@@ -361,10 +361,12 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) {
bool
roleChanged
=
false
;
for
(
int32_t
vg
=
0
;
vg
<
pVgroup
->
replica
;
++
vg
)
{
if
(
pVgroup
->
vnodeGid
[
vg
].
dnodeId
==
statusReq
.
dnodeId
)
{
if
(
pVgroup
->
vnodeGid
[
vg
].
role
!=
pVload
->
syncState
)
{
if
(
pVgroup
->
vnodeGid
[
vg
].
syncState
!=
pVload
->
syncState
||
pVgroup
->
vnodeGid
[
vg
].
syncRestore
!=
pVload
->
syncRestore
)
{
pVgroup
->
vnodeGid
[
vg
].
syncState
=
pVload
->
syncState
;
pVgroup
->
vnodeGid
[
vg
].
syncRestore
=
pVload
->
syncRestore
;
roleChanged
=
true
;
}
pVgroup
->
vnodeGid
[
vg
].
role
=
pVload
->
syncState
;
break
;
}
}
...
...
@@ -378,10 +380,11 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) {
SMnodeObj
*
pObj
=
mndAcquireMnode
(
pMnode
,
pDnode
->
id
);
if
(
pObj
!=
NULL
)
{
if
(
pObj
->
state
!=
statusReq
.
mload
.
syncState
)
{
mInfo
(
"dnode:%d, mnode syncstate from %s to %s"
,
pObj
->
id
,
syncStr
(
pObj
->
state
),
syncStr
(
statusReq
.
mload
.
syncState
));
pObj
->
state
=
statusReq
.
mload
.
syncState
;
if
(
pObj
->
syncState
!=
statusReq
.
mload
.
syncState
||
pObj
->
syncRestore
!=
statusReq
.
mload
.
syncRestore
)
{
mInfo
(
"dnode:%d, mnode syncState from %s to %s, restoreState from %d to %d"
,
pObj
->
id
,
syncStr
(
pObj
->
syncState
),
syncStr
(
statusReq
.
mload
.
syncState
),
pObj
->
syncRestore
,
statusReq
.
mload
.
syncRestore
);
pObj
->
syncState
=
statusReq
.
mload
.
syncState
;
pObj
->
syncRestore
=
statusReq
.
mload
.
syncRestore
;
pObj
->
stateStartTime
=
taosGetTimestampMs
();
}
mndReleaseMnode
(
pMnode
,
pObj
);
...
...
source/dnode/mnode/impl/src/mndMain.c
浏览文件 @
780c58e2
...
...
@@ -765,7 +765,7 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr
// pClusterInfo->master_uptime = (ms - pObj->stateStartTime) / (86400000.0f);
tstrncpy
(
desc
.
role
,
syncStr
(
TAOS_SYNC_STATE_LEADER
),
sizeof
(
desc
.
role
));
}
else
{
tstrncpy
(
desc
.
role
,
syncStr
(
pObj
->
state
),
sizeof
(
desc
.
role
));
tstrncpy
(
desc
.
role
,
syncStr
(
pObj
->
s
yncS
tate
),
sizeof
(
desc
.
role
));
}
taosArrayPush
(
pClusterInfo
->
mnodes
,
&
desc
);
sdbRelease
(
pSdb
,
pObj
);
...
...
@@ -795,12 +795,12 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr
SVnodeGid
*
pVgid
=
&
pVgroup
->
vnodeGid
[
i
];
SMonVnodeDesc
*
pVnDesc
=
&
desc
.
vnodes
[
i
];
pVnDesc
->
dnode_id
=
pVgid
->
dnodeId
;
tstrncpy
(
pVnDesc
->
vnode_role
,
syncStr
(
pVgid
->
rol
e
),
sizeof
(
pVnDesc
->
vnode_role
));
if
(
pVgid
->
rol
e
==
TAOS_SYNC_STATE_LEADER
)
{
tstrncpy
(
pVnDesc
->
vnode_role
,
syncStr
(
pVgid
->
syncStat
e
),
sizeof
(
pVnDesc
->
vnode_role
));
if
(
pVgid
->
syncStat
e
==
TAOS_SYNC_STATE_LEADER
)
{
tstrncpy
(
desc
.
status
,
"ready"
,
sizeof
(
desc
.
status
));
pClusterInfo
->
vgroups_alive
++
;
}
if
(
pVgid
->
rol
e
!=
TAOS_SYNC_STATE_ERROR
)
{
if
(
pVgid
->
syncStat
e
!=
TAOS_SYNC_STATE_ERROR
)
{
pClusterInfo
->
vnodes_alive
++
;
}
pClusterInfo
->
vnodes_total
++
;
...
...
@@ -845,7 +845,8 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr
int32_t
mndGetLoad
(
SMnode
*
pMnode
,
SMnodeLoad
*
pLoad
)
{
pLoad
->
syncState
=
syncGetMyRole
(
pMnode
->
syncMgmt
.
sync
);
mTrace
(
"mnode current syncstate is %s"
,
syncStr
(
pLoad
->
syncState
));
pLoad
->
syncRestore
=
pMnode
->
restored
;
mTrace
(
"mnode current syncState is %s, syncRestore:%d"
,
syncStr
(
pLoad
->
syncState
),
pLoad
->
syncRestore
);
return
0
;
}
...
...
source/dnode/mnode/impl/src/mndMnode.c
浏览文件 @
780c58e2
...
...
@@ -187,7 +187,7 @@ static int32_t mndMnodeActionInsert(SSdb *pSdb, SMnodeObj *pObj) {
return
-
1
;
}
pObj
->
state
=
TAOS_SYNC_STATE_ERROR
;
pObj
->
s
yncS
tate
=
TAOS_SYNC_STATE_ERROR
;
mndReloadSyncConfig
(
pSdb
->
pMnode
);
return
0
;
}
...
...
@@ -604,19 +604,19 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
colDataAppend
(
pColInfo
,
numOfRows
,
b1
,
false
);
c
onst
char
*
roles
=
"offline"
;
c
har
role
[
20
]
=
"offline"
;
if
(
pObj
->
id
==
pMnode
->
selfDnodeId
)
{
roles
=
syncStr
(
TAOS_SYNC_STATE_LEADER
);
snprintf
(
role
,
sizeof
(
role
),
"%s%s"
,
syncStr
(
TAOS_SYNC_STATE_LEADER
),
pMnode
->
restored
?
""
:
"*"
);
}
if
(
mndIsDnodeOnline
(
pObj
->
pDnode
,
curMs
))
{
roles
=
syncStr
(
pObj
->
state
);
if
(
pObj
->
state
==
TAOS_SYNC_STATE_LEADER
&&
pObj
->
id
!=
pMnode
->
selfDnodeId
)
{
roles
=
syncStr
(
TAOS_SYNC_STATE_ERROR
);
tstrncpy
(
role
,
syncStr
(
pObj
->
syncState
),
sizeof
(
role
)
);
if
(
pObj
->
s
yncS
tate
==
TAOS_SYNC_STATE_LEADER
&&
pObj
->
id
!=
pMnode
->
selfDnodeId
)
{
tstrncpy
(
role
,
syncStr
(
TAOS_SYNC_STATE_ERROR
),
sizeof
(
role
)
);
mError
(
"mnode:%d, is leader too"
,
pObj
->
id
);
}
}
char
b2
[
12
+
VARSTR_HEADER_SIZE
]
=
{
0
};
STR_WITH_MAXSIZE_TO_VARSTR
(
b2
,
role
s
,
pShow
->
pMeta
->
pSchemas
[
cols
].
bytes
);
STR_WITH_MAXSIZE_TO_VARSTR
(
b2
,
role
,
pShow
->
pMeta
->
pSchemas
[
cols
].
bytes
);
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
b2
,
false
);
...
...
source/dnode/mnode/impl/src/mndVgroup.c
浏览文件 @
780c58e2
...
...
@@ -142,7 +142,7 @@ SSdbRow *mndVgroupActionDecode(SSdbRaw *pRaw) {
SVnodeGid
*
pVgid
=
&
pVgroup
->
vnodeGid
[
i
];
SDB_GET_INT32
(
pRaw
,
dataPos
,
&
pVgid
->
dnodeId
,
_OVER
)
if
(
pVgroup
->
replica
==
1
)
{
pVgid
->
rol
e
=
TAOS_SYNC_STATE_LEADER
;
pVgid
->
syncStat
e
=
TAOS_SYNC_STATE_LEADER
;
}
}
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
VGROUP_RESERVE_SIZE
,
_OVER
)
...
...
@@ -485,9 +485,9 @@ static int32_t mndGetAvailableDnode(SMnode *pMnode, SDbObj *pDb, SVgObj *pVgroup
pVgid
->
dnodeId
=
pDnode
->
id
;
if
(
pVgroup
->
replica
==
1
)
{
pVgid
->
rol
e
=
TAOS_SYNC_STATE_LEADER
;
pVgid
->
syncStat
e
=
TAOS_SYNC_STATE_LEADER
;
}
else
{
pVgid
->
rol
e
=
TAOS_SYNC_STATE_FOLLOWER
;
pVgid
->
syncStat
e
=
TAOS_SYNC_STATE_FOLLOWER
;
}
mInfo
(
"db:%s, vgId:%d, vn:%d is alloced, memory:%"
PRId64
", dnode:%d avail:%"
PRId64
" used:%"
PRId64
,
...
...
@@ -587,7 +587,7 @@ SEpSet mndGetVgroupEpset(SMnode *pMnode, const SVgObj *pVgroup) {
SDnodeObj
*
pDnode
=
mndAcquireDnode
(
pMnode
,
pVgid
->
dnodeId
);
if
(
pDnode
==
NULL
)
continue
;
if
(
pVgid
->
rol
e
==
TAOS_SYNC_STATE_LEADER
)
{
if
(
pVgid
->
syncStat
e
==
TAOS_SYNC_STATE_LEADER
)
{
epset
.
inUse
=
epset
.
numOfEps
;
}
...
...
@@ -681,8 +681,12 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
mndReleaseDnode
(
pMnode
,
pDnode
);
}
char
buf1
[
20
]
=
{
0
};
const
char
*
role
=
online
?
syncStr
(
pVgroup
->
vnodeGid
[
i
].
role
)
:
"offline"
;
char
buf1
[
20
]
=
{
0
};
char
role
[
20
]
=
"offline"
;
if
(
online
)
{
bool
show
=
(
pVgroup
->
vnodeGid
[
i
].
syncState
==
TAOS_SYNC_STATE_LEADER
&&
!
pVgroup
->
vnodeGid
[
i
].
syncRestore
);
snprintf
(
role
,
sizeof
(
role
),
"%s%s"
,
syncStr
(
pVgroup
->
vnodeGid
[
i
].
syncState
),
show
?
"*"
:
""
);
}
STR_WITH_MAXSIZE_TO_VARSTR
(
buf1
,
role
,
pShow
->
pMeta
->
pSchemas
[
cols
].
bytes
);
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
...
...
@@ -809,7 +813,7 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
&
pVgroup
->
replica
,
false
);
char
buf
[
20
]
=
{
0
};
STR_TO_VARSTR
(
buf
,
syncStr
(
pVgid
->
rol
e
));
STR_TO_VARSTR
(
buf
,
syncStr
(
pVgid
->
syncStat
e
));
pColInfo
=
taosArrayGet
(
pBlock
->
pDataBlock
,
cols
++
);
colDataAppend
(
pColInfo
,
numOfRows
,
(
const
char
*
)
buf
,
false
);
...
...
@@ -887,7 +891,7 @@ int32_t mndAddVnodeToVgroup(SMnode *pMnode, SVgObj *pVgroup, SArray *pArray) {
}
pVgid
->
dnodeId
=
pDnode
->
id
;
pVgid
->
rol
e
=
TAOS_SYNC_STATE_ERROR
;
pVgid
->
syncStat
e
=
TAOS_SYNC_STATE_ERROR
;
mInfo
(
"db:%s, vgId:%d, vn:%d is added, memory:%"
PRId64
", dnode:%d avail:%"
PRId64
" used:%"
PRId64
,
pVgroup
->
dbName
,
pVgroup
->
vgId
,
pVgroup
->
replica
,
vgMem
,
pVgid
->
dnodeId
,
pDnode
->
memAvail
,
pDnode
->
memUsed
);
...
...
@@ -1179,7 +1183,7 @@ static int32_t mndAddIncVgroupReplicaToTrans(SMnode *pMnode, STrans *pTrans, SDb
SVnodeGid
*
pGid
=
&
pVgroup
->
vnodeGid
[
pVgroup
->
replica
];
pVgroup
->
replica
++
;
pGid
->
dnodeId
=
newDnodeId
;
pGid
->
rol
e
=
TAOS_SYNC_STATE_ERROR
;
pGid
->
syncStat
e
=
TAOS_SYNC_STATE_ERROR
;
if
(
mndAddCreateVnodeAction
(
pMnode
,
pTrans
,
pDb
,
pVgroup
,
pGid
,
true
)
!=
0
)
return
-
1
;
if
(
mndAddAlterVnodeAction
(
pMnode
,
pTrans
,
pDb
,
pVgroup
,
TDMT_VND_ALTER_REPLICA
)
!=
0
)
return
-
1
;
...
...
@@ -1233,7 +1237,7 @@ static int32_t mndRedistributeVgroup(SMnode *pMnode, SRpcMsg *pReq, SDbObj *pDb,
mInfo
(
"vgId:%d, vgroup info before redistribute, replica:%d"
,
newVg
.
vgId
,
newVg
.
replica
);
for
(
int32_t
i
=
0
;
i
<
newVg
.
replica
;
++
i
)
{
mInfo
(
"vgId:%d, vnode:%d dnode:%d role:%s"
,
newVg
.
vgId
,
i
,
newVg
.
vnodeGid
[
i
].
dnodeId
,
syncStr
(
newVg
.
vnodeGid
[
i
].
rol
e
));
syncStr
(
newVg
.
vnodeGid
[
i
].
syncStat
e
));
}
if
(
pNew1
!=
NULL
&&
pOld1
!=
NULL
)
{
...
...
source/dnode/vnode/src/vnd/vnodeQuery.c
浏览文件 @
780c58e2
...
...
@@ -385,6 +385,7 @@ _exit:
int32_t
vnodeGetLoad
(
SVnode
*
pVnode
,
SVnodeLoad
*
pLoad
)
{
pLoad
->
vgId
=
TD_VID
(
pVnode
);
pLoad
->
syncState
=
syncGetMyRole
(
pVnode
->
sync
);
pLoad
->
syncRestore
=
pVnode
->
restored
;
pLoad
->
cacheUsage
=
tsdbCacheGetUsage
(
pVnode
);
pLoad
->
numOfTables
=
metaGetTbNum
(
pVnode
->
pMeta
);
pLoad
->
numOfTimeSeries
=
metaGetTimeSeriesNum
(
pVnode
->
pMeta
);
...
...
source/libs/monitor/src/monMsg.c
浏览文件 @
780c58e2
...
...
@@ -509,7 +509,8 @@ int32_t tSerializeSMonVloadInfo(void *buf, int32_t bufLen, SMonVloadInfo *pInfo)
for
(
int32_t
i
=
0
;
i
<
taosArrayGetSize
(
pInfo
->
pVloads
);
++
i
)
{
SVnodeLoad
*
pLoad
=
taosArrayGet
(
pInfo
->
pVloads
,
i
);
if
(
tEncodeI32
(
&
encoder
,
pLoad
->
vgId
)
<
0
)
return
-
1
;
if
(
tEncodeI32
(
&
encoder
,
pLoad
->
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pLoad
->
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pLoad
->
syncRestore
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pLoad
->
cacheUsage
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pLoad
->
numOfTables
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pLoad
->
numOfTimeSeries
)
<
0
)
return
-
1
;
...
...
@@ -544,7 +545,8 @@ int32_t tDeserializeSMonVloadInfo(void *buf, int32_t bufLen, SMonVloadInfo *pInf
for
(
int32_t
i
=
0
;
i
<
arraySize
;
++
i
)
{
SVnodeLoad
load
=
{
0
};
if
(
tDecodeI32
(
&
decoder
,
&
load
.
vgId
)
<
0
)
return
-
1
;
if
(
tDecodeI32
(
&
decoder
,
&
load
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
load
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
load
.
syncRestore
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
load
.
cacheUsage
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
load
.
numOfTables
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
load
.
numOfTimeSeries
)
<
0
)
return
-
1
;
...
...
@@ -575,7 +577,8 @@ int32_t tSerializeSMonMloadInfo(void *buf, int32_t bufLen, SMonMloadInfo *pInfo)
if
(
tStartEncode
(
&
encoder
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pInfo
->
isMnode
)
<
0
)
return
-
1
;
if
(
tEncodeI32
(
&
encoder
,
pInfo
->
load
.
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pInfo
->
load
.
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pInfo
->
load
.
syncRestore
)
<
0
)
return
-
1
;
tEndEncode
(
&
encoder
);
int32_t
tlen
=
encoder
.
pos
;
...
...
@@ -589,7 +592,8 @@ int32_t tDeserializeSMonMloadInfo(void *buf, int32_t bufLen, SMonMloadInfo *pInf
if
(
tStartDecode
(
&
decoder
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
pInfo
->
isMnode
)
<
0
)
return
-
1
;
if
(
tDecodeI32
(
&
decoder
,
&
pInfo
->
load
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
pInfo
->
load
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
pInfo
->
load
.
syncRestore
)
<
0
)
return
-
1
;
tEndDecode
(
&
decoder
);
tDecoderClear
(
&
decoder
);
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_createDb_replica1.py
浏览文件 @
780c58e2
...
...
@@ -61,7 +61,7 @@ class TDTestCase:
# only for 1 mnode
mnode_name
=
k
if
v
[
2
]
==
'leader'
:
if
v
[
2
]
in
[
'leader'
,
'leader*'
]
:
is_leader
=
True
if
count
==
1
and
is_leader
:
...
...
@@ -109,12 +109,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'leader*'
,
'follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas.py
浏览文件 @
780c58e2
...
...
@@ -115,12 +115,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas_querys.py
浏览文件 @
780c58e2
...
...
@@ -116,12 +116,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas.py
浏览文件 @
780c58e2
...
...
@@ -115,12 +115,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys.py
浏览文件 @
780c58e2
...
...
@@ -116,12 +116,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_all_vnode.py
浏览文件 @
780c58e2
...
...
@@ -119,12 +119,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_follower.py
浏览文件 @
780c58e2
...
...
@@ -118,12 +118,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_leader.py
浏览文件 @
780c58e2
...
...
@@ -118,12 +118,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_sync.py
浏览文件 @
780c58e2
...
...
@@ -124,12 +124,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_unsync.py
浏览文件 @
780c58e2
...
...
@@ -124,12 +124,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_unsync_force_stop.py
浏览文件 @
780c58e2
...
...
@@ -124,12 +124,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_leader_forece_stop.py
浏览文件 @
780c58e2
...
...
@@ -207,12 +207,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_mnode3_insertdatas_querys.py
浏览文件 @
780c58e2
...
...
@@ -116,12 +116,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py
浏览文件 @
780c58e2
...
...
@@ -115,12 +115,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups_stopOne.py
浏览文件 @
780c58e2
...
...
@@ -118,12 +118,12 @@ class TDTestCase:
vgroup_id
=
vgroup_info
[
0
]
tmp_list
=
[]
for
role
in
vgroup_info
[
3
:
-
4
]:
if
role
in
[
'leader'
,
'follower'
]:
if
role
in
[
'leader'
,
'
leader*'
,
'
follower'
]:
tmp_list
.
append
(
role
)
vgroups_infos
[
vgroup_id
]
=
tmp_list
for
k
,
v
in
vgroups_infos
.
items
():
if
len
(
v
)
==
1
and
v
[
0
]
==
"leader"
:
if
len
(
v
)
==
1
and
v
[
0
]
in
[
'leader'
,
'leader*'
]
:
tdLog
.
notice
(
" === create database replica only 1 role leader check success of vgroup_id {} ======"
.
format
(
k
))
else
:
tdLog
.
exit
(
" === create database replica only 1 role leader check fail of vgroup_id {} ======"
.
format
(
k
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录