This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch handle_wal_failure in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit b645afd0daf80e85116036a9a6250cfe9ce35cc9 Author: Tian Jiang <[email protected]> AuthorDate: Wed Aug 7 10:22:35 2024 +0800 Handle exception when the WAL initializtion is interrupted --- .../db/storageengine/dataregion/memtable/TsFileProcessor.java | 10 ++++++---- .../dataregion/wal/allocation/FirstCreateStrategy.java | 7 ++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java index ae974b17519..f30dd1799d4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java @@ -296,10 +296,11 @@ public class TsFileProcessor { } } catch (Exception e) { rollbackMemoryInfo(memIncrements); + logger.warn("Exception during wal flush", e); throw new WriteProcessException( String.format( - "%s: %s write WAL failed", - storageGroupName, tsFileResource.getTsFile().getAbsolutePath()), + "%s: %s write WAL failed: %s", + storageGroupName, tsFileResource.getTsFile().getAbsolutePath(), e.getMessage()), e); } finally { // recordScheduleWalCost @@ -370,10 +371,11 @@ public class TsFileProcessor { } } catch (Exception e) { rollbackMemoryInfo(memIncrements); + logger.warn("Exception during wal flush", e); throw new WriteProcessException( String.format( - "%s: %s write WAL failed", - storageGroupName, tsFileResource.getTsFile().getAbsolutePath()), + "%s: %s write WAL failed: %s", + storageGroupName, tsFileResource.getTsFile().getAbsolutePath(), e.getMessage()), e); } finally { // recordScheduleWalCost diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java index 75b3cb88788..42064a3294b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java @@ -51,8 +51,9 @@ public class FirstCreateStrategy extends AbstractNodeAllocationStrategy { public IWALNode applyForWALNode(String applicantUniqueId) { nodesLock.lock(); try { - if (!identifier2Nodes.containsKey(applicantUniqueId)) { - IWALNode walNode = createWALNode(applicantUniqueId); + IWALNode walNode = identifier2Nodes.get(applicantUniqueId); + if (walNode == null) { + walNode = createWALNode(applicantUniqueId); if (walNode instanceof WALNode) { // avoid deletion walNode.setSafelyDeletedSearchIndex( @@ -61,7 +62,7 @@ public class FirstCreateStrategy extends AbstractNodeAllocationStrategy { } } - return identifier2Nodes.get(applicantUniqueId); + return walNode; } finally { nodesLock.unlock(); }
