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). (See also
Section 6.4.5, “The DBDIH Block”.)
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
via 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”.
| 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.
