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 <[email protected]>
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