You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ratis.apache.org by "Hanisha Koneru (Jira)" <ji...@apache.org> on 2019/12/05 00:10:00 UTC
[jira] [Updated] (RATIS-765)
ClientProtoUtils#toRaftClientReplyProto should handle
AlreadyClosedException
[ https://issues.apache.org/jira/browse/RATIS-765?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hanisha Koneru updated RATIS-765:
---------------------------------
Attachment: RATIS-765.001.patch
> ClientProtoUtils#toRaftClientReplyProto should handle AlreadyClosedException
> ----------------------------------------------------------------------------
>
> Key: RATIS-765
> URL: https://issues.apache.org/jira/browse/RATIS-765
> Project: Ratis
> Issue Type: Bug
> Reporter: Lokesh Jain
> Assignee: Hanisha Koneru
> Priority: Major
> Attachments: RATIS-765.001.patch
>
>
> TestWatchRequestWithGrpc failed with the below exception. This is a result of assertion added in RATIS-729. In ClientProtoUtils#toRaftClientReplyProto we currently do not propagate AlreadyClosedException in the RaftClientReplyProto.
> {code:java}
> java.lang.AssertionError: Unexpected exit.
> at org.apache.ratis.util.ExitUtils.assertNotTerminated(ExitUtils.java:109)
> at org.apache.ratis.BaseTest.assertNoFailures(BaseTest.java:75)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
> at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:298)
> at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:292)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: org.apache.ratis.util.ExitUtils$ExitException: Thread[grpc-default-executor-5,5,FailOnTimeoutGroup] has thrown an uncaught exception
> at org.apache.ratis.util.ExitUtils.terminate(ExitUtils.java:141)
> at org.apache.ratis.util.ExitUtils$States.lambda$new$0(ExitUtils.java:54)
> at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1057)
> at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1052)
> at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1052)
> at java.lang.Thread.dispatchUncaughtException(Thread.java:1959)
> Caused by: java.lang.AssertionError: Corruption while serializing reply= RaftClientReply:client-8FD5A15E01C2->s2@group-435584180CC1, cid=6, FAILED org.apache.ratis.protocol.AlreadyClosedException: SlidingWindow$Server:2-OrderedRequestStreamObserver2 is closing: seq = 3 > nextToProcess = -1 will NEVER be processed; request = 3:null, logIndex=0, commits[] but serialized=rpcReply {
> requestorId: "\357\216\347\031)\304Ii\200\273\217\325\241^\001\302"
> replyId: "s2"
> raftGroupId {
> id: "\256\245\022M\323PHF\207\220CU\204\030\f\301"
> }
> callId: 6
> }
> and deserialized=RaftClientReply:client-8FD5A15E01C2->s2@group-435584180CC1, cid=6, FAILED null, logIndex=0, commits[]
> at org.apache.ratis.client.impl.ClientProtoUtils.toRaftClientReplyProto(ClientProtoUtils.java:205)
> at org.apache.ratis.grpc.client.GrpcClientProtocolService$OrderedRequestStreamObserver.sendReply(GrpcClientProtocolService.java:355)
> at org.apache.ratis.util.SlidingWindow$RequestMap.endOfRequests(SlidingWindow.java:158)
> at org.apache.ratis.util.SlidingWindow$Server.endOfRequests(SlidingWindow.java:469)
> at org.apache.ratis.grpc.client.GrpcClientProtocolService$OrderedRequestStreamObserver.onCompleted(GrpcClientProtocolService.java:368)
> at org.apache.ratis.thirdparty.io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onHalfClose(ServerCalls.java:262)
> at org.apache.ratis.thirdparty.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:331)
> at org.apache.ratis.thirdparty.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:814)
> at org.apache.ratis.thirdparty.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
> at org.apache.ratis.thirdparty.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: org.apache.ratis.protocol.AlreadyClosedException: SlidingWindow$Server:2-OrderedRequestStreamObserver2 is closing: seq = 3 > nextToProcess = -1 will NEVER be processed; request = 3:null
> at org.apache.ratis.util.SlidingWindow$RequestMap.endOfRequests(SlidingWindow.java:155)
> ... 10 more
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)