This is an automated email from the ASF dual-hosted git repository.

awong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git

commit c033425b3d579591ebb15c75de1f193604b8e95b
Author: Andrew Wong <[email protected]>
AuthorDate: Tue Jan 7 19:09:51 2020 -0800

    KUDU-3011 p4: follow-up to 4619473
    
    This addresses feedback on commit 4619473 left after merging.
    
    Change-Id: I6d30b28fec9e3c34060f3ad45f6e34a33d4e9a23
    Reviewed-on: http://gerrit.cloudera.org:8080/14990
    Reviewed-by: Alexey Serbin <[email protected]>
    Tested-by: Kudu Jenkins
---
 .../integration-tests/tablet_server_quiescing-itest.cc     | 14 +++++++++++++-
 src/kudu/integration-tests/test_workload.h                 |  2 +-
 src/kudu/tserver/tablet_service.cc                         |  8 ++++----
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/kudu/integration-tests/tablet_server_quiescing-itest.cc 
b/src/kudu/integration-tests/tablet_server_quiescing-itest.cc
index 5c18a71..bf4fcec 100644
--- a/src/kudu/integration-tests/tablet_server_quiescing-itest.cc
+++ b/src/kudu/integration-tests/tablet_server_quiescing-itest.cc
@@ -51,6 +51,7 @@ 
DECLARE_bool(catalog_manager_wait_for_new_tablets_to_elect_leader);
 DECLARE_double(leader_failure_max_missed_heartbeat_periods);
 DECLARE_int32(consensus_inject_latency_ms_in_notifications);
 DECLARE_int32(scanner_default_batch_size_bytes);
+DECLARE_int32(scanner_ttl_ms);
 DECLARE_int32(raft_heartbeat_interval_ms);
 
 using kudu::client::KuduClient;
@@ -374,12 +375,23 @@ TEST_P(TServerQuiescingParamITest, TestScansRetry) {
   // Now stop quiescing one of the servers. Our scans should succeed. Set a
   // small batch size so our scanner remains active.
   FLAGS_scanner_default_batch_size_bytes = 1;
+  // Make our scanner expire really quickly so we can test that we can keep the
+  // scanner alive even while the tserver is quiescing.
+  FLAGS_scanner_ttl_ms = 1000;
   auto* ts = cluster_->mini_tablet_server(0)->server();
   *ts->mutable_quiescing() = false;
   KuduScanBatch batch;
   ASSERT_OK(scanner.Open());
   ASSERT_OK(scanner.NextBatch(&batch));
-  ASSERT_EQ(1, ts->scanner_manager()->CountActiveScanners());
+
+  // Keep the scanner alive, even as we're quiescing.
+  const auto past_original_expiration =
+      MonoTime::Now() + MonoDelta::FromMilliseconds(2 * FLAGS_scanner_ttl_ms);
+  while (MonoTime::Now() < past_original_expiration) {
+    ASSERT_EQ(1, ts->scanner_manager()->CountActiveScanners());
+    ASSERT_OK(scanner.KeepAlive());
+    SleepFor(MonoDelta::FromMilliseconds(10));
+  }
 }
 
 INSTANTIATE_TEST_CASE_P(NumReplicas, TServerQuiescingParamITest, 
::testing::Values(1, 3));
diff --git a/src/kudu/integration-tests/test_workload.h 
b/src/kudu/integration-tests/test_workload.h
index 1f3eaa9..5afa625 100644
--- a/src/kudu/integration-tests/test_workload.h
+++ b/src/kudu/integration-tests/test_workload.h
@@ -128,7 +128,7 @@ class TestWorkload {
   }
 
   // Set whether we should attempt to verify the number of rows when scanning.
-  // This sort of error may be indicative of a stale read.
+  // An incorrect number of rows may be indicative of a stale read.
   void set_verify_num_rows(bool should_verify) {
     verify_num_rows_ = should_verify;
   }
diff --git a/src/kudu/tserver/tablet_service.cc 
b/src/kudu/tserver/tablet_service.cc
index 6b49af3..93c6d9c 100644
--- a/src/kudu/tserver/tablet_service.cc
+++ b/src/kudu/tserver/tablet_service.cc
@@ -359,8 +359,8 @@ bool GetConsensusOrRespond(const 
scoped_refptr<TabletReplica>& replica,
 }
 
 template<class RespClass>
-bool CheckTabletServerQuiescingOrRespond(const TabletServer* server, 
RespClass* resp,
-                                         rpc::RpcContext* context) {
+bool CheckTabletServerNotQuiescingOrRespond(const TabletServer* server, 
RespClass* resp,
+                                            rpc::RpcContext* context) {
   if (PREDICT_FALSE(server->quiescing())) {
     Status s = Status::ServiceUnavailable("Tablet server is quiescing");
     SetupErrorAndRespond(resp->mutable_error(), s,
@@ -1708,7 +1708,7 @@ void TabletServiceImpl::Scan(const ScanRequestPB* req,
   bool has_more_results = false;
   TabletServerErrorPB::Code error_code = TabletServerErrorPB::UNKNOWN_ERROR;
   if (req->has_new_scan_request()) {
-    if (!CheckTabletServerQuiescingOrRespond(server_, resp, context)) {
+    if (!CheckTabletServerNotQuiescingOrRespond(server_, resp, context)) {
       return;
     }
     const NewScanRequestPB& scan_pb = req->new_scan_request();
@@ -2022,7 +2022,7 @@ void TabletServiceImpl::Checksum(const ChecksumRequestPB* 
req,
     }
   }
   if (req->has_new_request()) {
-    if (!CheckTabletServerQuiescingOrRespond(server_, resp, context)) {
+    if (!CheckTabletServerNotQuiescingOrRespond(server_, resp, context)) {
       return;
     }
     const NewScanRequestPB& new_req = req->new_request();

Reply via email to