You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ratis.apache.org by "yuuka (Jira)" <ji...@apache.org> on 2024/10/16 01:46:00 UTC
[jira] [Updated] (RATIS-2174) Move future.join outside the lock
[ https://issues.apache.org/jira/browse/RATIS-2174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
yuuka updated RATIS-2174:
-------------------------
Description:
In RATIS-2162, we solved a deadlock problem, but after observing for a few days, there may still be potential deadlock problems elsewhere.
The main reason for deadlock is to hold a lock and wait for a future.
So I want to try to wait outside the lock for the future
Currently, I found that calling *changeToFollower* in the following functions causes the above situation:
# RaftServerImpl.appendEntries
# RaftServerImpl.RequestVote
# checkAndInstallSnapshot
was:
To avoid potential deadlock issues, I hope to hold the lock without waiting for a future.
Currently, I found that calling *changeToFollower* in the following functions causes the above situation:
# RaftServerImpl.appendEntries
# RaftServerImpl.RequestVote
# checkAndInstallSnapshot
> Move future.join outside the lock
> ---------------------------------
>
> Key: RATIS-2174
> URL: https://issues.apache.org/jira/browse/RATIS-2174
> Project: Ratis
> Issue Type: Wish
> Affects Versions: 3.1.0, 3.1.1
> Reporter: yuuka
> Assignee: yuuka
> Priority: Major
>
>
> In RATIS-2162, we solved a deadlock problem, but after observing for a few days, there may still be potential deadlock problems elsewhere.
>
> The main reason for deadlock is to hold a lock and wait for a future.
>
> So I want to try to wait outside the lock for the future
>
>
> Currently, I found that calling *changeToFollower* in the following functions causes the above situation:
> # RaftServerImpl.appendEntries
> # RaftServerImpl.RequestVote
> # checkAndInstallSnapshot
--
This message was sent by Atlassian Jira
(v8.20.10#820010)