Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Not A Problem
-
None
-
None
-
None
-
None
Description
If you change the FileStore state machine implementation to
@Override public CompletableFuture<DataStream> stream(RaftClientRequest request) { return CompletableFuture.completedFuture(null); }
This will create a NPE at https://github.com/apache/incubator-ratis/blob/04ff37ef6fdef100cb7a424ba9f7b438aec2c9ba/ratis-netty/src/main/java/org/apache/ratis/netty/server/DataStreamManagement.java#L243.
However, it seems like the exception in thread in executor cannot be caught by
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable throwable) {
Optional.ofNullable(requestRef.getAndSetNull())
.ifPresent(request -> requests.replyDataStreamException(throwable, request, ctx));
}
as the exception is printed directly.
2020-12-03 20:22:08,680 WARN server.DataStreamManagement (DataStreamManagement.java:sendDataStreamException(329)) - Failed to process DataStreamRequestByteBuf:STREAM_CLOSE,id=0,offset=2097152,length=0 java.util.concurrent.CompletionException: java.lang.NullPointerException at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:604) at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577) at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442) 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: java.lang.NullPointerException at org.apache.ratis.netty.server.DataStreamManagement.writeTo(DataStreamManagement.java:243) at org.apache.ratis.netty.server.DataStreamManagement$LocalStream.lambda$null$1(DataStreamManagement.java:80) at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602) ... 5 more