Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,14 @@ private void upgradePropertiesFile() throws IOException {
System.exit(-1);
}

// virtual storage group num can only set to 1 when upgrading from old version
if (!virtualStorageGroupNum.equals("1")) {
logger.error(
"virtual storage group num cannot set to {} when upgrading from old version, "
+ "please set to 1 and restart",
virtualStorageGroupNum);
System.exit(-1);
}
try (FileOutputStream tmpFOS = new FileOutputStream(tmpPropertiesFile.toString())) {
properties.setProperty(PARTITION_INTERVAL_STRING, String.valueOf(partitionInterval));
properties.setProperty(TSFILE_FILE_SYSTEM_STRING, tsfileFileSystem);
Expand Down Expand Up @@ -432,6 +440,16 @@ private void moveFileToUpgradeFolder(List<String> folders) {
if (!storageGroup.isDirectory()) {
continue;
}
// create virtual storage group folder 0
File virtualStorageGroupDir = fsFactory.getFile(storageGroup, "0");
if (virtualStorageGroupDir.mkdirs()) {
logger.info(
"virtual storage directory {} doesn't exist, create it",
virtualStorageGroupDir.getPath());
} else if (!virtualStorageGroupDir.exists()) {
logger.error(
"Create virtual storage directory {} failed", virtualStorageGroupDir.getPath());
}
for (File partitionDir : storageGroup.listFiles()) {
if (!partitionDir.isDirectory()) {
continue;
Expand All @@ -450,7 +468,8 @@ private void moveFileToUpgradeFolder(List<String> folders) {
if (oldTsfileArray.length + oldResourceFileArray.length + oldModificationFileArray.length
!= 0) {
// create upgrade directory if not exist
File upgradeFolder = fsFactory.getFile(partitionDir, IoTDBConstant.UPGRADE_FOLDER_NAME);
File upgradeFolder =
fsFactory.getFile(virtualStorageGroupDir, IoTDBConstant.UPGRADE_FOLDER_NAME);
if (upgradeFolder.mkdirs()) {
logger.info("Upgrade Directory {} doesn't exist, create it", upgradeFolder.getPath());
} else if (!upgradeFolder.exists()) {
Expand All @@ -475,6 +494,13 @@ private void moveFileToUpgradeFolder(List<String> folders) {
}
}
}
if (partitionDir.listFiles().length == 0) {
try {
Files.delete(partitionDir.toPath());
} catch (IOException e) {
logger.error("Delete {} failed", partitionDir);
}
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;

import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;

public class TsFileMetadataV2 {
Expand All @@ -34,12 +35,12 @@ private TsFileMetadataV2() {}
* deserialize data from the buffer.
*
* @param buffer -buffer use to deserialize
* @return -a instance of TsFileMetaData
* @return -a pair of TsFileMetaData and VersionInfo
*/
public static TsFileMetadata deserializeFrom(
ByteBuffer buffer, List<Pair<Long, Long>> versionInfo) {
public static Pair<TsFileMetadata, List<Pair<Long, Long>>> deserializeFrom(ByteBuffer buffer) {
TsFileMetadata fileMetaData = new TsFileMetadata();

List<Pair<Long, Long>> versionInfo = new ArrayList<>();
// metadataIndex
fileMetaData.setMetadataIndex(MetadataIndexNodeV2.deserializeFrom(buffer));
// totalChunkNum
Expand Down Expand Up @@ -70,6 +71,6 @@ public static TsFileMetadata deserializeFrom(
BloomFilter.buildBloomFilter(bytes, filterSize, hashFunctionSize));
}

return fileMetaData;
return new Pair<>(fileMetaData, versionInfo);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -145,11 +145,11 @@ public String readVersionNumberV2() throws IOException {
*/
@Override
public TsFileMetadata readFileMetadata() throws IOException {
if (tsFileMetaData == null) {
versionInfo = new ArrayList<>();
tsFileMetaData =
TsFileMetadataV2.deserializeFrom(
readData(fileMetadataPos, fileMetadataSize), versionInfo);
if (tsFileMetaData == null || versionInfo == null) {
Pair<TsFileMetadata, List<Pair<Long, Long>>> pair =
TsFileMetadataV2.deserializeFrom(readData(fileMetadataPos, fileMetadataSize));
tsFileMetaData = pair.left;
versionInfo = pair.right;
}
return tsFileMetaData;
}
Expand Down