You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexander Lapin (Jira)" <ji...@apache.org> on 2021/07/27 10:05:00 UTC
[jira] [Created] (IGNITE-15195) NPE might be thrown in
org.apache.ignite.raft.client.service.impl.RaftGroupServiceImpl#run(org.apache.ignite.raft.client.Command)
Alexander Lapin created IGNITE-15195:
----------------------------------------
Summary: NPE might be thrown in org.apache.ignite.raft.client.service.impl.RaftGroupServiceImpl#run(org.apache.ignite.raft.client.Command)
Key: IGNITE-15195
URL: https://issues.apache.org/jira/browse/IGNITE-15195
Project: Ignite
Issue Type: Bug
Reporter: Alexander Lapin
org.apache.ignite.raft.client.service.impl.RaftGroupServiceImpl#run(org.apache.ignite.raft.client.Command)
doesn't expect null in future response and fails with NPE in
{code:java}
return fut.thenApply(resp -> (R) resp.result());
{code}
However according to sendWithRetry() semantics null is a valid result that might be returned either by invoke()
{code:java}
.thenApply(m -> m == null ? null : m.data()); // The result can be null on node stopping.{code}
or by sendWithRetry() itself if we get RaftErrorResponse with null error code.
{code:java}
SEVERE: Unexpected exception
class org.apache.ignite.lang.IgniteInternalException: java.lang.NullPointerException
at org.apache.ignite.internal.metastorage.client.CursorImpl$InnerIterator.hasNext(CursorImpl.java:109)
at org.apache.ignite.internal.metastorage.client.MetaStorageServiceImpl$WatchProcessor$Watcher.run(MetaStorageServiceImpl.java:446)
Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
at org.apache.ignite.internal.metastorage.client.CursorImpl$InnerIterator.hasNext(CursorImpl.java:101)
... 1 more
Caused by: java.lang.NullPointerException
at org.apache.ignite.raft.client.service.impl.RaftGroupServiceImpl.lambda$run$15(RaftGroupServiceImpl.java:323)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
at org.apache.ignite.raft.client.service.impl.RaftGroupServiceImpl$1.accept(RaftGroupServiceImpl.java:406)
at org.apache.ignite.raft.client.service.impl.RaftGroupServiceImpl$1.accept(RaftGroupServiceImpl.java:360)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
at reactor.core.publisher.MonoToCompletableFuture.onComplete(MonoToCompletableFuture.java:83)
at reactor.core.publisher.SerializedSubscriber.onComplete(SerializedSubscriber.java:146)
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.onComplete(FluxTimeout.java:228)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:129)
at reactor.core.publisher.LambdaSubscriber.onComplete(LambdaSubscriber.java:132)
at reactor.core.publisher.FluxTake$TakeFuseableSubscriber.onComplete(FluxTake.java:423)
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onComplete(FluxFilterFuseable.java:165)
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onComplete(FluxFilterFuseable.java:384)
at reactor.core.publisher.FluxOnBackpressureBuffer$BackpressureBufferSubscriber.checkTerminated(FluxOnBackpressureBuffer.java:416)
at reactor.core.publisher.FluxOnBackpressureBuffer$BackpressureBufferSubscriber.drainRegular(FluxOnBackpressureBuffer.java:253)
at reactor.core.publisher.FluxOnBackpressureBuffer$BackpressureBufferSubscriber.drain(FluxOnBackpressureBuffer.java:225)
at reactor.core.publisher.FluxOnBackpressureBuffer$BackpressureBufferSubscriber.onComplete(FluxOnBackpressureBuffer.java:204)
at reactor.core.publisher.DirectProcessor$DirectInner.onComplete(DirectProcessor.java:349)
at reactor.core.publisher.DirectProcessor.onComplete(DirectProcessor.java:166)
at reactor.core.publisher.FluxCreate$BaseSink.complete(FluxCreate.java:438)
at reactor.core.publisher.FluxCreate$SerializedSink.drainLoop(FluxCreate.java:239)
at reactor.core.publisher.FluxCreate$SerializedSink.drain(FluxCreate.java:205)
at reactor.core.publisher.FluxCreate$SerializedSink.complete(FluxCreate.java:196)
at org.apache.ignite.network.scalecube.ScaleCubeDirectMarshallerTransport.lambda$doStop$2(ScaleCubeDirectMarshallerTransport.java:134)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
at reactor.core.publisher.Mono.subscribe(Mono.java:4219)
at reactor.core.publisher.FluxConcatArray$ConcatArrayDelayErrorSubscriber.onComplete(FluxConcatArray.java:303)
at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:81)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:292)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:292)
at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:931)
at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onComplete(MonoSubscribeOn.java:160)
at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:81)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:292)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1783)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:156)
at io.scalecube.cluster.gossip.GossipProtocolImpl.doSpreadGossip(GossipProtocolImpl.java:177)
at reactor.core.scheduler.PeriodicSchedulerTask.call(PeriodicSchedulerTask.java:49)
at reactor.core.scheduler.PeriodicSchedulerTask.run(PeriodicSchedulerTask.java:63)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)