Merge pull request #19727 from taosdata/fix/TD-22143

fix(query): protect read snap with reader mutex when closing reader
This commit is contained in:
Xiaoyu Wang 2023-02-02 09:13:58 +08:00 committed by GitHub
commit 7e3b987e65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 1 deletions

View File

@ -4019,6 +4019,7 @@ void tsdbReaderClose(STsdbReader* pReader) {
return; return;
} }
tsdbAcquireReader(pReader);
{ {
if (pReader->innerReader[0] != NULL || pReader->innerReader[1] != NULL) { if (pReader->innerReader[0] != NULL || pReader->innerReader[1] != NULL) {
STsdbReader* p = pReader->innerReader[0]; STsdbReader* p = pReader->innerReader[0];
@ -4076,10 +4077,12 @@ void tsdbReaderClose(STsdbReader* pReader) {
pReader->pDelIdx = NULL; pReader->pDelIdx = NULL;
} }
qTrace("tsdb/reader: %p, untake snapshot", pReader); qTrace("tsdb/reader-close: %p, untake snapshot", pReader);
tsdbUntakeReadSnap(pReader, pReader->pReadSnap, true); tsdbUntakeReadSnap(pReader, pReader->pReadSnap, true);
pReader->pReadSnap = NULL; pReader->pReadSnap = NULL;
tsdbReleaseReader(pReader);
tsdbUninitReaderLock(pReader); tsdbUninitReaderLock(pReader);
taosMemoryFree(pReader->status.uidCheckInfo.tableUidList); taosMemoryFree(pReader->status.uidCheckInfo.tableUidList);