fix(tsdb): fix race condition.

This commit is contained in:
Haojun Liao 2024-01-17 15:20:17 +08:00
parent 56eac88349
commit d44dc5bbb2
1 changed files with 8 additions and 4 deletions

View File

@ -4120,8 +4120,10 @@ void tsdbReaderClose2(STsdbReader* pReader) {
taosMemoryFreeClear(pReader->status.uidList.tableUidList); taosMemoryFreeClear(pReader->status.uidList.tableUidList);
qTrace("tsdb/reader-close: %p, untake snapshot", pReader); qTrace("tsdb/reader-close: %p, untake snapshot", pReader);
tsdbUntakeReadSnap2(pReader, pReader->pReadSnap, true); void* p = pReader->pReadSnap;
pReader->pReadSnap = NULL; atomic_val_compare_exchange_ptr(pReader->pReadSnap, p, NULL);
tsdbUntakeReadSnap2(pReader, p, true);
tsem_destroy(&pReader->resumeAfterSuspend); tsem_destroy(&pReader->resumeAfterSuspend);
tsdbReleaseReader(pReader); tsdbReleaseReader(pReader);
@ -4195,8 +4197,10 @@ int32_t tsdbReaderSuspend2(STsdbReader* pReader) {
doSuspendCurrentReader(pReader); doSuspendCurrentReader(pReader);
} }
tsdbUntakeReadSnap2(pReader, pReader->pReadSnap, false); void* p = pReader->pReadSnap;
pReader->pReadSnap = NULL; atomic_val_compare_exchange_ptr(pReader->pReadSnap, p, NULL);
tsdbUntakeReadSnap2(pReader, p, false);
if (pReader->bFilesetDelimited) { if (pReader->bFilesetDelimited) {
pReader->status.memTableMinKey = INT64_MAX; pReader->status.memTableMinKey = INT64_MAX;
pReader->status.memTableMaxKey = INT64_MIN; pReader->status.memTableMaxKey = INT64_MIN;