fix stream backend convert

This commit is contained in:
yihaoDeng 2023-11-17 11:44:21 +08:00
parent e455c4799d
commit c7c1bdef6e
1 changed files with 24 additions and 9 deletions

View File

@ -259,38 +259,53 @@ int32_t remoteChkp_readMetaData(char* path, SArray* list) {
taosMemoryFree(metaPath); taosMemoryFree(metaPath);
return 0; return 0;
} }
int32_t remoteChkp_validMetaFile(char* name, char* prename, int64_t chkpId) {
int8_t valid = 0;
for (int i = 0; i < strlen(name); i++) {
if (name[i] == '_') {
memcpy(prename, name, i);
if (taosStr2int64(name + i + 1) != chkpId) {
break;
} else {
valid = 1;
}
}
}
return valid;
}
int32_t remoteChkp_validAndCvtMeta(char* path, SArray* list, int64_t chkpId) { int32_t remoteChkp_validAndCvtMeta(char* path, SArray* list, int64_t chkpId) {
int32_t complete = 1; int32_t complete = 1;
int32_t len = strlen(path) + 32; int32_t len = strlen(path) + 32;
char* src = taosMemoryCalloc(1, len); char* src = taosMemoryCalloc(1, len);
char* dst = taosMemoryCalloc(1, len); char* dst = taosMemoryCalloc(1, len);
int8_t count = 0;
for (int i = 0; i < taosArrayGetSize(list); i++) { for (int i = 0; i < taosArrayGetSize(list); i++) {
char* p = taosArrayGetP(list, i); char* p = taosArrayGetP(list, i);
sprintf(src, "%s%s%s", path, TD_DIRSEP, p); sprintf(src, "%s%s%s", path, TD_DIRSEP, p);
// check file exist
if (taosStatFile(src, NULL, NULL, NULL) != 0) { if (taosStatFile(src, NULL, NULL, NULL) != 0) {
complete = 0; complete = 0;
break; break;
} }
// check file name
char temp[64] = {0}; char temp[64] = {0};
for (int j = 0; j < strlen(p); j++) { if (remoteChkp_validMetaFile(p, temp, chkpId)) {
if (p[j] == '_') { count++;
memcpy(temp, p, j);
}
if (taosStr2int64(p + j + 1) != chkpId) {
complete = 0;
break;
}
} }
if (complete == 0) break;
// rename file
sprintf(dst, "%s%s%s", path, TD_DIRSEP, temp); sprintf(dst, "%s%s%s", path, TD_DIRSEP, temp);
taosRenameFile(src, dst); taosRenameFile(src, dst);
memset(src, 0, len); memset(src, 0, len);
memset(dst, 0, len); memset(dst, 0, len);
} }
if (count != taosArrayGetSize(list)) {
complete = 0;
}
taosMemoryFree(src); taosMemoryFree(src);
taosMemoryFree(dst); taosMemoryFree(dst);