change wal cfg options
This commit is contained in:
parent
88f7e7d7e3
commit
a194ea05b3
|
@ -25,6 +25,11 @@ typedef enum {
|
||||||
TAOS_WAL_FSYNC = 2
|
TAOS_WAL_FSYNC = 2
|
||||||
} EWalType;
|
} EWalType;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TAOS_WAL_NOT_KEEP = 0,
|
||||||
|
TAOS_WAL_KEEP = 1
|
||||||
|
} EWalKeep;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int8_t msgType;
|
int8_t msgType;
|
||||||
int8_t reserved[3];
|
int8_t reserved[3];
|
||||||
|
@ -36,11 +41,10 @@ typedef struct {
|
||||||
} SWalHead;
|
} SWalHead;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t vgId;
|
int32_t vgId;
|
||||||
int32_t fsyncPeriod; // millisecond
|
int32_t fsyncPeriod; // millisecond
|
||||||
int8_t walLevel; // wal level
|
EWalType walLevel; // wal level
|
||||||
int8_t wals; // number of WAL files;
|
EWalKeep keep; // keep the wal file when closed
|
||||||
int8_t keep; // keep the wal file when closed
|
|
||||||
} SWalCfg;
|
} SWalCfg;
|
||||||
|
|
||||||
typedef void * twalh; // WAL HANDLE
|
typedef void * twalh; // WAL HANDLE
|
||||||
|
|
|
@ -175,7 +175,7 @@ static void *sdbGetTableFromId(int32_t tableId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t sdbInitWal() {
|
static int32_t sdbInitWal() {
|
||||||
SWalCfg walCfg = {.vgId = 1, .walLevel = 2, .wals = 2, .keep = 1, .fsyncPeriod = 0};
|
SWalCfg walCfg = {.vgId = 1, .walLevel = TAOS_WAL_FSYNC, .keep = TAOS_WAL_KEEP, .fsyncPeriod = 0};
|
||||||
char temp[TSDB_FILENAME_LEN];
|
char temp[TSDB_FILENAME_LEN];
|
||||||
sprintf(temp, "%s/wal", tsMnodeDir);
|
sprintf(temp, "%s/wal", tsMnodeDir);
|
||||||
tsSdbObj.wal = walOpen(temp, &walCfg);
|
tsSdbObj.wal = walOpen(temp, &walCfg);
|
||||||
|
|
|
@ -39,8 +39,7 @@ static void vnodeLoadCfg(SVnodeObj *pVnode, SCreateVnodeMsg* vnodeMsg) {
|
||||||
pVnode->tsdbCfg.compression = vnodeMsg->cfg.compression;
|
pVnode->tsdbCfg.compression = vnodeMsg->cfg.compression;
|
||||||
pVnode->walCfg.walLevel = vnodeMsg->cfg.walLevel;
|
pVnode->walCfg.walLevel = vnodeMsg->cfg.walLevel;
|
||||||
pVnode->walCfg.fsyncPeriod = vnodeMsg->cfg.fsyncPeriod;
|
pVnode->walCfg.fsyncPeriod = vnodeMsg->cfg.fsyncPeriod;
|
||||||
pVnode->walCfg.wals = vnodeMsg->cfg.wals;
|
pVnode->walCfg.keep = TAOS_WAL_NOT_KEEP;
|
||||||
pVnode->walCfg.keep = 0;
|
|
||||||
pVnode->syncCfg.replica = vnodeMsg->cfg.replications;
|
pVnode->syncCfg.replica = vnodeMsg->cfg.replications;
|
||||||
pVnode->syncCfg.quorum = vnodeMsg->cfg.quorum;
|
pVnode->syncCfg.quorum = vnodeMsg->cfg.quorum;
|
||||||
|
|
||||||
|
|
|
@ -128,7 +128,7 @@ void walClose(void *handle) {
|
||||||
|
|
||||||
taosClose(pWal->fd);
|
taosClose(pWal->fd);
|
||||||
|
|
||||||
if (!pWal->keep) {
|
if (pWal->keep != TAOS_WAL_KEEP) {
|
||||||
int64_t fileId = -1;
|
int64_t fileId = -1;
|
||||||
while (walGetNextFile(pWal, &fileId) >= 0) {
|
while (walGetNextFile(pWal, &fileId) >= 0) {
|
||||||
snprintf(pWal->name, sizeof(pWal->name), "%s/%s%" PRId64, pWal->path, WAL_PREFIX, fileId);
|
snprintf(pWal->name, sizeof(pWal->name), "%s/%s%" PRId64, pWal->path, WAL_PREFIX, fileId);
|
||||||
|
|
|
@ -41,7 +41,7 @@ int32_t walRenew(void *handle) {
|
||||||
wDebug("vgId:%d, file:%s, it is closed", pWal->vgId, pWal->name);
|
wDebug("vgId:%d, file:%s, it is closed", pWal->vgId, pWal->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pWal->keep) {
|
if (pWal->keep == TAOS_WAL_KEEP) {
|
||||||
pWal->fileId = 0;
|
pWal->fileId = 0;
|
||||||
} else {
|
} else {
|
||||||
if (walGetNewFile(pWal, &pWal->fileId) != 0) pWal->fileId = 0;
|
if (walGetNewFile(pWal, &pWal->fileId) != 0) pWal->fileId = 0;
|
||||||
|
@ -58,7 +58,7 @@ int32_t walRenew(void *handle) {
|
||||||
wDebug("vgId:%d, file:%s, it is created", pWal->vgId, pWal->name);
|
wDebug("vgId:%d, file:%s, it is created", pWal->vgId, pWal->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pWal->keep) {
|
if (pWal->keep != TAOS_WAL_KEEP) {
|
||||||
// remove the oldest wal file
|
// remove the oldest wal file
|
||||||
int64_t oldFileId = -1;
|
int64_t oldFileId = -1;
|
||||||
if (walGetOldFile(pWal, pWal->fileId, WAL_FILE_NUM, &oldFileId) == 0) {
|
if (walGetOldFile(pWal, pWal->fileId, WAL_FILE_NUM, &oldFileId) == 0) {
|
||||||
|
@ -144,12 +144,12 @@ int32_t walRestore(void *handle, void *pVnode, FWalWrite writeFp) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
wDebug("vgId:%d, file:%s, restore success and keep it", pWal->vgId, walName);
|
wDebug("vgId:%d, file:%s, restore success", pWal->vgId, walName);
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pWal->keep) return TSDB_CODE_SUCCESS;
|
if (pWal->keep != TAOS_WAL_KEEP) return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
wDebug("vgId:%d, wal file not exist, renew it", pWal->vgId);
|
wDebug("vgId:%d, wal file not exist, renew it", pWal->vgId);
|
||||||
|
@ -173,7 +173,6 @@ int32_t walGetWalFile(void *handle, char *fileName, int64_t *fileId) {
|
||||||
if (handle == NULL) return -1;
|
if (handle == NULL) return -1;
|
||||||
SWal *pWal = handle;
|
SWal *pWal = handle;
|
||||||
|
|
||||||
// for keep
|
|
||||||
if (*fileId == 0) *fileId = -1;
|
if (*fileId == 0) *fileId = -1;
|
||||||
|
|
||||||
pthread_mutex_lock(&(pWal->mutex));
|
pthread_mutex_lock(&(pWal->mutex));
|
||||||
|
|
|
@ -37,7 +37,6 @@ int writeToQueue(void *pVnode, void *data, int type, void *pMsg) {
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
char path[128] = "/home/jhtao/test/wal";
|
char path[128] = "/home/jhtao/test/wal";
|
||||||
int max = 3;
|
|
||||||
int level = 2;
|
int level = 2;
|
||||||
int total = 5;
|
int total = 5;
|
||||||
int rows = 10000;
|
int rows = 10000;
|
||||||
|
@ -47,8 +46,6 @@ int main(int argc, char *argv[]) {
|
||||||
for (int i=1; i<argc; ++i) {
|
for (int i=1; i<argc; ++i) {
|
||||||
if (strcmp(argv[i], "-p")==0 && i < argc-1) {
|
if (strcmp(argv[i], "-p")==0 && i < argc-1) {
|
||||||
tstrncpy(path, argv[++i], sizeof(path));
|
tstrncpy(path, argv[++i], sizeof(path));
|
||||||
} else if (strcmp(argv[i], "-m")==0 && i < argc-1) {
|
|
||||||
max = atoi(argv[++i]);
|
|
||||||
} else if (strcmp(argv[i], "-l")==0 && i < argc-1) {
|
} else if (strcmp(argv[i], "-l")==0 && i < argc-1) {
|
||||||
level = atoi(argv[++i]);
|
level = atoi(argv[++i]);
|
||||||
} else if (strcmp(argv[i], "-r")==0 && i < argc-1) {
|
} else if (strcmp(argv[i], "-r")==0 && i < argc-1) {
|
||||||
|
@ -66,7 +63,6 @@ int main(int argc, char *argv[]) {
|
||||||
} else {
|
} else {
|
||||||
printf("\nusage: %s [options] \n", argv[0]);
|
printf("\nusage: %s [options] \n", argv[0]);
|
||||||
printf(" [-p path]: wal file path default is:%s\n", path);
|
printf(" [-p path]: wal file path default is:%s\n", path);
|
||||||
printf(" [-m max]: max wal files, default is:%d\n", max);
|
|
||||||
printf(" [-l level]: log level, default is:%d\n", level);
|
printf(" [-l level]: log level, default is:%d\n", level);
|
||||||
printf(" [-t total]: total wal files, default is:%d\n", total);
|
printf(" [-t total]: total wal files, default is:%d\n", total);
|
||||||
printf(" [-r rows]: rows of records per wal file, default is:%d\n", rows);
|
printf(" [-r rows]: rows of records per wal file, default is:%d\n", rows);
|
||||||
|
@ -82,7 +78,6 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
SWalCfg walCfg;
|
SWalCfg walCfg;
|
||||||
walCfg.walLevel = level;
|
walCfg.walLevel = level;
|
||||||
walCfg.wals = max;
|
|
||||||
walCfg.keep = keep;
|
walCfg.keep = keep;
|
||||||
|
|
||||||
pWal = walOpen(path, &walCfg);
|
pWal = walOpen(path, &walCfg);
|
||||||
|
|
Loading…
Reference in New Issue