[ https://issues.apache.org/jira/browse/RATIS-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16868974#comment-16868974 ]
Tsz Wo Nicholas Sze commented on RATIS-573: ------------------------------------------- Let simply add a local variable raftLogIOException as below. {code} @@ -232,11 +234,16 @@ class SegmentedRaftLogWorker implements Runnable { @Override public void run() { + RaftLogIOException raftLogIOException = null; while (running) { try { Task task = queue.poll(ONE_SECOND); if (task != null) { try { + if (raftLogIOException != null) { + throw raftLogIOException; + } + task.execute(); } catch (IOException e) { if (task.getEndIndex() < lastWrittenIndex) { @@ -244,8 +251,11 @@ class SegmentedRaftLogWorker implements Runnable { + " which is smaller than the lastWrittenIndex." + " There should be a snapshot installed.", e); } else { - task.getFuture().completeExceptionally(e); - throw e; + task.failed(e); + if (raftLogIOException == null) { + raftLogIOException = new RaftLogIOException("Log already failed at index " + task.getEndIndex() + + " for " + task, e); + } } } task.done(); {code} > Handle Raft Log Append Failure > ------------------------------ > > Key: RATIS-573 > URL: https://issues.apache.org/jira/browse/RATIS-573 > Project: Ratis > Issue Type: Improvement > Components: server > Reporter: Supratim Deka > Assignee: Supratim Deka > Priority: Major > Attachments: RATIS-573.00.patch, RATIS-573.01.patch, > RATIS-573.02.patch, RATIS-573.03.patch, RATIS-573.04.patch > > > As part of Handling IO Failures, HDDS-1595. > The scope of this jira is to handle failure in RAFT log append by: > 1. notify the error to the state machine for consumer specific handling > 2. propagate the error to the initiator (to the client from leader, to the > leader from follower). -- This message was sent by Atlassian JIRA (v7.6.3#76005)