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.