This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch delete_object_file in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 000c24023fcfc3367153b33588f3bd1931a9db16 Author: HTHou <[email protected]> AuthorDate: Mon Dec 15 14:17:01 2025 +0800 deving --- .../db/storageengine/dataregion/DataRegion.java | 14 +++++++++++-- .../db/storageengine/rescon/disk/TierManager.java | 24 ++++++++++++++++++++++ 2 files changed, 36 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 09c9ee84304..639b7e4c214 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 @@ -2751,8 +2751,8 @@ public class DataRegion implements IDataRegionForQuery { if (deleted) { return; } - TableDeviceSchemaCache.getInstance() - .invalidateLastCache(getDatabaseName(), modEntries.get(0).getTableName()); + String tableName = modEntries.get(0).getTableName(); + TableDeviceSchemaCache.getInstance().invalidateLastCache(getDatabaseName(), tableName); List<WALFlushListener> walListeners = logDeletionInWAL(node); for (WALFlushListener walFlushListener : walListeners) { @@ -2762,6 +2762,10 @@ public class DataRegion implements IDataRegionForQuery { } } + if (TierManager.getInstance().checkObjectPathExist(dataRegionIdString, tableName)) { + deleteObjectFiles(tableName, modEntries); + } + List<List<TsFileResource>> sealedTsFileResourceLists = new ArrayList<>(modEntries.size()); for (TableDeletionEntry modEntry : modEntries) { List<TsFileResource> sealedTsFileResource = new ArrayList<>(); @@ -2930,6 +2934,12 @@ public class DataRegion implements IDataRegionForQuery { return walFlushListeners; } + private void deleteObjectFiles(String tableName, List<TableDeletionEntry> modEntries) { + for (TableDeletionEntry modEntry : modEntries) { + + } + } + /** * For IoTConsensus sync. See <a href="https://github.com/apache/iotdb/pull/12955">github pull * request</a> for details. diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java index a5fa8b54e7b..e173bb0abaf 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java @@ -28,6 +28,7 @@ import org.apache.iotdb.db.storageengine.rescon.disk.strategy.MinFolderOccupiedS import org.apache.iotdb.db.storageengine.rescon.disk.strategy.RandomOnDiskUsableSpaceStrategy; import org.apache.iotdb.metrics.utils.FileStoreUtils; +import com.google.common.io.BaseEncoding; import org.apache.tsfile.fileSystem.FSFactoryProducer; import org.apache.tsfile.fileSystem.FSType; import org.apache.tsfile.utils.FSUtils; @@ -36,6 +37,7 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.FileStore; import java.nio.file.Path; import java.util.ArrayList; @@ -272,6 +274,28 @@ public class TierManager { return Optional.empty(); } + public boolean checkObjectPathExist(String regionIdStr, String... path) { + StringBuilder objectPath = new StringBuilder(); + objectPath.append(regionIdStr); + for (String str : path) { + objectPath + .append(File.separator) + .append( + config.getRestrictObjectLimit() + ? str + : BaseEncoding.base32() + .omitPadding() + .encode(str.getBytes(StandardCharsets.UTF_8))); + } + for (String objectDir : objectDirs) { + File objectFilePath = FSFactoryProducer.getFSFactory().getFile(objectDir, objectPath.toString()); + if (objectFilePath.exists()) { + return true; + } + } + return false; + } + public int getTiersNum() { return seqTiers.size(); }
