This is an automated email from the ASF dual-hosted git repository. xuekaifeng pushed a commit to branch fix-tsfile-version-controller in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 86d927a974046716894c8291187478f7d7f3094d Author: 151250176 <[email protected]> AuthorDate: Wed Jan 20 21:59:39 2021 +0800 fix bug --- .../db/engine/storagegroup/StorageGroupProcessor.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java index 3652709..a1ff15d 100755 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java @@ -444,6 +444,14 @@ public class StorageGroupProcessor { mergingMods.delete(); } recoverCompaction(); + for (TsFileResource resource : tsFileManagement.getTsFileList(true)) { + long partitionNum = resource.getTimePartition(); + updatePartitionFileVersion(partitionNum, resource.getVersion()); + } + for (TsFileResource resource : tsFileManagement.getTsFileList(false)) { + long partitionNum = resource.getTimePartition(); + updatePartitionFileVersion(partitionNum, resource.getVersion()); + } updateLatestFlushedTime(); } catch (IOException | MetadataException e) { throw new StorageGroupProcessorException(e); @@ -484,6 +492,13 @@ public class StorageGroupProcessor { } } + private void updatePartitionFileVersion(long partitionNum, long fileVersion) { + long oldVersion = partitionMaxFileVersions.getOrDefault(partitionNum, 0L); + if (fileVersion > oldVersion) { + partitionMaxFileVersions.put(partitionNum, fileVersion); + } + } + /** * use old seq file to update latestTimeForEachDevice, globalLatestFlushedTimeForEachDevice, * partitionLatestFlushedTimeForEachDevice and timePartitionIdVersionControllerMap @@ -1958,6 +1973,8 @@ public class StorageGroupProcessor { // update latest time map updateLatestTimeMap(newTsFileResource); + long partitionNum = newTsFileResource.getTimePartition(); + updatePartitionFileVersion(partitionNum, newTsFileResource.getVersion()); } catch (DiskSpaceInsufficientException e) { logger.error( "Failed to append the tsfile {} to storage group processor {} because the disk space is insufficient.", @@ -2311,6 +2328,8 @@ public class StorageGroupProcessor { syncedResourceFile.getAbsolutePath(), targetResourceFile.getAbsolutePath(), e.getMessage())); } + + updatePartitionFileVersion(filePartitionId, tsFileResource.getVersion()); return true; }
