@@ -12232,7 +12232,7 @@ extern THD *ndb_create_thd(char *stackptr);
1223212232// Functionality used for delaying MySQL Server startup until
1223312233// connection to NDB and setup (of index stat plus binlog) has completed
1223412234//
12235- static bool wait_setup_completed(ulong max_wait_seconds) {
12235+ static bool wait_setup_completed(ulong max_wait_seconds, const std::string info_tag ) {
1223612236 DBUG_TRACE;
1223712237
1223812238 const auto timeout_time =
@@ -12241,8 +12241,15 @@ static bool wait_setup_completed(ulong max_wait_seconds) {
1224112241 while (std::chrono::steady_clock::now() < timeout_time) {
1224212242 if (ndb_binlog_is_initialized() &&
1224312243 ndb_index_stat_thread.is_setup_complete()) {
12244+ ndb_log_info("[TRACE][%s][wait_setup_completed] Done!",
12245+ info_tag.c_str());
1224412246 return true;
1224512247 }
12248+ ndb_log_info("[TRACE][%s][wait_setup_completed], "
12249+ "ndb_binlog_is_ready: %u ndb_index_stat_allow_flag: %u",
12250+ info_tag.c_str(),
12251+ ndb_binlog_is_initialized(),
12252+ ndb_index_stat_thread.is_setup_complete());
1224612253 ndb_milli_sleep(100);
1224712254 }
1224812255
@@ -12266,7 +12273,7 @@ static int ndb_wait_setup_server_startup(void *) {
1226612273 ndb_metadata_change_monitor_thread.set_server_started();
1226712274
1226812275 // Wait for connection to NDB and thread(s) setup
12269- if (wait_setup_completed(opt_ndb_wait_setup) == false) {
12276+ if (wait_setup_completed(opt_ndb_wait_setup, "main" ) == false) {
1227012277 ndb_log_error(
1227112278 "Tables not available after %lu seconds. Consider "
1227212279 "increasing --ndb-wait-setup value",
@@ -12535,6 +12542,7 @@ static int ndbcluster_init(void *handlerton_ptr) {
1253512542 return 0; // Return before init will disable ndbcluster-SE.
1253612543 }
1253712544
12545+ ndb_log_info("[TRACE][main][ndbcluster_init][13 steps expected for successful completion]");
1253812546 /* Check const alignment */
1253912547 static_assert(DependencyTracker::InvalidTransactionId ==
1254012548 Ndb_binlog_extra_row_info::InvalidTransactionId);
@@ -12549,7 +12557,7 @@ static int ndbcluster_init(void *handlerton_ptr) {
1254912557 }
1255012558
1255112559 std::function<bool()> start_channel_func = []() -> bool {
12552- if (!wait_setup_completed(opt_ndb_wait_setup)) {
12560+ if (!wait_setup_completed(opt_ndb_wait_setup, "channel" )) {
1255312561 ndb_log_error(
1255412562 "Replica: Connection to NDB not ready after %lu seconds. "
1255512563 "Consider increasing --ndb-wait-setup value",
@@ -12559,15 +12567,18 @@ static int ndbcluster_init(void *handlerton_ptr) {
1255912567 return true;
1256012568 };
1256112569
12570+ ndb_log_info("[TRACE][main][ndbcluster_init][1] Calling Ndb_replica::init");
1256212571 if (Ndb_replica::init(start_channel_func, &g_default_channel_stats)) {
1256312572 return ndbcluster_init_abort("Failed to initialize NDB Replica");
1256412573 }
1256512574
12575+ ndb_log_info("[TRACE][main][ndbcluster_init][2] Calling Ndb_index_stat_thread::init");
1256612576 if (ndb_index_stat_thread.init() ||
1256712577 DBUG_EVALUATE_IF("ndbcluster_init_fail1", true, false)) {
1256812578 return ndbcluster_init_abort("Failed to initialize NDB Index Stat");
1256912579 }
1257012580
12581+ ndb_log_info("[TRACE][main][ndbcluster_init][3] Calling Ndb_metadata_change_monitor::init");
1257112582 if (ndb_metadata_change_monitor_thread.init()) {
1257212583 return ndbcluster_init_abort(
1257312584 "Failed to initialize NDB Metadata Change Monitor");
@@ -12591,6 +12602,7 @@ static int ndbcluster_init(void *handlerton_ptr) {
1259112602 hton->get_tablespace_statistics =
1259212603 ndbcluster_get_tablespace_statistics; /* Provide data to I_S */
1259312604 hton->partition_flags = ndbcluster_partition_flags; /* Partition flags */
12605+ ndb_log_info("[TRACE][main][ndbcluster_init][4] Calling ndbcluster_binlog_init");
1259412606 if (!ndbcluster_binlog_init(hton))
1259512607 return ndbcluster_init_abort("Failed to initialize NDB Binlog");
1259612608 hton->flags = HTON_TEMPORARY_NOT_SUPPORTED | HTON_NO_BINLOG_ROW_OPT |
@@ -12620,20 +12632,24 @@ static int ndbcluster_init(void *handlerton_ptr) {
1262012632 // SO, that GSL will not be held unnecessary for non-NDB tables.
1262112633 hton->post_ddl = ndbcluster_post_ddl;
1262212634
12635+ ndb_log_info("[TRACE][main][ndbcluster_init][5] Calling ndb_init_internal");
1262312636 // Initialize NdbApi
1262412637 ndb_init_internal(1);
1262512638
12639+ ndb_log_info("[TRACE][main][ndbcluster_init][6] Calling Ndb_server_hooks::register_server_hooks");
1262612640 if (!ndb_server_hooks.register_server_hooks(ndb_wait_setup_server_startup,
1262712641 ndb_dd_upgrade_hook)) {
1262812642 return ndbcluster_init_abort("Failed to register server start hook");
1262912643 }
1263012644
12645+ ndb_log_info("[TRACE][main][ndbcluster_init][7] Calling NDB_SHARE::initialize");
1263112646 // Initialize NDB_SHARE factory
1263212647 NDB_SHARE::initialize(table_alias_charset);
1263312648
1263412649 /* allocate connection resources and connect to cluster */
1263512650 const uint global_opti_node_select =
1263612651 THDVAR(nullptr, optimized_node_selection);
12652+ ndb_log_info("[TRACE][main][ndbcluster_init][8] Calling ndbcluster_connect");
1263712653 if (ndbcluster_connect(
1263812654 opt_ndb_wait_connected, opt_ndb_cluster_connection_pool,
1263912655 opt_connection_pool_nodeids_str, (global_opti_node_select & 1),
@@ -12653,22 +12669,26 @@ static int ndbcluster_init(void *handlerton_ptr) {
1265312669 }
1265412670 }
1265512671
12672+ ndb_log_info("[TRACE][main][ndbcluster_init][9] Calling ndbcluster_binlog_start");
1265612673 /* start the ndb injector thread */
1265712674 if (ndbcluster_binlog_start()) {
1265812675 return ndbcluster_init_abort("Failed to start NDB Binlog");
1265912676 }
1266012677
12678+ ndb_log_info("[TRACE][main][ndbcluster_init][10] Calling Ndb_index_stat_thread::start");
1266112679 // Create index statistics thread
1266212680 if (ndb_index_stat_thread.start() ||
1266312681 DBUG_EVALUATE_IF("ndbcluster_init_fail2", true, false)) {
1266412682 return ndbcluster_init_abort("Failed to start NDB Index Stat");
1266512683 }
1266612684
12685+ ndb_log_info("[TRACE][main][ndbcluster_init][11] Calling Ndb_metadata_change_monitor::start");
1266712686 // Create metadata change monitor thread
1266812687 if (ndb_metadata_change_monitor_thread.start()) {
1266912688 return ndbcluster_init_abort("Failed to start NDB Metadata Change Monitor");
1267012689 }
1267112690
12691+ ndb_log_info("[TRACE][main][ndbcluster_init][12] Calling ndb_pfs_init");
1267212692 if (ndb_pfs_init()) {
1267312693 return ndbcluster_init_abort("Failed to init pfs");
1267412694 }
@@ -12694,6 +12714,7 @@ static int ndbcluster_init(void *handlerton_ptr) {
1269412714 opt_ndb_slave_conflict_role = opt_ndb_applier_conflict_role;
1269512715 }
1269612716
12717+ ndb_log_info("[TRACE][main][ndbcluster_init][13] Done!");
1269712718 ndbcluster_inited = 1;
1269812719
1269912720 return 0; // OK
0 commit comments