You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by mi...@apache.org on 2023/12/13 00:09:39 UTC

(impala) branch master updated: IMPALA-12617: Fix DCHECK failure for Statestore

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 93d4f2236 IMPALA-12617: Fix DCHECK failure for Statestore
93d4f2236 is described below

commit 93d4f2236ca5afb33e3770ba3814f36fe159288c
Author: wzhou-code <wz...@cloudera.com>
AuthorDate: Mon Dec 11 22:15:06 2023 -0800

    IMPALA-12617: Fix DCHECK failure for Statestore
    
    Statestore uses thread pools to periodically send catalog topic update
    and cluster membership. It adds sending tasks to the queues of thread
    pools when receiving registration requests from subscribers so the
    thread pools have to be ready before the Thrift server of Statestore
    is started to accept registration request.
    Current code call ThreadPool::Init() after the Thrift server is started.
    This could cause Statestore to hit DCHECK failure when calling
    ThreadPool::Offer(). It's more likely to happen when Statestore HA is
    enabled since Statestore takes more time for initialization.
    This patch changes the order to call ThreadPool::Init() before starting
    Thrift server of the Statestore server.
    
    Testing:
     - Repeatedly ran custom_cluster/test_statestored_ha.py on local machine
       and Jenkins over night without failure.
     - Passed core tests.
    
    Change-Id: I91423f3de2d64cb617a06ea7adbe5ee2937bde66
    Reviewed-on: http://gerrit.cloudera.org:8080/20775
    Reviewed-by: Riza Suminto <ri...@cloudera.com>
    Reviewed-by: Michael Smith <mi...@cloudera.com>
    Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
 be/src/statestore/statestore.cc | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/be/src/statestore/statestore.cc b/be/src/statestore/statestore.cc
index ef1f5f539..0054da633 100644
--- a/be/src/statestore/statestore.cc
+++ b/be/src/statestore/statestore.cc
@@ -775,14 +775,15 @@ Status Statestore::Init(int32_t state_store_port) {
         .ssl_version(ssl_version)
         .cipher_list(FLAGS_ssl_cipher_list);
   }
+  RETURN_IF_ERROR(subscriber_topic_update_threadpool_.Init());
+  RETURN_IF_ERROR(subscriber_priority_topic_update_threadpool_.Init());
+  RETURN_IF_ERROR(subscriber_heartbeat_threadpool_.Init());
+
   ThriftServer* server;
   RETURN_IF_ERROR(builder.metrics(metrics_).Build(&server));
   thrift_server_.reset(server);
   RETURN_IF_ERROR(thrift_server_->Start());
 
-  RETURN_IF_ERROR(subscriber_topic_update_threadpool_.Init());
-  RETURN_IF_ERROR(subscriber_priority_topic_update_threadpool_.Init());
-  RETURN_IF_ERROR(subscriber_heartbeat_threadpool_.Init());
   RETURN_IF_ERROR(Thread::Create("statestore-heartbeat", "heartbeat-monitoring-thread",
       &Statestore::MonitorSubscriberHeartbeat, this, &heartbeat_monitoring_thread_));
   RETURN_IF_ERROR(Thread::Create("statestore-update-catalogd", "update-catalogd-thread",