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

szetszwo 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 5b435ec  RATIS-1072: Should not shutdown and re-create channel/stub in 
GrpcServerProtocolClient when StreamObserver::onError() is called. (#206)  
Contributed by Glen Geng
5b435ec is described below

commit 5b435ec1c749d20b1e147798fca43ed764620e2b
Author: GlenGeng <[email protected]>
AuthorDate: Mon Sep 28 19:25:57 2020 +0800

    RATIS-1072: Should not shutdown and re-create channel/stub in 
GrpcServerProtocolClient when StreamObserver::onError() is called. (#206)  
Contributed by Glen Geng
---
 .../main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java    | 7 ++++++-
 .../org/apache/ratis/grpc/server/GrpcServerProtocolClient.java     | 5 +++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
index 84d1a09..8fbcc25 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
@@ -86,7 +86,12 @@ public class GrpcLogAppender extends LogAppender {
   }
 
   private synchronized void resetClient(AppendEntriesRequest request, boolean 
onError) {
-    rpcService.getProxies().resetProxy(getFollowerId());
+    try {
+      getClient().resetConnectBackoff();
+    } catch (IOException ie) {
+      LOG.warn(this + ": Failed to getClient for " + getFollowerId(), ie);
+    }
+
     appendLogRequestObserver = null;
     firstResponseReceived = false;
 
diff --git 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
index 399089a..ea1db78 100644
--- 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
+++ 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
@@ -110,4 +110,9 @@ public class GrpcServerProtocolClient implements Closeable {
     return asyncStub.withDeadlineAfter(requestTimeoutDuration.getDuration(), 
requestTimeoutDuration.getUnit())
         .installSnapshot(responseHandler);
   }
+
+  // short-circuit the backoff timer and make them reconnect immediately.
+  public void resetConnectBackoff() {
+    channel.resetConnectBackoff();
+  }
 }

Reply via email to