mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
ndb - bug#27283
Additional fix for 2-node case ndb/src/kernel/blocks/dbdih/Dbdih.hpp: Add error insert ref for errcode = 7181 ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Make GSN_GCP_NODEFINISH always be sent to DIH node requesting it ndb/src/kernel/blocks/dbtc/Dbtc.hpp: Make GSN_GCP_NODEFINISH always be sent to DIH node requesting it ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Make GSN_GCP_NODEFINISH always be sent to DIH node requesting it
This commit is contained in:
parent
34a9dd6a5e
commit
f5acedb6a7
4 changed files with 13 additions and 1 deletions
|
@ -1628,6 +1628,8 @@ private:
|
|||
// NR
|
||||
Uint32 c_dictLockSlavePtrI_nodeRestart; // userPtr for NR
|
||||
void recvDictLockConf_nodeRestart(Signal* signal, Uint32 data, Uint32 ret);
|
||||
|
||||
Uint32 c_error_7181_ref;
|
||||
};
|
||||
|
||||
#if (DIH_CDATA_SIZE < _SYSFILE_SIZE32)
|
||||
|
|
|
@ -4816,6 +4816,7 @@ void Dbdih::execMASTER_GCPREQ(Signal* signal)
|
|||
{
|
||||
ndbout_c("execGCP_TCFINISHED in MASTER_GCPREQ");
|
||||
CLEAR_ERROR_INSERT_VALUE;
|
||||
signal->theData[0] = c_error_7181_ref;
|
||||
signal->theData[1] = coldgcp;
|
||||
execGCP_TCFINISHED(signal);
|
||||
}
|
||||
|
@ -4891,6 +4892,7 @@ void Dbdih::execMASTER_GCPREQ(Signal* signal)
|
|||
{
|
||||
ndbout_c("execGCP_TCFINISHED in MASTER_GCPREQ");
|
||||
CLEAR_ERROR_INSERT_VALUE;
|
||||
signal->theData[0] = c_error_7181_ref;
|
||||
signal->theData[1] = coldgcp;
|
||||
execGCP_TCFINISHED(signal);
|
||||
}
|
||||
|
@ -7697,6 +7699,7 @@ void Dbdih::execGCP_COMMIT(Signal* signal)
|
|||
cgckptflag = false;
|
||||
emptyverificbuffer(signal, true);
|
||||
cgcpParticipantState = GCP_PARTICIPANT_COMMIT_RECEIVED;
|
||||
signal->theData[0] = calcDihBlockRef(masterNodeId);
|
||||
signal->theData[1] = coldgcp;
|
||||
sendSignal(clocaltcblockref, GSN_GCP_NOMORETRANS, signal, 2, JBB);
|
||||
return;
|
||||
|
@ -7706,11 +7709,13 @@ void Dbdih::execGCP_TCFINISHED(Signal* signal)
|
|||
{
|
||||
jamEntry();
|
||||
CRASH_INSERTION(7007);
|
||||
Uint32 retRef = signal->theData[0];
|
||||
Uint32 gci = signal->theData[1];
|
||||
ndbrequire(gci == coldgcp);
|
||||
|
||||
if (ERROR_INSERTED(7181) || ERROR_INSERTED(7182))
|
||||
{
|
||||
c_error_7181_ref = retRef; // Save ref
|
||||
ndbout_c("killing %d", refToNode(cmasterdihref));
|
||||
signal->theData[0] = 9999;
|
||||
sendSignal(numberToRef(CMVMI, refToNode(cmasterdihref)),
|
||||
|
@ -7722,7 +7727,7 @@ void Dbdih::execGCP_TCFINISHED(Signal* signal)
|
|||
signal->theData[0] = cownNodeId;
|
||||
signal->theData[1] = coldgcp;
|
||||
signal->theData[2] = cfailurenr;
|
||||
sendSignal(cmasterdihref, GSN_GCP_NODEFINISH, signal, 3, JBB);
|
||||
sendSignal(retRef, GSN_GCP_NODEFINISH, signal, 3, JBB);
|
||||
}//Dbdih::execGCP_TCFINISHED()
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -1952,5 +1952,8 @@ private:
|
|||
// those variables should be removed and exchanged for stack
|
||||
// variable communication.
|
||||
/**************************************************************************/
|
||||
|
||||
Uint32 c_gcp_ref;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -6894,6 +6894,7 @@ void Dbtc::timeOutFoundFragLab(Signal* signal, UintR TscanConPtr)
|
|||
void Dbtc::execGCP_NOMORETRANS(Signal* signal)
|
||||
{
|
||||
jamEntry();
|
||||
c_gcp_ref = signal->theData[0];
|
||||
tcheckGcpId = signal->theData[1];
|
||||
if (cfirstgcp != RNIL) {
|
||||
jam();
|
||||
|
@ -9937,6 +9938,7 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) {
|
|||
|
||||
void Dbtc::gcpTcfinished(Signal* signal)
|
||||
{
|
||||
signal->theData[0] = c_gcp_ref;
|
||||
signal->theData[1] = tcheckGcpId;
|
||||
sendSignal(cdihblockref, GSN_GCP_TCFINISHED, signal, 2, JBB);
|
||||
}//Dbtc::gcpTcfinished()
|
||||
|
|
Loading…
Reference in a new issue