[TD-4593]<fix>: fix vnode cannnot close while syncing
This commit is contained in:
parent
ae9c561665
commit
b9ccb24aa7
|
@ -169,7 +169,7 @@ static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *rpcMsg) {
|
||||||
static int32_t dnodeProcessAlterVnodeMsg(SRpcMsg *rpcMsg) {
|
static int32_t dnodeProcessAlterVnodeMsg(SRpcMsg *rpcMsg) {
|
||||||
SAlterVnodeMsg *pAlter = dnodeParseVnodeMsg(rpcMsg);
|
SAlterVnodeMsg *pAlter = dnodeParseVnodeMsg(rpcMsg);
|
||||||
|
|
||||||
void *pVnode = vnodeAcquire(pAlter->cfg.vgId);
|
void *pVnode = vnodeAcquireNotClose(pAlter->cfg.vgId);
|
||||||
if (pVnode != NULL) {
|
if (pVnode != NULL) {
|
||||||
dDebug("vgId:%d, alter vnode msg is received", pAlter->cfg.vgId);
|
dDebug("vgId:%d, alter vnode msg is received", pAlter->cfg.vgId);
|
||||||
int32_t code = vnodeAlter(pVnode, pAlter);
|
int32_t code = vnodeAlter(pVnode, pAlter);
|
||||||
|
|
|
@ -63,7 +63,7 @@ void dnodeDispatchToVReadQueue(SRpcMsg *pMsg) {
|
||||||
pHead->contLen = htonl(pHead->contLen);
|
pHead->contLen = htonl(pHead->contLen);
|
||||||
|
|
||||||
assert(pHead->contLen > 0);
|
assert(pHead->contLen > 0);
|
||||||
void *pVnode = vnodeAcquire(pHead->vgId);
|
void *pVnode = vnodeAcquireNotClose(pHead->vgId);
|
||||||
if (pVnode != NULL) {
|
if (pVnode != NULL) {
|
||||||
code = vnodeWriteToRQueue(pVnode, pCont, pHead->contLen, TAOS_QTYPE_RPC, pMsg);
|
code = vnodeWriteToRQueue(pVnode, pCont, pHead->contLen, TAOS_QTYPE_RPC, pMsg);
|
||||||
if (code == TSDB_CODE_SUCCESS) queuedMsgNum++;
|
if (code == TSDB_CODE_SUCCESS) queuedMsgNum++;
|
||||||
|
|
|
@ -85,7 +85,7 @@ void dnodeDispatchToVWriteQueue(SRpcMsg *pRpcMsg) {
|
||||||
pMsg->vgId = htonl(pMsg->vgId);
|
pMsg->vgId = htonl(pMsg->vgId);
|
||||||
pMsg->contLen = htonl(pMsg->contLen);
|
pMsg->contLen = htonl(pMsg->contLen);
|
||||||
|
|
||||||
void *pVnode = vnodeAcquire(pMsg->vgId);
|
void *pVnode = vnodeAcquireNotClose(pMsg->vgId);
|
||||||
if (pVnode == NULL) {
|
if (pVnode == NULL) {
|
||||||
code = TSDB_CODE_VND_INVALID_VGROUP_ID;
|
code = TSDB_CODE_VND_INVALID_VGROUP_ID;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -68,6 +68,7 @@ int32_t vnodeInitMgmt();
|
||||||
void vnodeCleanupMgmt();
|
void vnodeCleanupMgmt();
|
||||||
void* vnodeAcquire(int32_t vgId);
|
void* vnodeAcquire(int32_t vgId);
|
||||||
void vnodeRelease(void *pVnode);
|
void vnodeRelease(void *pVnode);
|
||||||
|
void* vnodeAcquireNotClose(int32_t vgId);
|
||||||
void* vnodeGetWal(void *pVnode);
|
void* vnodeGetWal(void *pVnode);
|
||||||
int32_t vnodeGetVnodeList(int32_t vnodeList[], int32_t *numOfVnodes);
|
int32_t vnodeGetVnodeList(int32_t vnodeList[], int32_t *numOfVnodes);
|
||||||
void vnodeBuildStatusMsg(void *pStatus);
|
void vnodeBuildStatusMsg(void *pStatus);
|
||||||
|
|
|
@ -41,6 +41,8 @@ typedef struct {
|
||||||
int32_t queuedWMsg;
|
int32_t queuedWMsg;
|
||||||
int32_t queuedRMsg;
|
int32_t queuedRMsg;
|
||||||
int32_t flowctrlLevel;
|
int32_t flowctrlLevel;
|
||||||
|
int8_t preClose; // drop and close switch
|
||||||
|
int8_t reserved[3];
|
||||||
int64_t sequence; // for topic
|
int64_t sequence; // for topic
|
||||||
int8_t status;
|
int8_t status;
|
||||||
int8_t role;
|
int8_t role;
|
||||||
|
|
Loading…
Reference in New Issue