This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 1969f7e18b3 Fix deadlock when flush an empty TsFile and query
concurrently
1969f7e18b3 is described below
commit 1969f7e18b3fae85afa04cd9ed21bec1536b7b73
Author: Haonan <[email protected]>
AuthorDate: Mon Mar 18 11:30:44 2024 +0800
Fix deadlock when flush an empty TsFile and query concurrently
---
.../org/apache/iotdb/db/storageengine/dataregion/DataRegion.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 15864cc9d80..c7d071f6004 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -2356,19 +2356,21 @@ public class DataRegion implements IDataRegionForQuery {
tsFileProcessor.close();
if (isEmptyFile) {
tsFileProcessor.getTsFileResource().remove();
- tsFileManager.remove(tsFileProcessor.getTsFileResource(),
tsFileProcessor.isSequence());
} else if (isValidateTsFileFailed) {
String tsFilePath =
tsFileProcessor.getTsFileResource().getTsFile().getAbsolutePath();
renameAndHandleError(tsFilePath, tsFilePath + BROKEN_SUFFIX);
renameAndHandleError(
tsFilePath + RESOURCE_SUFFIX, tsFilePath + RESOURCE_SUFFIX +
BROKEN_SUFFIX);
- tsFileManager.remove(tsFileProcessor.getTsFileResource(),
tsFileProcessor.isSequence());
} else {
tsFileResourceManager.registerSealedTsFileResource(tsFileProcessor.getTsFileResource());
}
} finally {
closeQueryLock.writeLock().unlock();
}
+ if (isEmptyFile || isValidateTsFileFailed) {
+ tsFileManager.remove(tsFileProcessor.getTsFileResource(),
tsFileProcessor.isSequence());
+ }
+
// closingSequenceTsFileProcessor is a thread safety class.
synchronized (closeStorageGroupCondition) {