[
https://issues.apache.org/jira/browse/IGNITE-20062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirill Tkalenko updated IGNITE-20062:
-------------------------------------
Issue Type: Bug (was: Improvement)
> Temporary fix for StackOverflowError in Replica#waitForActualState when a
> peer leaves
> -------------------------------------------------------------------------------------
>
> Key: IGNITE-20062
> URL: https://issues.apache.org/jira/browse/IGNITE-20062
> Project: Ignite
> Issue Type: Bug
> Reporter: Kirill Tkalenko
> Assignee: Kirill Tkalenko
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> It has been found that when a peer leaves,
> *org.apache.ignite.internal.replicator.Replica#waitForActualState* can
> generate *StackOverflowError* that can lead to unpleasant consequences.
> For example, as a result of an *StackOverflowError*, we will not be able to
> execute *busyLock.leaveBusy();* in
> *org.apache.ignite.internal.raft.RaftGroupServiceImpl#sendWithRetry(org.apache.ignite.internal.raft.Peer,
> java.util.function.Function<org.apache.ignite.internal.raft.Peer,? extends
> org.apache.ignite.network.NetworkMessage>, long,
> java.util.concurrent.CompletableFuture<R>)*, because the stack is full and
> when entering to *leaveBusy*, *StackOverflowError* will be thrown again,
> which will lead to freezing at the node stop.
> At the moment I don't know how to fix this properly, while a temporary
> solution comes to mind - add thread pool and use it instead of
> *Runnable::run* in *Replica#waitForActualState*, you need to properly fix it
> in 123.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)