From 4ef4ec8eed54a02269b5038f761ce60664dcee59 Mon Sep 17 00:00:00 2001 From: Yi Cheng <74173148+iycheng@users.noreply.github.com> Date: Fri, 29 Jul 2022 22:42:28 +0000 Subject: [PATCH] [ci] Deflakey gcs_heartbeat_test in windows. (#27275) We need to check the time after acquiring the lock to make sure the correctness. Otherwise, it might wait for the lock and the heartbeat has been updated. --- .../test/gcs_heartbeat_manager_test.cc | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/ray/gcs/gcs_server/test/gcs_heartbeat_manager_test.cc b/src/ray/gcs/gcs_server/test/gcs_heartbeat_manager_test.cc index 1c3ae17cf..3567649a3 100644 --- a/src/ray/gcs/gcs_server/test/gcs_heartbeat_manager_test.cc +++ b/src/ray/gcs/gcs_server/test/gcs_heartbeat_manager_test.cc @@ -66,8 +66,11 @@ TEST_F(GcsHeartbeatManagerTest, TestBasicTimeout) { auto start = absl::Now(); AddNode(node_1); - while (absl::Now() - start < absl::Seconds(1)) { + while (true) { absl::MutexLock lock(&mutex_); + if (absl::Now() - start >= absl::Seconds(1)) { + break; + } ASSERT_TRUE(dead_nodes.empty()); } @@ -84,8 +87,11 @@ TEST_F(GcsHeartbeatManagerTest, TestBasicReport) { auto start = absl::Now(); AddNode(node_1); - while (absl::Now() - start < absl::Seconds(3)) { + while (true) { absl::MutexLock lock(&mutex_); + if (absl::Now() - start >= absl::Seconds(3)) { + break; + } ASSERT_TRUE(dead_nodes.empty()); io_service.post( [&]() { @@ -116,8 +122,11 @@ TEST_F(GcsHeartbeatManagerTest, TestBasicRestart) { heartbeat_manager->Initialize(init_data); - while (absl::Now() - start < absl::Seconds(3)) { + while (true) { absl::MutexLock lock(&mutex_); + if (absl::Now() - start >= absl::Seconds(3)) { + break; + } ASSERT_TRUE(dead_nodes.empty()); } @@ -158,8 +167,11 @@ TEST_F(GcsHeartbeatManagerTest, TestBasicRestart2) { std::this_thread::sleep_for(0.1s); } - while (absl::Now() - start < absl::Seconds(1)) { + while (true) { absl::MutexLock lock(&mutex_); + if (absl::Now() - start >= absl::Seconds(1)) { + break; + } ASSERT_TRUE(dead_nodes.empty()); }