add flag in syncEnv, to deal with expired timer
This commit is contained in:
parent
3352f9520e
commit
c5602fbaba
|
@ -158,6 +158,8 @@ typedef enum {
|
|||
|
||||
int32_t syncPropose(int64_t rid, const SRpcMsg* pMsg, bool isWeak);
|
||||
|
||||
bool syncEnvIsStart();
|
||||
|
||||
extern int32_t sDebugFlag;
|
||||
|
||||
//-----------------------------------------
|
||||
|
|
|
@ -193,6 +193,9 @@ void smaHandleRes(void *pVnode, int64_t smaId, const SArray *data) {
|
|||
|
||||
// sync integration
|
||||
int vnodeProcessSyncReq(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
|
||||
|
||||
if (syncEnvIsStart()) {
|
||||
|
||||
SSyncNode *pSyncNode = syncNodeAcquire(pVnode->sync);
|
||||
assert(pSyncNode != NULL);
|
||||
|
||||
|
@ -270,7 +273,9 @@ int vnodeProcessSyncReq(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
|
|||
}
|
||||
|
||||
syncNodeRelease(pSyncNode);
|
||||
|
||||
} else {
|
||||
vError("==vnodeProcessSyncReq== error syncEnv stop");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,8 @@ extern "C" {
|
|||
#define EMPTY_RAFT_ID ((SRaftId){.addr = 0, .vgId = 0})
|
||||
|
||||
typedef struct SSyncEnv {
|
||||
uint8_t isStart;
|
||||
|
||||
// tick timer
|
||||
tmr_h pEnvTickTimer;
|
||||
int32_t envTickTimerMS;
|
||||
|
|
|
@ -26,6 +26,14 @@ static int32_t doSyncEnvStopTimer(SSyncEnv *pSyncEnv);
|
|||
static void syncEnvTick(void *param, void *tmrId);
|
||||
// --------------------------------
|
||||
|
||||
bool syncEnvIsStart() {
|
||||
if (gSyncEnv == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return atomic_load_8(&(gSyncEnv->isStart));
|
||||
}
|
||||
|
||||
int32_t syncEnvStart() {
|
||||
int32_t ret = 0;
|
||||
taosSeedRand(taosGetTimestampSec());
|
||||
|
@ -88,11 +96,15 @@ static SSyncEnv *doSyncEnvStart() {
|
|||
|
||||
// start tmr thread
|
||||
pSyncEnv->pTimerManager = taosTmrInit(1000, 50, 10000, "SYNC-ENV");
|
||||
|
||||
atomic_store_8(&(pSyncEnv->isStart), 1);
|
||||
return pSyncEnv;
|
||||
}
|
||||
|
||||
static int32_t doSyncEnvStop(SSyncEnv *pSyncEnv) {
|
||||
assert(pSyncEnv == gSyncEnv);
|
||||
atomic_store_8(&(pSyncEnv->isStart), 0);
|
||||
|
||||
if (pSyncEnv != NULL) {
|
||||
taosTmrCleanUp(pSyncEnv->pTimerManager);
|
||||
taosMemoryFree(pSyncEnv);
|
||||
|
|
Loading…
Reference in New Issue