Merge pull request #29470 from taosdata/fix/TD-33435-main
fix: possible snapshot.py fail
This commit is contained in:
commit
d148191bf2
|
@ -78,6 +78,7 @@ int32_t vnodeAsyncC(SVAChannelID* channelID, EVAPriority priority, int32_t (*exe
|
|||
void vnodeAWait(SVATaskID* taskID);
|
||||
int32_t vnodeACancel(SVATaskID* taskID);
|
||||
int32_t vnodeAsyncSetWorkers(int64_t async, int32_t numWorkers);
|
||||
bool vnodeATaskValid(SVATaskID* taskID);
|
||||
|
||||
const char* vnodeGetATaskName(EVATaskT task);
|
||||
|
||||
|
|
|
@ -801,7 +801,6 @@ int32_t tsdbDisableAndCancelAllBgTask(STsdb *pTsdb) {
|
|||
(void)taosThreadMutexUnlock(&pTsdb->mutex);
|
||||
return terrno;
|
||||
}
|
||||
fset->mergeScheduled = false;
|
||||
tsdbFSSetBlockCommit(fset, false);
|
||||
}
|
||||
|
||||
|
@ -945,7 +944,7 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) {
|
|||
|
||||
// bool skipMerge = false;
|
||||
int32_t numFile = TARRAY2_SIZE(lvl->fobjArr);
|
||||
if (numFile >= sttTrigger && (!fset->mergeScheduled)) {
|
||||
if (numFile >= sttTrigger && (!vnodeATaskValid(&fset->mergeTask))) {
|
||||
SMergeArg *arg = taosMemoryMalloc(sizeof(*arg));
|
||||
if (arg == NULL) {
|
||||
code = terrno;
|
||||
|
@ -957,7 +956,6 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) {
|
|||
|
||||
code = vnodeAsync(MERGE_TASK_ASYNC, EVA_PRIORITY_HIGH, tsdbMerge, taosAutoMemoryFree, arg, &fset->mergeTask);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
fset->mergeScheduled = true;
|
||||
}
|
||||
|
||||
if (numFile >= sttTrigger * BLOCK_COMMIT_FACTOR) {
|
||||
|
|
|
@ -95,7 +95,6 @@ struct STFileSet {
|
|||
TSKEY lastCompact;
|
||||
TSKEY lastCommit;
|
||||
|
||||
bool mergeScheduled;
|
||||
SVATaskID mergeTask;
|
||||
SVATaskID compactTask;
|
||||
SVATaskID retentionTask;
|
||||
|
|
|
@ -484,7 +484,6 @@ static int32_t tsdbMergeGetFSet(SMerger *merger) {
|
|||
return code;
|
||||
}
|
||||
|
||||
fset->mergeScheduled = false;
|
||||
(void)taosThreadMutexUnlock(&merger->tsdb->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -842,4 +842,22 @@ const char *vnodeGetATaskName(EVATaskT taskType) {
|
|||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
bool vnodeATaskValid(SVATaskID *taskID) {
|
||||
if (taskID == NULL || taskID->async < MIN_ASYNC_ID || taskID->async > MAX_ASYNC_ID || taskID->id <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SVAsync *async = GVnodeAsyncs[taskID->async].async;
|
||||
SVATask task2 = {
|
||||
.taskId = taskID->id,
|
||||
};
|
||||
SVATask *task = NULL;
|
||||
|
||||
(void)taosThreadMutexLock(&async->mutex);
|
||||
int32_t ret = vHashGet(async->taskTable, &task2, (void **)&task);
|
||||
(void)taosThreadMutexUnlock(&async->mutex);
|
||||
|
||||
return ret == 0 && task != NULL;
|
||||
}
|
Loading…
Reference in New Issue