This is an automated email from the ASF dual-hosted git repository.

runzhiwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git


The following commit(s) were added to refs/heads/master by this push:
     new 48f1f5e  RATIS-945. Fix exception in RaftClientReply was ignored
48f1f5e is described below

commit 48f1f5e42e4f4e8021a7cbb2eed46a0c2cb041c5
Author: runzhiwang <[email protected]>
AuthorDate: Mon Aug 31 17:04:06 2020 +0800

    RATIS-945. Fix exception in RaftClientReply was ignored
---
 .../org/apache/ratis/logservice/impl/LogReaderImpl.java  | 16 ++++++++++++++++
 .../org/apache/ratis/logservice/impl/LogStreamImpl.java  | 16 ++++++++++++++++
 .../org/apache/ratis/logservice/impl/LogWriterImpl.java  |  7 +++++++
 3 files changed, 39 insertions(+)

diff --git 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogReaderImpl.java
 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogReaderImpl.java
index 38437b1..c43e916 100644
--- 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogReaderImpl.java
+++ 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogReaderImpl.java
@@ -80,6 +80,10 @@ public class LogReaderImpl implements LogReader {
           raftClient
               .sendReadOnly(Message.valueOf(LogServiceProtoUtil
                   .toReadLogRequestProto(parent.getName(), currentRecordId, 
1).toByteString()));
+      if (reply.getException() != null) {
+        throw new IOException(reply.getException());
+      }
+
       ReadLogReplyProto proto = 
ReadLogReplyProto.parseFrom(reply.getMessage().getContent());
       if (proto.hasException()) {
         LogServiceException e = proto.getException();
@@ -106,6 +110,10 @@ public class LogReaderImpl implements LogReader {
     try {
       RaftClientReply reply = 
raftClient.sendReadOnly(Message.valueOf(LogServiceProtoUtil
           .toReadLogRequestProto(parent.getName(), currentRecordId, 
1).toByteString()));
+      if (reply.getException() != null) {
+        throw new IOException(reply.getException());
+      }
+
       ReadLogReplyProto proto = 
ReadLogReplyProto.parseFrom(reply.getMessage().getContent());
       if (proto.hasException()) {
         LogServiceException e = proto.getException();
@@ -129,6 +137,10 @@ public class LogReaderImpl implements LogReader {
       RaftClientReply reply = raftClient
           .sendReadOnly(Message.valueOf(LogServiceProtoUtil
               .toReadLogRequestProto(parent.getName(), currentRecordId, 
numRecords).toByteString()));
+      if (reply.getException() != null) {
+        throw new IOException(reply.getException());
+      }
+
       ReadLogReplyProto proto = 
ReadLogReplyProto.parseFrom(reply.getMessage().getContent());
       if (proto.hasException()) {
         LogServiceException e = proto.getException();
@@ -156,6 +168,10 @@ public class LogReaderImpl implements LogReader {
     try {
       RaftClientReply reply = 
raftClient.sendReadOnly(Message.valueOf(LogServiceProtoUtil
           .toReadLogRequestProto(parent.getName(), currentRecordId, 
buffers.length).toByteString()));
+      if (reply.getException() != null) {
+        throw new IOException(reply.getException());
+      }
+
       ReadLogReplyProto proto = 
ReadLogReplyProto.parseFrom(reply.getMessage().getContent());
       if (proto.hasException()) {
         LogServiceException e = proto.getException();
diff --git 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogStreamImpl.java
 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogStreamImpl.java
index 7980de7..f029fb3 100644
--- 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogStreamImpl.java
+++ 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogStreamImpl.java
@@ -110,6 +110,10 @@ public class LogStreamImpl implements LogStream {
     RaftClientReply reply = raftClient
         .sendReadOnly(Message.valueOf(LogServiceProtoUtil
             .toGetSizeRequestProto(name).toByteString()));
+    if (reply.getException() != null) {
+      throw new IOException(reply.getException());
+    }
+
     GetLogSizeReplyProto proto =
         GetLogSizeReplyProto.parseFrom(reply.getMessage().getContent());
     if (proto.hasException()) {
@@ -124,6 +128,10 @@ public class LogStreamImpl implements LogStream {
     RaftClientReply reply = raftClient
         .sendReadOnly(Message.valueOf(LogServiceProtoUtil
             .toGetLengthRequestProto(name).toByteString()));
+    if (reply.getException() != null) {
+      throw new IOException(reply.getException());
+    }
+
     GetLogLengthReplyProto proto =
         GetLogLengthReplyProto.parseFrom(reply.getMessage().getContent());
     if (proto.hasException()) {
@@ -149,6 +157,10 @@ public class LogStreamImpl implements LogStream {
       RaftClientReply reply = raftClient
           .sendReadOnly(Message.valueOf(LogServiceProtoUtil
               .toGetLastCommittedIndexRequestProto(name).toByteString()));
+      if (reply.getException() != null) {
+        throw new IOException(reply.getException());
+      }
+
       GetLogLastCommittedIndexReplyProto proto =
           
GetLogLastCommittedIndexReplyProto.parseFrom(reply.getMessage().getContent());
       if (proto.hasException()) {
@@ -167,6 +179,10 @@ public class LogStreamImpl implements LogStream {
       RaftClientReply reply = raftClient
           .sendReadOnly(Message.valueOf(LogServiceProtoUtil
               .toGetStartIndexProto(name).toByteString()));
+      if (reply.getException() != null) {
+        throw new IOException(reply.getException());
+      }
+
       GetLogStartIndexReplyProto proto =
           
GetLogStartIndexReplyProto.parseFrom(reply.getMessage().getContent());
       if (proto.hasException()) {
diff --git 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogWriterImpl.java
 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogWriterImpl.java
index 4ab4f19..e292739 100644
--- 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogWriterImpl.java
+++ 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/impl/LogWriterImpl.java
@@ -69,6 +69,10 @@ public class LogWriterImpl implements LogWriter {
     try {
       RaftClientReply reply = raftClient.send(
           
Message.valueOf(LogServiceProtoUtil.toAppendBBEntryLogRequestProto(parent.getName(),
 list).toByteString()));
+      if (reply.getException() != null) {
+        throw new IOException(reply.getException());
+      }
+
       AppendLogEntryReplyProto proto = 
AppendLogEntryReplyProto.parseFrom(reply.getMessage().getContent());
       if (proto.hasException()) {
         LogServiceException e = proto.getException();
@@ -87,6 +91,9 @@ public class LogWriterImpl implements LogWriter {
      try {
        RaftClientReply reply = raftClient.send(Message
            
.valueOf(LogServiceProtoUtil.toSyncLogRequestProto(parent.getName()).toByteString()));
+       if (reply.getException() != null) {
+         throw new IOException(reply.getException());
+       }
 
        SyncLogReplyProto proto = 
SyncLogReplyProto.parseFrom(reply.getMessage().getContent());
        if (proto.hasException()) {

Reply via email to