Avoid flakiness in RaftConsensusITest.TestReplaceOperationStuckInPrepareQueue
Change-Id: I58027417a93c14db14ac9139f1bef530d552bba0 Reviewed-on: http://gerrit.cloudera.org:8080/5467 Tested-by: Kudu Jenkins Reviewed-by: Mike Percy <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/kudu/repo Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/2b0bb511 Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/2b0bb511 Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/2b0bb511 Branch: refs/heads/master Commit: 2b0bb51167666f9beb26a7fe442b3a744bf8cacf Parents: a684b7a Author: Todd Lipcon <[email protected]> Authored: Sun Dec 11 23:01:55 2016 +0800 Committer: Mike Percy <[email protected]> Committed: Wed Dec 14 14:19:01 2016 +0000 ---------------------------------------------------------------------- src/kudu/integration-tests/raft_consensus-itest.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kudu/blob/2b0bb511/src/kudu/integration-tests/raft_consensus-itest.cc ---------------------------------------------------------------------- diff --git a/src/kudu/integration-tests/raft_consensus-itest.cc b/src/kudu/integration-tests/raft_consensus-itest.cc index 5c3f79f..4d284e4 100644 --- a/src/kudu/integration-tests/raft_consensus-itest.cc +++ b/src/kudu/integration-tests/raft_consensus-itest.cc @@ -1401,10 +1401,16 @@ TEST_F(RaftConsensusITest, TestReplaceOperationStuckInPrepareQueue) { ASSERT_FALSE(resp.has_error()) << resp.DebugString(); // Ensure we can read the data. - vector<string> results; - NO_FATALS(WaitForRowCount(replica_ts->tserver_proxy.get(), 2, &results)); - ASSERT_EQ("(int32 key=1, int32 int_val=3, string string_val=\"term: 3 index: 4\")", results[0]); - ASSERT_EQ("(int32 key=2, int32 int_val=3, string string_val=\"term: 3 index: 5\")", results[1]); + // We need to AssertEventually here because otherwise it's possible to read the old value + // of row '1', if the operation is still in flight. + AssertEventually([&]() { + vector<string> results; + NO_FATALS(WaitForRowCount(replica_ts->tserver_proxy.get(), 2, &results)); + ASSERT_EQ("(int32 key=1, int32 int_val=3, string string_val=\"term: 3 index: 4\")", + results[0]); + ASSERT_EQ("(int32 key=2, int32 int_val=3, string string_val=\"term: 3 index: 5\")", + results[1]); + }); } // Regression test for KUDU-644:
