Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1e8a8161
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看板
提交
1e8a8161
编写于
11月 30, 2022
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: show leader ** if vnode can read and can't write
上级
dbd24dcf
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
46 addition
and
16 deletion
+46
-16
include/common/tmsg.h
include/common/tmsg.h
+1
-0
source/common/src/tmsg.c
source/common/src/tmsg.c
+10
-0
source/dnode/mnode/impl/inc/mndDef.h
source/dnode/mnode/impl/inc/mndDef.h
+1
-0
source/dnode/mnode/impl/src/mndDnode.c
source/dnode/mnode/impl/src/mndDnode.c
+12
-8
source/dnode/mnode/impl/src/mndMain.c
source/dnode/mnode/impl/src/mndMain.c
+10
-6
source/dnode/mnode/impl/src/mndVgroup.c
source/dnode/mnode/impl/src/mndVgroup.c
+11
-2
source/dnode/vnode/src/vnd/vnodeQuery.c
source/dnode/vnode/src/vnd/vnodeQuery.c
+1
-0
未找到文件。
include/common/tmsg.h
浏览文件 @
1e8a8161
...
...
@@ -1059,6 +1059,7 @@ typedef struct {
int32_t
vgId
;
int8_t
syncState
;
int8_t
syncRestore
;
int8_t
syncCanRead
;
int64_t
cacheUsage
;
int64_t
numOfTables
;
int64_t
numOfTimeSeries
;
...
...
source/common/src/tmsg.c
浏览文件 @
1e8a8161
...
...
@@ -992,15 +992,20 @@ int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
if
(
tEncodeI32
(
&
encoder
,
vlen
)
<
0
)
return
-
1
;
for
(
int32_t
i
=
0
;
i
<
vlen
;
++
i
)
{
SVnodeLoad
*
pload
=
taosArrayGet
(
pReq
->
pVloads
,
i
);
int64_t
reserved
=
0
;
if
(
tEncodeI32
(
&
encoder
,
pload
->
vgId
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pload
->
syncState
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pload
->
syncRestore
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
&
encoder
,
pload
->
syncCanRead
)
<
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
;
if
(
tEncodeI64
(
&
encoder
,
pload
->
totalStorage
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pload
->
compStorage
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
pload
->
pointsWritten
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
reserved
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
reserved
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
&
encoder
,
reserved
)
<
0
)
return
-
1
;
}
// mnode loads
...
...
@@ -1065,15 +1070,20 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
for
(
int32_t
i
=
0
;
i
<
vlen
;
++
i
)
{
SVnodeLoad
vload
=
{
0
};
int64_t
reserved
=
0
;
if
(
tDecodeI32
(
&
decoder
,
&
vload
.
vgId
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
vload
.
syncState
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
vload
.
syncRestore
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
&
decoder
,
&
vload
.
syncCanRead
)
<
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
;
if
(
tDecodeI64
(
&
decoder
,
&
vload
.
totalStorage
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
vload
.
compStorage
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
vload
.
pointsWritten
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
reserved
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
reserved
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
&
decoder
,
&
reserved
)
<
0
)
return
-
1
;
if
(
taosArrayPush
(
pReq
->
pVloads
,
&
vload
)
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
...
...
source/dnode/mnode/impl/inc/mndDef.h
浏览文件 @
1e8a8161
...
...
@@ -328,6 +328,7 @@ typedef struct {
int32_t
dnodeId
;
ESyncState
syncState
;
bool
syncRestore
;
bool
syncCanRead
;
}
SVnodeGid
;
typedef
struct
{
...
...
source/dnode/mnode/impl/src/mndDnode.c
浏览文件 @
1e8a8161
...
...
@@ -375,14 +375,18 @@ 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
].
syncState
!=
pVload
->
syncState
||
pVgroup
->
vnodeGid
[
vg
].
syncRestore
!=
pVload
->
syncRestore
)
{
mInfo
(
"vgId:%d, state changed by status msg, old state:%s restored:%d new state:%s restored:%d"
,
pVgroup
->
vgId
,
syncStr
(
pVgroup
->
vnodeGid
[
vg
].
syncState
),
pVgroup
->
vnodeGid
[
vg
].
syncRestore
,
syncStr
(
pVload
->
syncState
),
pVload
->
syncRestore
);
pVgroup
->
vnodeGid
[
vg
].
syncState
=
pVload
->
syncState
;
pVgroup
->
vnodeGid
[
vg
].
syncRestore
=
pVload
->
syncRestore
;
SVnodeGid
*
pGid
=
&
pVgroup
->
vnodeGid
[
vg
];
if
(
pGid
->
dnodeId
==
statusReq
.
dnodeId
)
{
if
(
pGid
->
syncState
!=
pVload
->
syncState
||
pGid
->
syncRestore
!=
pVload
->
syncRestore
||
pGid
->
syncCanRead
!=
pVload
->
syncCanRead
)
{
mInfo
(
"vgId:%d, state changed by status msg, old state:%s restored:%d canRead:%d new state:%s restored:%d "
"canRead:%d"
,
pVgroup
->
vgId
,
syncStr
(
pGid
->
syncState
),
pGid
->
syncRestore
,
pGid
->
syncCanRead
,
syncStr
(
pVload
->
syncState
),
pVload
->
syncRestore
,
pVload
->
syncCanRead
);
pGid
->
syncState
=
pVload
->
syncState
;
pGid
->
syncRestore
=
pVload
->
syncRestore
;
pGid
->
syncCanRead
=
pVload
->
syncCanRead
;
roleChanged
=
true
;
}
break
;
...
...
source/dnode/mnode/impl/src/mndMain.c
浏览文件 @
1e8a8161
...
...
@@ -150,12 +150,16 @@ static void mndSetVgroupOffline(SMnode *pMnode, int32_t dnodeId, int64_t curMs)
bool
roleChanged
=
false
;
for
(
int32_t
vg
=
0
;
vg
<
pVgroup
->
replica
;
++
vg
)
{
if
(
pVgroup
->
vnodeGid
[
vg
].
dnodeId
==
dnodeId
)
{
if
(
pVgroup
->
vnodeGid
[
vg
].
syncState
!=
TAOS_SYNC_STATE_OFFLINE
)
{
mInfo
(
"vgId:%d, state changed by offline check, old state:%s restored:%d new state:error restored:0"
,
pVgroup
->
vgId
,
syncStr
(
pVgroup
->
vnodeGid
[
vg
].
syncState
),
pVgroup
->
vnodeGid
[
vg
].
syncRestore
);
pVgroup
->
vnodeGid
[
vg
].
syncState
=
TAOS_SYNC_STATE_OFFLINE
;
pVgroup
->
vnodeGid
[
vg
].
syncRestore
=
0
;
SVnodeGid
*
pGid
=
&
pVgroup
->
vnodeGid
[
vg
];
if
(
pGid
->
dnodeId
==
dnodeId
)
{
if
(
pGid
->
syncState
!=
TAOS_SYNC_STATE_OFFLINE
)
{
mInfo
(
"vgId:%d, state changed by offline check, old state:%s restored:%d canRead:%d new state:error restored:0 "
"canRead:0"
,
pVgroup
->
vgId
,
syncStr
(
pGid
->
syncState
),
pGid
->
syncRestore
,
pGid
->
syncCanRead
);
pGid
->
syncState
=
TAOS_SYNC_STATE_OFFLINE
;
pGid
->
syncRestore
=
0
;
pGid
->
syncCanRead
=
0
;
roleChanged
=
true
;
}
break
;
...
...
source/dnode/mnode/impl/src/mndVgroup.c
浏览文件 @
1e8a8161
...
...
@@ -186,6 +186,7 @@ static int32_t mndVgroupActionUpdate(SSdb *pSdb, SVgObj *pOld, SVgObj *pNew) {
if
(
pNewGid
->
dnodeId
==
pOldGid
->
dnodeId
)
{
pNewGid
->
syncState
=
pOldGid
->
syncState
;
pNewGid
->
syncRestore
=
pOldGid
->
syncRestore
;
pNewGid
->
syncCanRead
=
pOldGid
->
syncCanRead
;
}
}
}
...
...
@@ -696,8 +697,16 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
if
(
!
exist
)
{
strcpy
(
role
,
"dropping"
);
}
else
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
?
"*"
:
""
);
char
*
star
=
""
;
if
(
pVgroup
->
vnodeGid
[
i
].
syncState
==
TAOS_SYNC_STATE_LEADER
)
{
if
(
!
pVgroup
->
vnodeGid
[
i
].
syncRestore
&&
!
pVgroup
->
vnodeGid
[
i
].
syncCanRead
)
{
star
=
"**"
;
}
else
if
(
!
pVgroup
->
vnodeGid
[
i
].
syncRestore
&&
pVgroup
->
vnodeGid
[
i
].
syncCanRead
)
{
star
=
"*"
;
}
else
{
}
}
snprintf
(
role
,
sizeof
(
role
),
"%s%s"
,
syncStr
(
pVgroup
->
vnodeGid
[
i
].
syncState
),
star
);
}
else
{
}
STR_WITH_MAXSIZE_TO_VARSTR
(
buf1
,
role
,
pShow
->
pMeta
->
pSchemas
[
cols
].
bytes
);
...
...
source/dnode/vnode/src/vnd/vnodeQuery.c
浏览文件 @
1e8a8161
...
...
@@ -380,6 +380,7 @@ int32_t vnodeGetLoad(SVnode *pVnode, SVnodeLoad *pLoad) {
pLoad
->
vgId
=
TD_VID
(
pVnode
);
pLoad
->
syncState
=
state
.
state
;
pLoad
->
syncRestore
=
state
.
restored
;
pLoad
->
syncCanRead
=
state
.
canRead
;
pLoad
->
cacheUsage
=
tsdbCacheGetUsage
(
pVnode
);
pLoad
->
numOfTables
=
metaGetTbNum
(
pVnode
->
pMeta
);
pLoad
->
numOfTimeSeries
=
metaGetTimeSeriesNum
(
pVnode
->
pMeta
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录