TD-1949
This commit is contained in:
parent
6ea61b4916
commit
101e0bb1d2
|
@ -59,6 +59,7 @@ int32_t walAlter(twalh pWal, SWalCfg *pCfg);
|
|||
void walStop(twalh);
|
||||
void walClose(twalh);
|
||||
int32_t walRenew(twalh);
|
||||
void walRemoveOldFiles(twalh);
|
||||
int32_t walWrite(twalh, SWalHead *);
|
||||
void walFsync(twalh, bool forceFsync);
|
||||
int32_t walRestore(twalh, void *pVnode, FWalWrite writeFp);
|
||||
|
|
|
@ -583,6 +583,7 @@ static int vnodeProcessTsdbStatus(void *arg, int status) {
|
|||
|
||||
if (status == TSDB_STATUS_COMMIT_OVER) {
|
||||
vDebug("vgId:%d, commit over, fver:%" PRIu64 " vver:%" PRIu64, pVnode->vgId, pVnode->fversion, pVnode->version);
|
||||
walRemoveOldFiles(pVnode->wal);
|
||||
return vnodeSaveVersion(pVnode);
|
||||
}
|
||||
|
||||
|
|
|
@ -135,7 +135,7 @@ void walClose(void *handle) {
|
|||
if (remove(pWal->name) < 0) {
|
||||
wError("vgId:%d, wal:%p file:%s, failed to remove", pWal->vgId, pWal, pWal->name);
|
||||
} else {
|
||||
wDebug("vgId:%d, wal:%p file:%s, it is removed", pWal->vgId, pWal, pWal->name);
|
||||
wInfo("vgId:%d, wal:%p file:%s, it is removed", pWal->vgId, pWal, pWal->name);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -58,24 +58,32 @@ int32_t walRenew(void *handle) {
|
|||
wDebug("vgId:%d, file:%s, it is created", pWal->vgId, pWal->name);
|
||||
}
|
||||
|
||||
if (pWal->keep != TAOS_WAL_KEEP) {
|
||||
// remove the oldest wal file
|
||||
int64_t oldFileId = -1;
|
||||
if (walGetOldFile(pWal, pWal->fileId, WAL_FILE_NUM, &oldFileId) == 0) {
|
||||
char walName[WAL_FILE_LEN] = {0};
|
||||
snprintf(walName, sizeof(walName), "%s/%s%" PRId64, pWal->path, WAL_PREFIX, oldFileId);
|
||||
pthread_mutex_unlock(&pWal->mutex);
|
||||
|
||||
if (remove(walName) < 0) {
|
||||
wError("vgId:%d, file:%s, failed to remove since %s", pWal->vgId, walName, strerror(errno));
|
||||
} else {
|
||||
wDebug("vgId:%d, file:%s, it is removed", pWal->vgId, walName);
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
void walRemoveOldFiles(void *handle) {
|
||||
SWal *pWal = handle;
|
||||
if (pWal == NULL) return;
|
||||
if (pWal->keep == TAOS_WAL_KEEP) return;
|
||||
|
||||
pthread_mutex_lock(&pWal->mutex);
|
||||
|
||||
// remove the oldest wal file
|
||||
int64_t oldFileId = -1;
|
||||
if (walGetOldFile(pWal, pWal->fileId, WAL_FILE_NUM, &oldFileId) == 0) {
|
||||
char walName[WAL_FILE_LEN] = {0};
|
||||
snprintf(walName, sizeof(walName), "%s/%s%" PRId64, pWal->path, WAL_PREFIX, oldFileId);
|
||||
|
||||
if (remove(walName) < 0) {
|
||||
wError("vgId:%d, file:%s, failed to remove since %s", pWal->vgId, walName, strerror(errno));
|
||||
} else {
|
||||
wInfo("vgId:%d, file:%s, it is removed", pWal->vgId, walName);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&pWal->mutex);
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t walWrite(void *handle, SWalHead *pHead) {
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
|
||||
print ============== deploy
|
||||
system sh/exec.sh -n dnode1 -s start
|
||||
sleep 3001
|
||||
sql connect
|
||||
|
||||
sql create database d1
|
||||
sql use d1
|
||||
|
||||
sql create table t1 (ts timestamp, i int)
|
||||
sql insert into t1 values(now, 1);
|
||||
|
||||
print =============== step3
|
||||
sleep 3000
|
||||
sql select * from t1;
|
||||
print rows: $rows
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGKILL
|
||||
sleep 3000
|
||||
|
||||
print =============== step4
|
||||
system sh/exec.sh -n dnode1 -s start -x SIGKILL
|
||||
sleep 3000
|
||||
sql select * from t1;
|
||||
print rows: $rows
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGKILL
|
||||
sleep 3000
|
||||
|
||||
print =============== step5
|
||||
system sh/exec.sh -n dnode1 -s start -x SIGKILL
|
||||
sleep 3000
|
||||
sql select * from t1;
|
||||
print rows: $rows
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGKILL
|
||||
sleep 3000
|
||||
|
||||
print =============== step6
|
||||
system sh/exec.sh -n dnode1 -s start -x SIGKILL
|
||||
sleep 3000
|
||||
sql select * from t1;
|
||||
print rows: $rows
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGKILL
|
||||
sleep 3000
|
||||
|
||||
print =============== step7
|
||||
system sh/exec.sh -n dnode1 -s start -x SIGKILL
|
||||
sleep 3000
|
||||
sql select * from t1;
|
||||
print rows: $rows
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGKILL
|
||||
sleep 3000
|
||||
|
||||
print =============== step8
|
||||
system sh/exec.sh -n dnode1 -s start -x SIGKILL
|
||||
sleep 3000
|
||||
sql select * from t1;
|
||||
print rows: $rows
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGKILL
|
Loading…
Reference in New Issue