[TD-150] deadlock in balance

This commit is contained in:
slguan 2020-05-03 12:26:54 +08:00
parent 19895e9b50
commit cd6624214b
4 changed files with 53 additions and 55 deletions

View File

@ -26,6 +26,7 @@ struct SDnodeObj;
int32_t balanceInit();
void balanceCleanUp();
void balanceNotify();
void balanceUpdateMgmt();
void balanceReset();
int32_t balanceAllocVnodes(struct SVgObj *pVgroup);
int32_t balanceDropDnode(struct SDnodeObj *pDnode);

View File

@ -29,6 +29,7 @@
int32_t balanceInit() { return TSDB_CODE_SUCCESS; }
void balanceCleanUp() {}
void balanceNotify() {}
void balanceUpdateMgmt() {}
void balanceReset() {}
int32_t balanceAllocVnodes(SVgObj *pVgroup) {

View File

@ -322,6 +322,7 @@ void mgmtProcessDnodeStatusMsg(SRpcMsg *rpcMsg) {
if (pDnode->status == TAOS_DN_STATUS_OFFLINE) {
mTrace("dnode:%d, from offline to online", pDnode->dnodeId);
pDnode->status = TAOS_DN_STATUS_READY;
balanceUpdateMgmt();
balanceNotify();
}

View File

@ -1,10 +1,5 @@
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
@ -49,8 +44,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 != 1 then
print dnode1 openVnodes $data2_1
if $data2_1 != 1 then
return -1
endi
@ -68,12 +63,12 @@ show2:
endi
sql show dnodes
print dnode1 openVnodes $data3_1
print dnode2 openVnodes $data3_2
if $data3_1 != 0 then
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
if $data2_1 != 0 then
goto show2
endi
if $data3_2 != 1 then
if $data2_2 != 1 then
goto show2
endi
@ -87,12 +82,12 @@ 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
print dnode2 openVnodes $data3_2
if $data3_1 != 0 then
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
if $data2_1 != 0 then
return -1
endi
if $data3_2 != 2 then
if $data2_2 != 2 then
return -1
endi
@ -108,12 +103,12 @@ show4:
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
@ -135,16 +130,16 @@ show5:
endi
sql show dnodes
print dnode1 openVnodes $data3_1
print dnode2 openVnodes $data3_2
print dnode3 openVnodes $data3_3
if $data3_1 != 0 then
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
print dnode3 openVnodes $data2_3
if $data2_1 != 0 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
@ -158,17 +153,17 @@ 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
print dnode3 openVnodes $data3_3
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
print dnode3 openVnodes $data2_3
if $data3_1 != 0 then
if $data2_1 != 0 then
return -1
endi
if $data3_2 != null then
if $data2_2 != null then
return -1
endi
if $data3_3 != 3 then
if $data2_3 != 3 then
return -1
endi
@ -185,20 +180,20 @@ show7:
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 != 0 then
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
print dnode3 openVnodes $data2_3
print dnode4 openVnodes $data2_4
if $data2_1 != 0 then
goto show7
endi
if $data3_2 != null then
if $data2_2 != null then
goto show7
endi
if $data3_3 != 2 then
if $data2_3 != 2 then
goto show7
endi
if $data3_4 != 1 then
if $data2_4 != 1 then
goto show7
endi
@ -212,21 +207,21 @@ sql insert into d4.t4 values(now+4s, 42)
sql insert into d4.t4 values(now+5s, 41)
sql show dnodes
print dnode1 openVnodes $data3_1
print dnode2 openVnodes $data3_2
print dnode3 openVnodes $data3_3
print dnode4 openVnodes $data3_4
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
print dnode3 openVnodes $data2_3
print dnode4 openVnodes $data2_4
if $data3_1 != 0 then
if $data2_1 != 0 then
return -1
endi
if $data3_2 != null then
if $data2_2 != null then
return -1
endi
if $data3_3 != 2 then
if $data2_3 != 2 then
return -1
endi
if $data3_4 != 2 then
if $data2_4 != 2 then
return -1
endi
@ -242,21 +237,21 @@ show9:
endi
sql show dnodes
print dnode1 openVnodes $data3_1
print dnode2 openVnodes $data3_2
print dnode3 openVnodes $data3_3
print dnode4 openVnodes $data3_4
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
print dnode3 openVnodes $data2_3
print dnode4 openVnodes $data2_4
if $data3_1 != 0 then
if $data2_1 != 0 then
goto show9
endi
if $data3_2 != null then
if $data2_2 != null then
goto show9
endi
if $data3_3 != null then
if $data2_3 != null then
goto show9
endi
if $data3_4 != 4 then
if $data2_4 != 4 then
goto show9
endi