Merge pull request #21949 from taosdata/FIX/TD-25103-3.0
enh: tfsRename in the reverse order of levels with tiered storages
This commit is contained in:
commit
bc8efd7014
|
@ -144,6 +144,7 @@ int32_t vnodeRenameVgroupId(const char *srcPath, const char *dstPath, int32_t sr
|
||||||
char tsdbFilePrefix[TSDB_FILENAME_LEN] = {0};
|
char tsdbFilePrefix[TSDB_FILENAME_LEN] = {0};
|
||||||
snprintf(tsdbPath, TSDB_FILENAME_LEN, "%s%stsdb", srcPath, TD_DIRSEP);
|
snprintf(tsdbPath, TSDB_FILENAME_LEN, "%s%stsdb", srcPath, TD_DIRSEP);
|
||||||
snprintf(tsdbFilePrefix, TSDB_FILENAME_LEN, "tsdb%sv", TD_DIRSEP);
|
snprintf(tsdbFilePrefix, TSDB_FILENAME_LEN, "tsdb%sv", TD_DIRSEP);
|
||||||
|
int32_t prefixLen = strlen(tsdbFilePrefix);
|
||||||
|
|
||||||
STfsDir *tsdbDir = tfsOpendir(pTfs, tsdbPath);
|
STfsDir *tsdbDir = tfsOpendir(pTfs, tsdbPath);
|
||||||
if (tsdbDir == NULL) return 0;
|
if (tsdbDir == NULL) return 0;
|
||||||
|
@ -157,11 +158,11 @@ int32_t vnodeRenameVgroupId(const char *srcPath, const char *dstPath, int32_t sr
|
||||||
char *tsdbFilePrefixPos = strstr(oldRname, tsdbFilePrefix);
|
char *tsdbFilePrefixPos = strstr(oldRname, tsdbFilePrefix);
|
||||||
if (tsdbFilePrefixPos == NULL) continue;
|
if (tsdbFilePrefixPos == NULL) continue;
|
||||||
|
|
||||||
int32_t tsdbFileVgId = atoi(tsdbFilePrefixPos + 6);
|
int32_t tsdbFileVgId = atoi(tsdbFilePrefixPos + prefixLen);
|
||||||
if (tsdbFileVgId == srcVgId) {
|
if (tsdbFileVgId == srcVgId) {
|
||||||
char *tsdbFileSurfixPos = tsdbFilePrefixPos + 6 + vnodeVgroupIdLen(srcVgId);
|
char *tsdbFileSurfixPos = tsdbFilePrefixPos + prefixLen + vnodeVgroupIdLen(srcVgId);
|
||||||
|
|
||||||
tsdbFilePrefixPos[6] = 0;
|
tsdbFilePrefixPos[prefixLen] = 0;
|
||||||
snprintf(newRname, TSDB_FILENAME_LEN, "%s%d%s", oldRname, dstVgId, tsdbFileSurfixPos);
|
snprintf(newRname, TSDB_FILENAME_LEN, "%s%d%s", oldRname, dstVgId, tsdbFileSurfixPos);
|
||||||
vInfo("vgId:%d, rename file from %s to %s", dstVgId, tsdbFile->rname, newRname);
|
vInfo("vgId:%d, rename file from %s to %s", dstVgId, tsdbFile->rname, newRname);
|
||||||
|
|
||||||
|
|
|
@ -318,9 +318,9 @@ int32_t tfsRename(STfs *pTfs, const char *orname, const char *nrname) {
|
||||||
char oaname[TMPNAME_LEN] = "\0";
|
char oaname[TMPNAME_LEN] = "\0";
|
||||||
char naname[TMPNAME_LEN] = "\0";
|
char naname[TMPNAME_LEN] = "\0";
|
||||||
|
|
||||||
for (int32_t level = 0; level < pTfs->nlevel; level++) {
|
for (int32_t level = pTfs->nlevel - 1; level >= 0; level--) {
|
||||||
STfsTier *pTier = TFS_TIER_AT(pTfs, level);
|
STfsTier *pTier = TFS_TIER_AT(pTfs, level);
|
||||||
for (int32_t id = 0; id < pTier->ndisk; id++) {
|
for (int32_t id = pTier->ndisk - 1; id >= 0; id--) {
|
||||||
STfsDisk *pDisk = pTier->disks[id];
|
STfsDisk *pDisk = pTier->disks[id];
|
||||||
snprintf(oaname, TMPNAME_LEN, "%s%s%s", pDisk->path, TD_DIRSEP, orname);
|
snprintf(oaname, TMPNAME_LEN, "%s%s%s", pDisk->path, TD_DIRSEP, orname);
|
||||||
snprintf(naname, TMPNAME_LEN, "%s%s%s", pDisk->path, TD_DIRSEP, nrname);
|
snprintf(naname, TMPNAME_LEN, "%s%s%s", pDisk->path, TD_DIRSEP, nrname);
|
||||||
|
|
Loading…
Reference in New Issue