enh: persist wal at the beginning of vnodeCommit
This commit is contained in:
parent
cccfa17027
commit
07db554fab
|
@ -43,7 +43,7 @@ extern "C" {
|
|||
#define WAL_FILE_LEN (WAL_PATH_LEN + 32)
|
||||
#define WAL_MAGIC 0xFAFBFCFDF4F3F2F1ULL
|
||||
#define WAL_SCAN_BUF_SIZE (1024 * 1024 * 3)
|
||||
#define WAL_RECOV_SIZE_LIMIT (100 * WAL_SCAN_BUF_SIZE)
|
||||
#define WAL_RECOV_SIZE_LIMIT (200 * WAL_SCAN_BUF_SIZE)
|
||||
|
||||
typedef enum {
|
||||
TAOS_WAL_WRITE = 1,
|
||||
|
@ -159,6 +159,7 @@ void walCleanUp();
|
|||
// handle open and ctl
|
||||
SWal *walOpen(const char *path, SWalCfg *pCfg);
|
||||
int32_t walAlter(SWal *, SWalCfg *pCfg);
|
||||
int32_t walPersist(SWal *);
|
||||
void walClose(SWal *);
|
||||
|
||||
// write interfaces
|
||||
|
|
|
@ -212,6 +212,12 @@ int vnodeCommit(SVnode *pVnode) {
|
|||
vInfo("vgId:%d, start to commit, commit ID:%" PRId64 " version:%" PRId64, TD_VID(pVnode), pVnode->state.commitID,
|
||||
pVnode->state.applied);
|
||||
|
||||
// persist wal before starting
|
||||
if (walPersist(pVnode->pWal) < 0) {
|
||||
vError("vgId:%d, failed to persist wal since %s", TD_VID(pVnode), terrstr());
|
||||
return -1;
|
||||
}
|
||||
|
||||
pVnode->state.commitTerm = pVnode->state.applyTerm;
|
||||
|
||||
// save info
|
||||
|
|
|
@ -187,6 +187,13 @@ int32_t walAlter(SWal *pWal, SWalCfg *pCfg) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int32_t walPersist(SWal *pWal) {
|
||||
taosThreadMutexLock(&pWal->mutex);
|
||||
int32_t ret = walSaveMeta(pWal);
|
||||
taosThreadMutexUnlock(&pWal->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void walClose(SWal *pWal) {
|
||||
taosThreadMutexLock(&pWal->mutex);
|
||||
(void)walSaveMeta(pWal);
|
||||
|
|
Loading…
Reference in New Issue