You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Summary:
When sending a new request for a peer in raft, we added some custom code to force changing
the role of a peer, in case it is a PRE_VOTER / PRE_OBSERVER. However, this new code path is
essentially a deviation from the normal handling of request data, which leads to the request_
object still having ops, for the next thread coming in, either to prepare a new request, or process
a peer response. We had one `DCHECK(request->ops().empty())` which was failing across tests,
signaling this is likely a broader issue.
I noticed we actually have a couple of different return paths from this function, so I added an
exit handler, but special cased the peer promotion path, as it was dropping locks early.
Test Plan:
`ybd --cxx-test integration-tests_raft_consensus-itest --gtest_filter RaftConsensusITest.TestAtomicAddRemoveServer -n 500`
Failing 0/500!
`ybd --cxx-test integration-tests_raft_consensus-itest --gtest_filter RaftConsensusITest.TestLaggingFollowerRestart -n 500 --tp 3`
Failing 12/500
- all with `Check failed: header_.IsInitialized()`
`ybd --cxx-test integration-tests_raft_consensus-itest --gtest_filter RaftConsensusITest.TestConfigChangeUnderLoad -n 500 --tp 3`
Failing 19/500
- 4 with a test timeout
- 5 failing in the Messenger destructor with `closing_ Should have already shut down`
- rest with `Resource temporarily unavailable` -- probably some local test parallelism issue
Reviewers: rsami, hector, sergei, zyu
Reviewed By: sergei, zyu
Subscribers: ybase
Differential Revision: https://phabricator.dev.yugabyte.com/D9529
https://detective-gcp.dev.yugabyte.com/stability/test?class=RaftConsensusITest&name=TestAtomicAddRemoveServer
Splitting up from #4548
The text was updated successfully, but these errors were encountered: