You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by st...@apache.org on 2023/08/02 23:29:34 UTC

[impala] 01/03: IMPALA-12326: Add WaitForLocalServer in StatestoreSubscriber::Start

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

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

commit b510e437de454debd4560cea340f9f1fd8af5e5a
Author: Riza Suminto <ri...@cloudera.com>
AuthorDate: Mon Jul 31 16:04:53 2023 -0700

    IMPALA-12326: Add WaitForLocalServer in StatestoreSubscriber::Start
    
    The Impala daemons start the statestore subscriber service before the
    Thrift heartbeat rpc service is ready. As a result, there is a small
    window where statestore could try to connect with Impala daemons, but
    the rpc service isn't ready and so statestore logs get filled with
    thrift timeout errors.
    
    This patch add WaitForLocalServer in StatestoreSubscriber::Start. The
    wait time is hardcoded to 10 second (10x retries of 1 second period).
    
    Testing:
    - Pass core tests.
    
    Change-Id: Iec73e9d0517df2292270e436c1579ad6ddc90558
    Reviewed-on: http://gerrit.cloudera.org:8080/20297
    Reviewed-by: Wenzhe Zhou <wz...@cloudera.com>
    Reviewed-by: Andrew Sherman <as...@cloudera.com>
    Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
 be/src/statestore/statestore-subscriber.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/be/src/statestore/statestore-subscriber.cc b/be/src/statestore/statestore-subscriber.cc
index f0f9f3ce5..2ef1ac5ee 100644
--- a/be/src/statestore/statestore-subscriber.cc
+++ b/be/src/statestore/statestore-subscriber.cc
@@ -238,6 +238,8 @@ Status StatestoreSubscriber::Start() {
   RETURN_IF_ERROR(builder.Build(&server));
   heartbeat_server_.reset(server);
   RETURN_IF_ERROR(heartbeat_server_->Start());
+  RETURN_IF_ERROR(WaitForLocalServer(
+      *heartbeat_server_, /* num_retries */ 10, /* retry_interval_ms */ 1000));
 
   // Specify the port which the heartbeat server is listening on.
   heartbeat_address_.port = heartbeat_server_->port();