You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2024/01/30 12:39:29 UTC
(iotdb) branch master updated: Avoid deleting wal files pinned by the iot consensus (#12006)
This is an automated email from the ASF dual-hosted git repository.
tanxinyu 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 ea68bc31d49 Avoid deleting wal files pinned by the iot consensus (#12006)
ea68bc31d49 is described below
commit ea68bc31d496dea0d3e19ebd080ef22232460694
Author: Alan Choo <43...@users.noreply.github.com>
AuthorDate: Tue Jan 30 20:39:21 2024 +0800
Avoid deleting wal files pinned by the iot consensus (#12006)
---
.../storageengine/dataregion/wal/node/WALNode.java | 32 ++++++----------------
1 file changed, 9 insertions(+), 23 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
index 9b26ead91f9..c89f2d8cb9c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
@@ -388,11 +388,11 @@ public class WALNode implements IWALNode {
/** Delete obsolete wal files while recording which succeeded or failed */
private void deleteOutdatedFilesAndUpdateMetric() {
- for (File currentWal : sortedWalFilesExcludingLast) {
- long searchIndex = WALFileUtils.parseStartSearchIndex(currentWal.getName());
+ for (int fileArrIdx = 0; fileArrIdx < sortedWalFilesExcludingLast.length; ++fileArrIdx) {
+ File currentWal = sortedWalFilesExcludingLast[fileArrIdx];
WALFileStatus walFileStatus = WALFileUtils.parseStatusCode(currentWal.getName());
long versionId = WALFileUtils.parseVersionId(currentWal.getName());
- if (canDeleteFile(searchIndex, walFileStatus, versionId)) {
+ if (canDeleteFile(fileArrIdx, walFileStatus, versionId)) {
long fileSize = currentWal.length();
if (currentWal.delete()) {
deleteFileSize += fileSize;
@@ -409,23 +409,10 @@ public class WALNode implements IWALNode {
}
private int initFileIndexAfterFilterSafelyDeleteIndex() {
- int endFileIndex =
- safelyDeletedSearchIndex == DEFAULT_SAFELY_DELETED_SEARCH_INDEX
- ? sortedWalFilesExcludingLast.length
- : WALFileUtils.binarySearchFileBySearchIndex(
- sortedWalFilesExcludingLast, safelyDeletedSearchIndex + 1);
- // delete files whose file status is CONTAINS_NONE_SEARCH_INDEX
- if (endFileIndex == -1) {
- endFileIndex = 0;
- }
- while (endFileIndex < sortedWalFilesExcludingLast.length) {
- if (WALFileUtils.parseStatusCode(sortedWalFilesExcludingLast[endFileIndex].getName())
- == WALFileStatus.CONTAINS_SEARCH_INDEX) {
- break;
- }
- endFileIndex++;
- }
- return endFileIndex;
+ return safelyDeletedSearchIndex == DEFAULT_SAFELY_DELETED_SEARCH_INDEX
+ ? sortedWalFilesExcludingLast.length
+ : WALFileUtils.binarySearchFileBySearchIndex(
+ sortedWalFilesExcludingLast, safelyDeletedSearchIndex + 1);
}
/** Return true iff effective information ratio is too small or disk usage is too large. */
@@ -596,13 +583,12 @@ public class WALNode implements IWALNode {
memTableIdsOfCurrentWal);
}
- private boolean canDeleteFile(long searchIndex, WALFileStatus walFileStatus, long versionId) {
- return (searchIndex < safelyDeletedSearchIndex
+ private boolean canDeleteFile(long fileArrIdx, WALFileStatus walFileStatus, long versionId) {
+ return (fileArrIdx < fileIndexAfterFilterSafelyDeleteIndex
|| walFileStatus == WALFileStatus.CONTAINS_NONE_SEARCH_INDEX)
&& !isContainsActiveOrPinnedMemTable(versionId);
}
}
-
// endregion
// region Search interfaces for consensus group