Most NDB kernel blocks begin their start
phases at STTOR Phase 1, with the exception
of NDBFS and
NDBCNTR, which begin with
Phase 0, as can be seen by inspecting the first value for each
element in the ALL_BLOCKS array (defined in
src/kernel/blocks/ndbcntr/NdbcntrMain.cpp).
In addition, when the STTOR signal is sent to
a block, the return signal STTORRY always
contains a list of the start phases in which the block has an
interest. Only in those start phases does the block actually
receive a STTOR signal.
STTOR signals are sent out in the order in
which the kernel blocks are listed in the
ALL_BLOCKS array. While
NDBCNTR goes through start phases 0 to 255,
most of these are empty.
Both activities in Phase 0 have to do with initialization of the
NDB file system. First, if necessary,
NDBFS creates the file
system directory for the data node. In the case of an initial
start, NDBCNTR clears any
existing files from the directory of the data node to ensure
that the DBDIH block does
not subsequently discover any system files (if
DBDIH were to find any system files, it would
not interpret the start correctly as an initial start).
Each time that NDBCNTR completes the sending
of one start phase to all kernel blocks, it sends a
NODE_STATE_REP signal to all blocks, which
effectively updates the NodeState in all
blocks.
Each time that NDBCNTR completes a nonempty
start phase, it reports this to the management server; in most
cases this is recorded in the cluster log.
Finally, after completing all start phases,
NDBCNTR updates the node state in all blocks
using a NODE_STATE_REP signal; it also sends
an event report advising that all start phases are complete. In
addition, all other cluster data nodes are notified that this
node has completed all its start phases to ensure all nodes are
aware of one another's state. Each data node sends a
NODE_START_REP to all blocks; however, this
is significant only for
DBDIH, so that it knows when
it can unlock the lock for schema changes on
DBDICT.
In the following table, and throughout this text, we sometimes
refer to STTOR start phases simply as
“start phases” or “Phase
N” (where
N is some number).
NDB_STTOR start phases are always qualified
as such, and so referred to as
“NDB_STTOR start phases” or
“NDB_STTOR phases”.
Table 5.1 NDB kernel blocks and start phases
| Kernel Block | Receptive Start Phases |
|---|---|
NDBFS |
0 |
DBTC |
1 |
DBDIH |
1 |
DBLQH |
1, 4 |
DBACC |
1 |
DBTUP |
1 |
DBDICT |
1, 3 |
NDBCNTR |
0, 1, 2, 3, 4, 5, 6, 8, 9 |
CMVMI |
1 (prior to QMGR), 3, 8 |
QMGR |
1, 7 |
TRIX |
1 |
BACKUP |
1, 3, 7 |
DBUTIL |
1, 6 |
SUMA |
1, 3, 5, 7, 100 (empty), 101 |
DBTUX |
1,3,7 |
TSMAN |
1, 3 (both ignored) |
LGMAN |
1, 2, 3, 4, 5, 6 (all ignored) |
PGMAN |
1, 3, 7 (Phase 7 currently empty) |
RESTORE |
1,3 (only in Phase 1 is any real work done) |
This table was current at the time this text was written, but is likely to change over time. The latest information can be found in the source code.