2122
2123
TstartNode_or_blockref = signal->theData[0];
2123
2124
TsendNodeId = signal->theData[1];
2125
if (TstartNode_or_blockref == clocallqhblockref) {
2127
/*-----------------------------------------------------------------------*/
2128
// THIS SIGNAL CAME FROM THE LOCAL LQH BLOCK.
2129
// WE WILL NOW SEND INCLUDE TO THE TC BLOCK.
2130
/*-----------------------------------------------------------------------*/
2131
signal->theData[0] = reference();
2132
signal->theData[1] = c_nodeStartSlave.nodeId;
2133
sendSignal(clocaltcblockref, GSN_INCL_NODEREQ, signal, 2, JBB);
2136
if (TstartNode_or_blockref == clocaltcblockref) {
2138
/*----------------------------------------------------------------------*/
2139
// THIS SIGNAL CAME FROM THE LOCAL LQH BLOCK.
2140
// WE WILL NOW SEND INCLUDE TO THE DICT BLOCK.
2141
/*----------------------------------------------------------------------*/
2142
signal->theData[0] = reference();
2143
signal->theData[1] = c_nodeStartSlave.nodeId;
2144
sendSignal(cdictblockref, GSN_INCL_NODEREQ, signal, 2, JBB);
2147
if (TstartNode_or_blockref == cdictblockref) {
2149
/*-----------------------------------------------------------------------*/
2150
// THIS SIGNAL CAME FROM THE LOCAL DICT BLOCK. WE WILL NOW SEND CONF TO THE
2152
/*-----------------------------------------------------------------------*/
2153
signal->theData[0] = reference();
2154
signal->theData[1] = c_nodeStartSlave.nodeId;
2155
sendSignal(BACKUP_REF, GSN_INCL_NODEREQ, signal, 2, JBB);
2157
// Suma will not send response to this for now, later...
2158
sendSignal(SUMA_REF, GSN_INCL_NODEREQ, signal, 2, JBB);
2161
if (TstartNode_or_blockref == numberToRef(BACKUP, getOwnNodeId())){
2163
signal->theData[0] = c_nodeStartSlave.nodeId;
2164
signal->theData[1] = cownNodeId;
2165
sendSignal(cmasterdihref, GSN_INCL_NODECONF, signal, 2, JBB);
2166
c_nodeStartSlave.nodeId = 0;
2126
Uint32 blocklist[6];
2127
blocklist[0] = clocallqhblockref;
2128
blocklist[1] = clocaltcblockref;
2129
blocklist[2] = cdictblockref;
2130
blocklist[3] = numberToRef(BACKUP, getOwnNodeId());
2131
blocklist[4] = numberToRef(SUMA, getOwnNodeId());
2134
for (Uint32 i = 0; blocklist[i] != 0; i++)
2136
if (TstartNode_or_blockref == blocklist[i])
2139
if (getNodeStatus(c_nodeStartSlave.nodeId) == NodeRecord::ALIVE &&
2140
blocklist[i+1] != 0)
2143
* Send to next in block list
2146
signal->theData[0] = reference();
2147
signal->theData[1] = c_nodeStartSlave.nodeId;
2148
sendSignal(blocklist[i+1], GSN_INCL_NODEREQ, signal, 2, JBB);
2154
* All done, reply to master
2157
signal->theData[0] = c_nodeStartSlave.nodeId;
2158
signal->theData[1] = cownNodeId;
2159
sendSignal(cmasterdihref, GSN_INCL_NODECONF, signal, 2, JBB);
2161
c_nodeStartSlave.nodeId = 0;
2170
2167
ndbrequire(cmasterdihref = reference());
5162
5169
masterGCPConf->lcpActive[i] = SYSFILE->lcpActive[i];
5163
5170
sendSignal(newMasterBlockref, GSN_MASTER_GCPCONF, signal,
5164
5171
MasterGCPConf::SignalLength, JBB);
5173
if (ERROR_INSERTED(7182))
5175
ndbout_c("execGCP_TCFINISHED in MASTER_GCPREQ");
5176
CLEAR_ERROR_INSERT_VALUE;
5177
signal->theData[0] = c_error_7181_ref;
5178
signal->theData[1] = coldgcp;
5179
execGCP_TCFINISHED(signal);
5165
5181
}//Dbdih::execMASTER_GCPREQ()
5167
5183
void Dbdih::execMASTER_GCPCONF(Signal* signal)
7923
7939
} else if (cmasterState == MASTER_TAKE_OVER_GCP) {
7925
7941
//-------------------------------------------------------------
7926
// We are currently taking over as master. We will delay the
7927
// signal until we have completed the take over gcp handling.
7942
// We are currently taking over as master. Ignore
7943
// signal in this case since we will discover it in reception of
7928
7945
//-------------------------------------------------------------
7929
sendSignalWithDelay(reference(), GSN_GCP_NODEFINISH, signal, 20, 3);
7932
7948
ndbrequire(cmasterState == MASTER_ACTIVE);
8072
8089
CRASH_INSERTION(7007);
8090
Uint32 retRef = signal->theData[0];
8073
8091
Uint32 gci = signal->theData[1];
8074
8092
ndbrequire(gci == coldgcp);
8094
if (ERROR_INSERTED(7181) || ERROR_INSERTED(7182))
8096
c_error_7181_ref = retRef; // Save ref
8097
ndbout_c("killing %d", refToNode(cmasterdihref));
8098
signal->theData[0] = 9999;
8099
sendSignal(numberToRef(CMVMI, refToNode(cmasterdihref)),
8100
GSN_NDB_TAMPER, signal, 1, JBB);
8076
8104
cgcpParticipantState = GCP_PARTICIPANT_TC_FINISHED;
8077
8105
signal->theData[0] = cownNodeId;
8078
8106
signal->theData[1] = coldgcp;
8079
8107
signal->theData[2] = cfailurenr;
8080
sendSignal(cmasterdihref, GSN_GCP_NODEFINISH, signal, 3, JBB);
8108
sendSignal(retRef, GSN_GCP_NODEFINISH, signal, 3, JBB);
8081
8109
}//Dbdih::execGCP_TCFINISHED()
8083
8111
/*****************************************************************************/