From 7337f7593da6ef04bab81b8eda4c726494431006 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Mon, 30 Mar 2020 12:13:09 +0800 Subject: [PATCH] add new API walGetWalFile --- src/vnode/wal/inc/twal.h | 2 +- src/vnode/wal/src/walMain.c | 20 ++++++++++---------- src/vnode/wal/test/waltest.c | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/vnode/wal/inc/twal.h b/src/vnode/wal/inc/twal.h index fffbb45db2..49fcde9e28 100644 --- a/src/vnode/wal/inc/twal.h +++ b/src/vnode/wal/inc/twal.h @@ -41,7 +41,7 @@ int walRenew(twal_h); int walWrite(twal_h, SWalHead *); void walFsync(twal_h); int walRestore(twal_h, void *pVnode, int (*writeFp)(void *ahandle, void *pWalHead)); -int walGetWalFile(twal_h, char *name, int32_t *index); +int walGetWalFile(twal_h, char *name, uint32_t *index); extern int wDebugFlag; diff --git a/src/vnode/wal/src/walMain.c b/src/vnode/wal/src/walMain.c index 6751940d1b..f327c28ce3 100644 --- a/src/vnode/wal/src/walMain.c +++ b/src/vnode/wal/src/walMain.c @@ -37,7 +37,7 @@ typedef struct { int fd; int level; int max; // maximum number of wal files - uint64_t id; // increase continuously + uint32_t id; // increase continuously int num; // number of wal files char path[TSDB_FILENAME_LEN]; char name[TSDB_FILENAME_LEN]; @@ -86,7 +86,7 @@ void walClose(void *handle) { // remove all files in the directory for (int i=0; inum; ++i) { - sprintf(pWal->name, "%s/%s%ld", pWal->path, walPrefix, pWal->id-i); + sprintf(pWal->name, "%s/%s%d", pWal->path, walPrefix, pWal->id-i); if (remove(pWal->name) <0) { wError("wal:%s, failed to remove", pWal->name); } else { @@ -113,7 +113,7 @@ int walRenew(twal_h handle) { pWal->num++; - sprintf(pWal->name, "%s/%s%ld", pWal->path, walPrefix, pWal->id); + sprintf(pWal->name, "%s/%s%d", pWal->path, walPrefix, pWal->id); pWal->fd = open(pWal->name, O_WRONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO); if (pWal->fd < 0) { @@ -125,7 +125,7 @@ int walRenew(twal_h handle) { if (pWal->num > pWal->max) { // remove the oldest wal file char name[TSDB_FILENAME_LEN]; - sprintf(name, "%s/%s%ld", pWal->path, walPrefix, pWal->id - pWal->max); + sprintf(name, "%s/%s%d", pWal->path, walPrefix, pWal->id - pWal->max); if (remove(name) <0) { wError("wal:%s, failed to remove(%s)", name, strerror(errno)); } else { @@ -173,7 +173,7 @@ int walRestore(void *handle, void *pVnode, int (*writeFp)(void *, void *)) { int code = 0; struct dirent *ent; int count = 0; - uint64_t maxId = 0, minId = -1, index =0; + uint32_t maxId = 0, minId = -1, index =0; int plen = strlen(walPrefix); char opath[TSDB_FILENAME_LEN]; @@ -185,7 +185,7 @@ int walRestore(void *handle, void *pVnode, int (*writeFp)(void *, void *)) { DIR *dir = opendir(opath); while ((ent = readdir(dir))!= NULL) { if ( strncmp(ent->d_name, walPrefix, plen) == 0) { - index = atoll(ent->d_name + plen); + index = atol(ent->d_name + plen); if (index > maxId) maxId = index; if (index < minId) minId = index; count++; @@ -193,13 +193,13 @@ int walRestore(void *handle, void *pVnode, int (*writeFp)(void *, void *)) { } if ( count != (maxId-minId+1) ) { - wError("wal:%s, messed up, count:%d max:%ld min:%ld", opath, count, maxId, minId); + wError("wal:%s, messed up, count:%d max:%d min:%d", opath, count, maxId, minId); code = -1; } else { wTrace("wal:%s, %d files will be restored", opath, count); for (index = minId; index<=maxId; ++index) { - sprintf(pWal->name, "%s/old/%s%ld", pWal->path, walPrefix, index); + sprintf(pWal->name, "%s/old/%s%d", pWal->path, walPrefix, index); code = walRestoreWalFile(pWal->name, pVnode, writeFp); if (code < 0) break; } @@ -220,7 +220,7 @@ int walRestore(void *handle, void *pVnode, int (*writeFp)(void *, void *)) { return code; } -int walGetWalFile(void *handle, char *name, int32_t *index) { +int walGetWalFile(void *handle, char *name, uint32_t *index) { SWal *pWal = (SWal *)handle; int code = 1; int32_t first = 0; @@ -236,7 +236,7 @@ int walGetWalFile(void *handle, char *name, int32_t *index) { if (*index < first && *index > pWal->id) { code = -1; // index out of range } else { - sprintf(name, "%s/%s%ld", pWal->path, walPrefix, *index); + sprintf(name, "%s/%s%d", pWal->path, walPrefix, *index); code = (*index == pWal->id) ? 0:1; } diff --git a/src/vnode/wal/test/waltest.c b/src/vnode/wal/test/waltest.c index 768c9d54d7..e90b54d1f3 100644 --- a/src/vnode/wal/test/waltest.c +++ b/src/vnode/wal/test/waltest.c @@ -106,7 +106,7 @@ int main(int argc, char *argv[]) { printf("%d wal files are written\n", total); - int32_t index = 0; + uint32_t index = 0; char name[256]; while (1) { -- GitLab