Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
45e4a9d8
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看板
提交
45e4a9d8
编写于
1月 12, 2021
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-2677
上级
b5bcb5f7
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
46 addition
and
17 deletion
+46
-17
src/dnode/src/dnodeVWrite.c
src/dnode/src/dnodeVWrite.c
+5
-4
src/vnode/src/vnodeWrite.c
src/vnode/src/vnodeWrite.c
+3
-2
tests/script/tmp/mnodes.sim
tests/script/tmp/mnodes.sim
+38
-11
未找到文件。
src/dnode/src/dnodeVWrite.c
浏览文件 @
45e4a9d8
...
@@ -163,9 +163,10 @@ void dnodeFreeVWriteQueue(void *pWqueue) {
...
@@ -163,9 +163,10 @@ void dnodeFreeVWriteQueue(void *pWqueue) {
void
dnodeSendRpcVWriteRsp
(
void
*
pVnode
,
void
*
wparam
,
int32_t
code
)
{
void
dnodeSendRpcVWriteRsp
(
void
*
pVnode
,
void
*
wparam
,
int32_t
code
)
{
if
(
wparam
==
NULL
)
return
;
if
(
wparam
==
NULL
)
return
;
if
(
code
>
0
)
code
=
0
;
SVWriteMsg
*
pWrite
=
wparam
;
SVWriteMsg
*
pWrite
=
wparam
;
if
(
code
<
0
)
pWrite
->
code
=
code
;
if
(
code
<
=
0
)
pWrite
->
code
=
code
;
int32_t
count
=
atomic_add_fetch_32
(
&
pWrite
->
processedCount
,
1
);
int32_t
count
=
atomic_add_fetch_32
(
&
pWrite
->
processedCount
,
1
);
if
(
count
<=
1
)
return
;
if
(
count
<=
1
)
return
;
...
@@ -204,11 +205,11 @@ static void *dnodeProcessVWriteQueue(void *wparam) {
...
@@ -204,11 +205,11 @@ static void *dnodeProcessVWriteQueue(void *wparam) {
dTrace
(
"msg:%p, app:%p type:%s will be processed in vwrite queue, qtype:%s hver:%"
PRIu64
,
pWrite
,
dTrace
(
"msg:%p, app:%p type:%s will be processed in vwrite queue, qtype:%s hver:%"
PRIu64
,
pWrite
,
pWrite
->
rpcMsg
.
ahandle
,
taosMsg
[
pWrite
->
pHead
->
msgType
],
qtypeStr
[
qtype
],
pWrite
->
pHead
->
version
);
pWrite
->
rpcMsg
.
ahandle
,
taosMsg
[
pWrite
->
pHead
->
msgType
],
qtypeStr
[
qtype
],
pWrite
->
pHead
->
version
);
pWrite
->
code
=
vnodeProcessWrite
(
pVnode
,
pWrite
->
pHead
,
qtype
,
&
pWrite
->
rspRet
);
pWrite
->
code
=
vnodeProcessWrite
(
pVnode
,
pWrite
->
pHead
,
qtype
,
pWrite
);
if
(
pWrite
->
code
<=
0
)
pWrite
->
processedCount
=
1
;
if
(
pWrite
->
code
<=
0
)
pWrite
->
processedCount
=
1
;
if
(
pWrite
->
code
=
=
0
&&
pWrite
->
pHead
->
msgType
!=
TSDB_MSG_TYPE_SUBMIT
)
forceFsync
=
true
;
if
(
pWrite
->
code
>
=
0
&&
pWrite
->
pHead
->
msgType
!=
TSDB_MSG_TYPE_SUBMIT
)
forceFsync
=
true
;
dTrace
(
"msg:%p is processed in vwrite queue,
result:%s"
,
pWrite
,
tstrerror
(
pWrite
->
code
)
);
dTrace
(
"msg:%p is processed in vwrite queue,
code:0x%x"
,
pWrite
,
pWrite
->
code
);
}
}
walFsync
(
vnodeGetWal
(
pVnode
),
forceFsync
);
walFsync
(
vnodeGetWal
(
pVnode
),
forceFsync
);
...
...
src/vnode/src/vnodeWrite.c
浏览文件 @
45e4a9d8
...
@@ -52,7 +52,8 @@ int32_t vnodeProcessWrite(void *vparam, void *wparam, int32_t qtype, void *rpara
...
@@ -52,7 +52,8 @@ int32_t vnodeProcessWrite(void *vparam, void *wparam, int32_t qtype, void *rpara
int32_t
code
=
0
;
int32_t
code
=
0
;
SVnodeObj
*
pVnode
=
vparam
;
SVnodeObj
*
pVnode
=
vparam
;
SWalHead
*
pHead
=
wparam
;
SWalHead
*
pHead
=
wparam
;
SRspRet
*
pRspRet
=
rparam
;
SVWriteMsg
*
pWrite
=
rparam
;
SRspRet
*
pRspRet
=
&
pWrite
->
rspRet
;
if
(
vnodeProcessWriteMsgFp
[
pHead
->
msgType
]
==
NULL
)
{
if
(
vnodeProcessWriteMsgFp
[
pHead
->
msgType
]
==
NULL
)
{
vError
(
"vgId:%d, msg:%s not processed since no handle, qtype:%s hver:%"
PRIu64
,
pVnode
->
vgId
,
vError
(
"vgId:%d, msg:%s not processed since no handle, qtype:%s hver:%"
PRIu64
,
pVnode
->
vgId
,
...
@@ -85,7 +86,7 @@ int32_t vnodeProcessWrite(void *vparam, void *wparam, int32_t qtype, void *rpara
...
@@ -85,7 +86,7 @@ int32_t vnodeProcessWrite(void *vparam, void *wparam, int32_t qtype, void *rpara
// forward to peers, even it is WAL/FWD, it shall be called to update version in sync
// forward to peers, even it is WAL/FWD, it shall be called to update version in sync
int32_t
syncCode
=
0
;
int32_t
syncCode
=
0
;
syncCode
=
syncForwardToPeer
(
pVnode
->
sync
,
pHead
,
p
RspRet
,
qtype
);
syncCode
=
syncForwardToPeer
(
pVnode
->
sync
,
pHead
,
p
Write
,
qtype
);
if
(
syncCode
<
0
)
return
syncCode
;
if
(
syncCode
<
0
)
return
syncCode
;
// write into WAL
// write into WAL
...
...
tests/script/tmp/mnodes.sim
浏览文件 @
45e4a9d8
...
@@ -35,7 +35,6 @@ system sh/cfg.sh -n dnode3 -c replica -v 3
...
@@ -35,7 +35,6 @@ system sh/cfg.sh -n dnode3 -c replica -v 3
print ============== deploy
print ============== deploy
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 5001
sql connect
sql connect
sql create dnode $hostname2
sql create dnode $hostname2
...
@@ -45,13 +44,29 @@ system sh/exec.sh -n dnode3 -s start
...
@@ -45,13 +44,29 @@ system sh/exec.sh -n dnode3 -s start
print =============== step1
print =============== step1
$x = 0
$x = 0
s
how
1:
s
tep
1:
$x = $x + 1
$x = $x + 1
sleep
2
000
sleep
1
000
if $x ==
5
then
if $x ==
10
then
return -1
return -1
endi
endi
sql show mnodes -x show1
sql show dnodes
print dnode1 $data4_1
print dnode2 $data4_2
print dnode3 $data4_3
if $data4_1 != ready then
goto step1
endi
if $data4_2 != ready then
goto step1
endi
if $data4_3 != ready then
goto step1
endi
sql show mnodes
$mnode1Role = $data2_1
$mnode1Role = $data2_1
print mnode1Role $mnode1Role
print mnode1Role $mnode1Role
$mnode2Role = $data2_2
$mnode2Role = $data2_2
...
@@ -60,13 +75,13 @@ $mnode3Role = $data2_3
...
@@ -60,13 +75,13 @@ $mnode3Role = $data2_3
print mnode3Role $mnode3Role
print mnode3Role $mnode3Role
if $mnode1Role != master then
if $mnode1Role != master then
goto s
how
1
goto s
tep
1
endi
endi
if $mnode2Role != slave then
if $mnode2Role != slave then
goto s
how
1
goto s
tep
1
endi
endi
if $mnode3Role != slave then
if $mnode3Role != slave then
goto s
how
1
goto s
tep
1
endi
endi
$x = 1
$x = 1
...
@@ -75,9 +90,21 @@ show2:
...
@@ -75,9 +90,21 @@ show2:
print =============== step $x
print =============== step $x
sql show mnodes
sql show mnodes
print $data0_1 $data2_1
print $data0_1 $data2_1
print $data0_2 $data2_2
print $data0_3 $data2_3
sql show dnodes
print dnode1 $data4_1
print dnode2 $data4_2
print dnode3 $data4_3
if $data4_1 != ready then
goto step1
endi
if $data4_2 != ready then
goto step1
endi
if $data4_3 != ready then
goto step1
endi
$x = $x + 1
$x = $x + 1
sleep 5000
sleep 5000
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录