commit
7f57f0e1f8
|
@ -56,7 +56,7 @@ static bool vnodeSetClosingStatusImp(SVnodeObj* pVnode) {
|
||||||
bool set = false;
|
bool set = false;
|
||||||
pthread_mutex_lock(&pVnode->statusMutex);
|
pthread_mutex_lock(&pVnode->statusMutex);
|
||||||
|
|
||||||
if (pVnode->status == TAOS_VN_STATUS_READY) {
|
if (pVnode->status == TAOS_VN_STATUS_READY || pVnode->status == TAOS_VN_STATUS_INIT) {
|
||||||
pVnode->status = TAOS_VN_STATUS_CLOSING;
|
pVnode->status = TAOS_VN_STATUS_CLOSING;
|
||||||
set = true;
|
set = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -68,15 +68,12 @@ static bool vnodeSetClosingStatusImp(SVnodeObj* pVnode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vnodeSetClosingStatus(SVnodeObj* pVnode) {
|
bool vnodeSetClosingStatus(SVnodeObj* pVnode) {
|
||||||
if (!vnodeInInitStatus(pVnode)) {
|
|
||||||
// it may be in updating or reset state, then it shall wait
|
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
while (!vnodeSetClosingStatusImp(pVnode)) {
|
while (!vnodeSetClosingStatusImp(pVnode)) {
|
||||||
if (++i % 1000 == 0) {
|
if (++i % 1000 == 0) {
|
||||||
sched_yield();
|
sched_yield();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -96,11 +93,11 @@ bool vnodeSetUpdatingStatus(SVnodeObj* pVnode) {
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vnodeSetResetStatus(SVnodeObj* pVnode) {
|
static bool vnodeSetResetStatusImp(SVnodeObj* pVnode) {
|
||||||
bool set = false;
|
bool set = false;
|
||||||
pthread_mutex_lock(&pVnode->statusMutex);
|
pthread_mutex_lock(&pVnode->statusMutex);
|
||||||
|
|
||||||
if (pVnode->status != TAOS_VN_STATUS_CLOSING && pVnode->status != TAOS_VN_STATUS_INIT) {
|
if (pVnode->status == TAOS_VN_STATUS_READY || pVnode->status == TAOS_VN_STATUS_INIT) {
|
||||||
pVnode->status = TAOS_VN_STATUS_RESET;
|
pVnode->status = TAOS_VN_STATUS_RESET;
|
||||||
set = true;
|
set = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -111,6 +108,17 @@ bool vnodeSetResetStatus(SVnodeObj* pVnode) {
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool vnodeSetResetStatus(SVnodeObj* pVnode) {
|
||||||
|
int32_t i = 0;
|
||||||
|
while (!vnodeSetResetStatusImp(pVnode)) {
|
||||||
|
if (++i % 1000 == 0) {
|
||||||
|
sched_yield();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool vnodeInInitStatus(SVnodeObj* pVnode) {
|
bool vnodeInInitStatus(SVnodeObj* pVnode) {
|
||||||
bool in = false;
|
bool in = false;
|
||||||
pthread_mutex_lock(&pVnode->statusMutex);
|
pthread_mutex_lock(&pVnode->statusMutex);
|
||||||
|
|
Loading…
Reference in New Issue