This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.13 by this push:
new f1c3cfa109 [To rel/0.13] Accelerate restart process (#7477)
f1c3cfa109 is described below
commit f1c3cfa109027a10217399b03017e9a16540f171
Author: Jackie Tien <[email protected]>
AuthorDate: Thu Sep 29 09:29:36 2022 +0800
[To rel/0.13] Accelerate restart process (#7477)
---
.../storagegroup/VirtualStorageGroupProcessor.java | 29 +++++++++++++---------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
index 997a61467e..e0bac29972 100755
---
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
@@ -540,8 +540,18 @@ public class VirtualStorageGroupProcessor {
throw new StorageGroupProcessorException(e);
}
- List<TsFileResource> seqTsFileResources =
tsFileManager.getTsFileList(true);
- for (TsFileResource resource : seqTsFileResources) {
+ // recover and start timed compaction thread
+ initCompaction();
+
+ logger.info(
+ "The virtual storage group {}[{}] is recovered successfully",
+ logicalStorageGroupName,
+ virtualStorageGroupId);
+ }
+
+ private void updateLastFlushTime(TsFileResource resource, boolean isSeq) {
+ // only update flush time when it is a seq file
+ if (isSeq) {
long timePartitionId = resource.getTimePartition();
Map<String, Long> endTimeMap = new HashMap<>();
for (String deviceId : resource.getDevices()) {
@@ -552,14 +562,6 @@ public class VirtualStorageGroupProcessor {
lastFlushTimeManager.setMultiDeviceFlushedTime(timePartitionId,
endTimeMap);
lastFlushTimeManager.setMultiDeviceGlobalFlushedTime(endTimeMap);
}
-
- // recover and start timed compaction thread
- initCompaction();
-
- logger.info(
- "The virtual storage group {}[{}] is recovered successfully",
- logicalStorageGroupName,
- virtualStorageGroupId);
}
private void initCompaction() {
@@ -768,6 +770,7 @@ public class VirtualStorageGroupProcessor {
} else {
tsFileResource.setStatus(TsFileResourceStatus.CLOSED);
tsFileManager.add(tsFileResource, isSeq);
+ updateLastFlushTime(tsFileResource, isSeq);
tsFileResourceManager.registerSealedTsFileResource(tsFileResource);
}
continue;
@@ -779,6 +782,8 @@ public class VirtualStorageGroupProcessor {
if (i != tsFiles.size() - 1 || writer == null || !writer.canWrite()) {
// not the last file or cannot write, just close it
tsFileResource.close();
+ tsFileManager.add(tsFileResource, isSeq);
+ updateLastFlushTime(tsFileResource, isSeq);
tsFileResourceManager.registerSealedTsFileResource(tsFileResource);
} else if (writer.canWrite()) {
// the last file is not closed, continue writing to in
@@ -833,12 +838,12 @@ public class VirtualStorageGroupProcessor {
}
tsFileProcessor.getTsFileProcessorInfo().addTSPMemCost(chunkMetadataSize);
}
+ tsFileManager.add(tsFileResource, isSeq);
+ updateLastFlushTime(tsFileResource, isSeq);
}
- tsFileManager.add(tsFileResource, isSeq);
} catch (StorageGroupProcessorException | IOException e) {
logger.warn(
"Skip TsFile: {} because of error in recover: ",
tsFileResource.getTsFilePath(), e);
- continue;
} finally {
if (writer != null) {
writer.close();