rm duplicate para
This commit is contained in:
parent
92b247aae8
commit
a619b8f5be
|
@ -264,47 +264,73 @@ int32_t backendManagerGetDelta(SBackendManager* bm, int64_t chkpId, SArray* list
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t backendManagerDumpTo(SBackendManager* bm, char* name) {
|
int32_t backendManagerDumpTo(SBackendManager* bm, char* dname) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
int32_t len = bm->len + 64;
|
int32_t len = bm->len + 128;
|
||||||
char* buf = taosMemoryCalloc(1, len);
|
|
||||||
sprintf(buf, "%s%s%s", bm->path, TD_DIRSEP, name);
|
|
||||||
|
|
||||||
code = taosMkDir(buf);
|
char* dstBuf = taosMemoryCalloc(1, len);
|
||||||
|
char* srcBuf = taosMemoryCalloc(1, len);
|
||||||
|
|
||||||
|
char* srcDir = taosMemoryCalloc(1, len);
|
||||||
|
char* dstDir = taosMemoryCalloc(1, len);
|
||||||
|
|
||||||
|
sprintf(srcDir, "%s%s%s%" PRId64 "", bm->path, TD_DIRSEP, "checkpoint", bm->curChkpId);
|
||||||
|
sprintf(dstDir, "%s%s%s", bm->path, TD_DIRSEP, dname);
|
||||||
|
|
||||||
|
code = taosMkDir(dstDir);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear current file
|
// clear current file
|
||||||
memset(buf, 0, len);
|
memset(dstBuf, 0, len);
|
||||||
sprintf(buf, "%s%s%s%s%s", bm->path, TD_DIRSEP, name, TD_DIRSEP, bm->pCurrent);
|
sprintf(dstBuf, "%s%s%s", dstDir, TD_DIRSEP, bm->pCurrent);
|
||||||
taosRemoveFile(buf);
|
taosRemoveFile(dstBuf);
|
||||||
|
|
||||||
memset(buf, 0, len);
|
memset(dstBuf, 0, len);
|
||||||
sprintf(buf, "%s%s%s%s%s", bm->path, TD_DIRSEP, name, TD_DIRSEP, bm->pManifest);
|
sprintf(dstBuf, "%s%s%s", dstDir, TD_DIRSEP, bm->pManifest);
|
||||||
taosRemoveFile(buf);
|
taosRemoveFile(dstBuf);
|
||||||
|
|
||||||
|
// add file to $name dir
|
||||||
for (int i = 0; i < taosArrayGetSize(bm->pAdd); i++) {
|
for (int i = 0; i < taosArrayGetSize(bm->pAdd); i++) {
|
||||||
memset(buf, 0, len);
|
memset(dstBuf, 0, len);
|
||||||
|
|
||||||
char* filename = taosArrayGetP(bm->pAdd, i);
|
char* filename = taosArrayGetP(bm->pAdd, i);
|
||||||
sprintf(buf, "%s%s%s%s%s", bm->path, TD_DIRSEP, name, TD_DIRSEP, filename);
|
sprintf(srcBuf, "%s%s%s", srcDir, TD_DIRSEP, filename);
|
||||||
|
sprintf(dstBuf, "%s%s%s", dstDir, TD_DIRSEP, filename);
|
||||||
|
|
||||||
char* src = taosMemoryCalloc(1, len);
|
taosCopyFile(srcBuf, dstBuf);
|
||||||
sprintf(src, "%s%s%s%" PRId64 "%s%s", bm->path, TD_DIRSEP, "checkpoint", bm->curChkpId, TD_DIRSEP, filename);
|
|
||||||
taosCopyFile(src, buf);
|
|
||||||
}
|
}
|
||||||
|
// del file in $name
|
||||||
for (int i = 0; i < taosArrayGetSize(bm->pDel); i++) {
|
for (int i = 0; i < taosArrayGetSize(bm->pDel); i++) {
|
||||||
memset(buf, 0, len);
|
memset(dstBuf, 0, len);
|
||||||
|
|
||||||
char* filename = taosArrayGetP(bm->pDel, i);
|
char* filename = taosArrayGetP(bm->pDel, i);
|
||||||
sprintf(buf, "%s%s%s%s%s", bm->path, TD_DIRSEP, name, TD_DIRSEP, filename);
|
sprintf(dstBuf, "%s%s%s", dstDir, TD_DIRSEP, filename);
|
||||||
taosRemoveFile(buf);
|
taosRemoveFile(dstBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// copy current file to dst dir
|
||||||
|
memset(srcBuf, 0, len);
|
||||||
|
memset(dstBuf, 0, len);
|
||||||
|
sprintf(srcBuf, "%s%s%s", srcDir, TD_DIRSEP, bm->pCurrent);
|
||||||
|
sprintf(dstBuf, "%s%s%s", dstDir, TD_DIRSEP, bm->pCurrent);
|
||||||
|
taosCopyFile(srcBuf, dstBuf);
|
||||||
|
|
||||||
|
// copy manifest file to dst dir
|
||||||
|
memset(srcBuf, 0, len);
|
||||||
|
memset(dstBuf, 0, len);
|
||||||
|
sprintf(srcBuf, "%s%s%s", srcDir, TD_DIRSEP, bm->pManifest);
|
||||||
|
sprintf(dstBuf, "%s%s%s", dstDir, TD_DIRSEP, bm->pManifest);
|
||||||
|
taosCopyFile(srcBuf, dstBuf);
|
||||||
|
|
||||||
// clear delta data
|
// clear delta data
|
||||||
taosArrayClearP(bm->pAdd, taosMemoryFree);
|
taosArrayClearP(bm->pAdd, taosMemoryFree);
|
||||||
taosArrayClearP(bm->pDel, taosMemoryFree);
|
taosArrayClearP(bm->pDel, taosMemoryFree);
|
||||||
|
|
||||||
|
taosMemoryFree(srcBuf);
|
||||||
|
taosMemoryFree(dstBuf);
|
||||||
|
taosMemoryFree(srcDir);
|
||||||
|
taosMemoryFree(dstDir);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue