This is an automated email from the ASF dual-hosted git repository. alexey pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push: new 38bad95 [client-test] more robust TestRetrieveAuthzTokenInParallel 38bad95 is described below commit 38bad954c2d903a8a61ddd728f8c58dc00412925 Author: Alexey Serbin <ale...@apache.org> AuthorDate: Thu Feb 25 19:30:01 2021 -0800 [client-test] more robust TestRetrieveAuthzTokenInParallel I saw a flakiness in the ClientTest.TestRetrieveAuthzTokenInParallel scenario, where about 25 out of 256 runs failed when running with --stress_cpu_threads=16: src/kudu/client/client-test.cc:6923: Failure Expected: (num_reqs) < (kThreads), actual: 21 vs 20 This patch addresses the issue by: * skipping the scenario when --stress_cpu_threads is not zero * skipping the scenario when running at single-core CPU machines * limiting the number of threads up to the number of CPU cores Change-Id: I0afa5ae72ccb96a218b6c6ff026ad88a70dea4f7 Reviewed-on: http://gerrit.cloudera.org:8080/17128 Tested-by: Alexey Serbin <aser...@cloudera.com> Reviewed-by: Hao Hao <hao....@cloudera.com> Reviewed-by: Andrew Wong <aw...@cloudera.com> --- src/kudu/client/client-test.cc | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/kudu/client/client-test.cc b/src/kudu/client/client-test.cc index ff4ca1f..b844ec9 100644 --- a/src/kudu/client/client-test.cc +++ b/src/kudu/client/client-test.cc @@ -86,6 +86,7 @@ #include "kudu/gutil/stringprintf.h" #include "kudu/gutil/strings/join.h" #include "kudu/gutil/strings/substitute.h" +#include "kudu/gutil/sysinfo.h" #include "kudu/integration-tests/cluster_itest_util.h" #include "kudu/integration-tests/data_gen_util.h" #include "kudu/master/catalog_manager.h" @@ -165,6 +166,7 @@ DECLARE_int32(scanner_gc_check_interval_us); DECLARE_int32(scanner_inject_latency_on_each_batch_ms); DECLARE_int32(scanner_max_batch_size_bytes); DECLARE_int32(scanner_ttl_ms); +DECLARE_int32(stress_cpu_threads); DECLARE_int32(table_locations_ttl_ms); DECLARE_int32(txn_status_manager_inject_latency_load_from_tablet_ms); DECLARE_int64(live_row_count_for_testing); @@ -6908,16 +6910,26 @@ TEST_F(ClientTest, TestCacheAuthzTokens) { // Test to ensure that we don't send calls to retrieve authz tokens when one is // already in-flight for the same table ID. TEST_F(ClientTest, TestRetrieveAuthzTokenInParallel) { - const int kThreads = 20; + const auto kThreads = base::NumCPUs(); + if (kThreads < 2) { + LOG(WARNING) << "no sense to run at a single CPU core"; + GTEST_SKIP(); + } + if (FLAGS_stress_cpu_threads > 0) { + LOG(WARNING) << "test is not designed to run with --stress_cpu_threads"; + GTEST_SKIP(); + } + const MonoDelta kTimeout = MonoDelta::FromSeconds(30); vector<Synchronizer> syncs(kThreads); vector<thread> threads; Barrier barrier(kThreads); + const auto deadline = MonoTime::Now() + kTimeout; for (auto& s : syncs) { threads.emplace_back([&] { barrier.Wait(); - client_->data_->RetrieveAuthzTokenAsync(client_table_.get(), s.AsStatusCallback(), - MonoTime::Now() + kTimeout); + client_->data_->RetrieveAuthzTokenAsync( + client_table_.get(), s.AsStatusCallback(), deadline); }); } for (int i = 0 ; i < kThreads; i++) {