merge develop code
This commit is contained in:
parent
9ad7844da9
commit
995682f044
|
@ -22,11 +22,10 @@ extern "C" {
|
||||||
|
|
||||||
typedef enum _VN_STATUS {
|
typedef enum _VN_STATUS {
|
||||||
TAOS_VN_STATUS_INIT,
|
TAOS_VN_STATUS_INIT,
|
||||||
TAOS_VN_STATUS_UPDATING,
|
|
||||||
TAOS_VN_STATUS_RESET,
|
|
||||||
TAOS_VN_STATUS_READY,
|
TAOS_VN_STATUS_READY,
|
||||||
TAOS_VN_STATUS_CLOSING,
|
TAOS_VN_STATUS_CLOSING,
|
||||||
TAOS_VN_STATUS_DELETING,
|
TAOS_VN_STATUS_UPDATING,
|
||||||
|
TAOS_VN_STATUS_RESET,
|
||||||
} EVnStatus;
|
} EVnStatus;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -56,6 +56,7 @@ typedef struct {
|
||||||
void *qMgmt;
|
void *qMgmt;
|
||||||
char *rootDir;
|
char *rootDir;
|
||||||
tsem_t sem;
|
tsem_t sem;
|
||||||
|
int8_t dropped;
|
||||||
char db[TSDB_DB_NAME_LEN];
|
char db[TSDB_DB_NAME_LEN];
|
||||||
} SVnodeObj;
|
} SVnodeObj;
|
||||||
|
|
||||||
|
|
|
@ -153,7 +153,7 @@ int32_t vnodeDrop(int32_t vgId) {
|
||||||
|
|
||||||
SVnodeObj *pVnode = *ppVnode;
|
SVnodeObj *pVnode = *ppVnode;
|
||||||
vTrace("vgId:%d, vnode will be dropped, refCount:%d", pVnode->vgId, pVnode->refCount);
|
vTrace("vgId:%d, vnode will be dropped, refCount:%d", pVnode->vgId, pVnode->refCount);
|
||||||
pVnode->status = TAOS_VN_STATUS_DELETING;
|
pVnode->dropped = 1;
|
||||||
vnodeCleanUp(pVnode);
|
vnodeCleanUp(pVnode);
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -335,7 +335,6 @@ int32_t vnodeClose(int32_t vgId) {
|
||||||
|
|
||||||
SVnodeObj *pVnode = *ppVnode;
|
SVnodeObj *pVnode = *ppVnode;
|
||||||
vDebug("vgId:%d, vnode will be closed", pVnode->vgId);
|
vDebug("vgId:%d, vnode will be closed", pVnode->vgId);
|
||||||
pVnode->status = TAOS_VN_STATUS_CLOSING;
|
|
||||||
vnodeCleanUp(pVnode);
|
vnodeCleanUp(pVnode);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -381,7 +380,7 @@ void vnodeRelease(void *pVnodeRaw) {
|
||||||
|
|
||||||
tfree(pVnode->rootDir);
|
tfree(pVnode->rootDir);
|
||||||
|
|
||||||
if (pVnode->status == TAOS_VN_STATUS_DELETING) {
|
if (pVnode->dropped) {
|
||||||
char rootDir[TSDB_FILENAME_LEN] = {0};
|
char rootDir[TSDB_FILENAME_LEN] = {0};
|
||||||
sprintf(rootDir, "%s/vnode%d", tsVnodeDir, vgId);
|
sprintf(rootDir, "%s/vnode%d", tsVnodeDir, vgId);
|
||||||
taosMvDir(tsVnodeBakDir, rootDir);
|
taosMvDir(tsVnodeBakDir, rootDir);
|
||||||
|
@ -511,6 +510,8 @@ static void vnodeCleanUp(SVnodeObj *pVnode) {
|
||||||
// remove from hash, so new messages wont be consumed
|
// remove from hash, so new messages wont be consumed
|
||||||
taosHashRemove(tsDnodeVnodesHash, (const char *)&pVnode->vgId, sizeof(int32_t));
|
taosHashRemove(tsDnodeVnodesHash, (const char *)&pVnode->vgId, sizeof(int32_t));
|
||||||
|
|
||||||
|
pVnode->status = TSDB_VN_STATUS_CLOSING;
|
||||||
|
|
||||||
// stop replication module
|
// stop replication module
|
||||||
if (pVnode->sync) {
|
if (pVnode->sync) {
|
||||||
syncStop(pVnode->sync);
|
syncStop(pVnode->sync);
|
||||||
|
|
|
@ -54,7 +54,7 @@ int32_t vnodeProcessRead(void *param, SReadMsg *pReadMsg) {
|
||||||
|
|
||||||
// tsdb may be in reset state
|
// tsdb may be in reset state
|
||||||
if (pVnode->tsdb == NULL) return TSDB_CODE_RPC_NOT_READY;
|
if (pVnode->tsdb == NULL) return TSDB_CODE_RPC_NOT_READY;
|
||||||
if (pVnode->status == TAOS_VN_STATUS_CLOSING || pVnode->status == TAOS_VN_STATUS_DELETING)
|
if (pVnode->status == TAOS_VN_STATUS_CLOSING)
|
||||||
return TSDB_CODE_RPC_NOT_READY;
|
return TSDB_CODE_RPC_NOT_READY;
|
||||||
|
|
||||||
// TODO: Later, let slave to support query
|
// TODO: Later, let slave to support query
|
||||||
|
|
|
@ -61,7 +61,7 @@ int32_t vnodeProcessWrite(void *param1, int qtype, void *param2, void *item) {
|
||||||
|
|
||||||
// tsdb may be in reset state
|
// tsdb may be in reset state
|
||||||
if (pVnode->tsdb == NULL) return TSDB_CODE_RPC_NOT_READY;
|
if (pVnode->tsdb == NULL) return TSDB_CODE_RPC_NOT_READY;
|
||||||
if (pVnode->status == TAOS_VN_STATUS_CLOSING || pVnode->status == TAOS_VN_STATUS_DELETING)
|
if (pVnode->status == TAOS_VN_STATUS_CLOSING)
|
||||||
return TSDB_CODE_RPC_NOT_READY;
|
return TSDB_CODE_RPC_NOT_READY;
|
||||||
|
|
||||||
if (pHead->version == 0) { // from client or CQ
|
if (pHead->version == 0) { // from client or CQ
|
||||||
|
|
Loading…
Reference in New Issue