NDB Cluster Internals  /  NDB Cluster Start Phases  /  Initialization Phase (Phase -1)

5.1 Initialization Phase (Phase -1)

Before the data node actually starts, a number of other setup and initialization tasks must be done for the block objects, transporters, and watchdog checks, among others.

This initialization process begins in storage/ndb/src/kernel/main.cpp with a series of calls to globalEmulatorData.theThreadConfig->doStart(). When starting ndbd with the -n or --nostart option there is only one call to this method; otherwise, there are two, with the second call actually starting the data node. The first invocation of doStart() sends the START_ORD signal to the CMVMI block; the second call to this method sends a START_ORD signal to NDBCNTR.

When START_ORD is received by the NDBCNTR block, the signal is immediately transferred to the NDBCNTR block's MISSRA sub-block, which handles the start process by sending a READ_CONFIG_REQ signals to all blocks in order as given in the array readConfigOrder:

NDBFS is permitted to run before any of the remaining blocks are contacted, in order to make sure that it can start the CMVMI block's threads.