8.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 (see Section 8.4.2, “The CMVMI Block”); the second call to this method sends a START_ORD signal to NDBCNTR (see Section 8.4.14, “The NDBCNTR Block”).

When START_ORD is received by the NDBCNTR block, the signal is immediately transferred to NDBCNTR'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:

  1. NDBFS

  2. DBTUP

  3. DBACC

  4. DBTC

  5. DBLQH

  6. DBTUX

  7. DBDICT

  8. DBDIH

  9. NDBCNTR

  10. QMGR

  11. TRIX

  12. BACKUP

  13. DBUTIL

  14. SUMA

  15. TSMAN

  16. LGMAN

  17. PGMAN

  18. RESTORE

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.