Loading ndb/src/kernel/blocks/ERROR_codes.txt +13 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ Next DBACC 3002 Next DBTUP 4014 Next DBLQH 5043 Next DBDICT 6007 Next DBDIH 7181 Next DBDIH 7183 Next DBTC 8039 Next CMVMI 9000 Next BACKUP 10022 Loading Loading @@ -489,3 +489,15 @@ Dbdict: 6003 Crash in participant @ CreateTabReq::Prepare 6004 Crash in participant @ CreateTabReq::Commit 6005 Crash in participant @ CreateTabReq::CreateDrop TUP: ---- 4025: Fail all inserts with out of memory 4026: Fail one insert with oom 4027: Fail inserts randomly with oom 4028: Fail one random insert with oom NDBCNTR: 1000: Crash insertion on SystemError::CopyFragRef ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +29 −3 Original line number Diff line number Diff line Loading @@ -4811,6 +4811,15 @@ void Dbdih::execMASTER_GCPREQ(Signal* signal) } else { ndbrequire(failedNodePtr.p->nodeStatus == NodeRecord::DYING); }//if if (ERROR_INSERTED(7181)) { ndbout_c("execGCP_TCFINISHED in MASTER_GCPREQ"); CLEAR_ERROR_INSERT_VALUE; signal->theData[1] = coldgcp; execGCP_TCFINISHED(signal); } MasterGCPConf::State gcpState; switch (cgcpParticipantState) { case GCP_PARTICIPANT_READY: Loading Loading @@ -4877,6 +4886,14 @@ void Dbdih::execMASTER_GCPREQ(Signal* signal) masterGCPConf->lcpActive[i] = SYSFILE->lcpActive[i]; sendSignal(newMasterBlockref, GSN_MASTER_GCPCONF, signal, MasterGCPConf::SignalLength, JBB); if (ERROR_INSERTED(7182)) { ndbout_c("execGCP_TCFINISHED in MASTER_GCPREQ"); CLEAR_ERROR_INSERT_VALUE; signal->theData[1] = coldgcp; execGCP_TCFINISHED(signal); } }//Dbdih::execMASTER_GCPREQ() void Dbdih::execMASTER_GCPCONF(Signal* signal) Loading Loading @@ -7549,10 +7566,10 @@ void Dbdih::execGCP_NODEFINISH(Signal* signal) } else if (cmasterState == MASTER_TAKE_OVER_GCP) { jam(); //------------------------------------------------------------- // We are currently taking over as master. We will delay the // signal until we have completed the take over gcp handling. // We are currently taking over as master. Ignore // signal in this case since we will discover it in reception of // MASTER_GCPCONF. //------------------------------------------------------------- sendSignalWithDelay(reference(), GSN_GCP_NODEFINISH, signal, 20, 3); return; } else { ndbrequire(cmasterState == MASTER_ACTIVE); Loading Loading @@ -7699,6 +7716,15 @@ void Dbdih::execGCP_TCFINISHED(Signal* signal) Uint32 gci = signal->theData[1]; ndbrequire(gci == coldgcp); if (ERROR_INSERTED(7181) || ERROR_INSERTED(7182)) { ndbout_c("killing %d", refToNode(cmasterdihref)); signal->theData[0] = 9999; sendSignal(numberToRef(CMVMI, refToNode(cmasterdihref)), GSN_NDB_TAMPER, signal, 1, JBB); return; } cgcpParticipantState = GCP_PARTICIPANT_TC_FINISHED; signal->theData[0] = cownNodeId; signal->theData[1] = coldgcp; Loading ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -9634,6 +9634,15 @@ void Dblqh::copyCompletedLab(Signal* signal) closeCopyLab(signal); return; }//if if (scanptr.p->scanState == ScanRecord::WAIT_LQHKEY_COPY && scanptr.p->scanErrorCounter) { jam(); closeCopyLab(signal); return; } if (scanptr.p->scanState == ScanRecord::WAIT_LQHKEY_COPY) { jam(); /*---------------------------------------------------------------------------*/ Loading Loading @@ -9710,13 +9719,16 @@ void Dblqh::continueCopyAfterBlockedLab(Signal* signal) void Dblqh::copyLqhKeyRefLab(Signal* signal) { ndbrequire(tcConnectptr.p->transid[1] == signal->theData[4]); tcConnectptr.p->copyCountWords -= signal->theData[3]; Uint32 copyWords = signal->theData[3]; scanptr.i = tcConnectptr.p->tcScanRec; c_scanRecordPool.getPtr(scanptr); scanptr.p->scanErrorCounter++; tcConnectptr.p->errorCode = terrorCode; closeCopyLab(signal); return; LqhKeyConf* conf = (LqhKeyConf*)signal->getDataPtrSend(); conf->transId1 = copyWords; conf->transId2 = tcConnectptr.p->transid[1]; copyCompletedLab(signal); }//Dblqh::copyLqhKeyRefLab() void Dblqh::closeCopyLab(Signal* signal) Loading @@ -9727,6 +9739,7 @@ void Dblqh::closeCopyLab(Signal* signal) // Wait until all of those have arrived until we start the // close process. /*---------------------------------------------------------------------------*/ scanptr.p->scanState = ScanRecord::WAIT_LQHKEY_COPY; jam(); return; }//if Loading ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,30 @@ void Dbtup::execTUP_ALLOCREQ(Signal* signal) //--------------------------------------------------- PagePtr pagePtr; Uint32 pageOffset; if (ERROR_INSERTED(4025)) { signal->theData[0] = 827; return; } if (ERROR_INSERTED(4026)) { CLEAR_ERROR_INSERT_VALUE; signal->theData[0] = 827; return; } if (ERROR_INSERTED(4027) && (rand() % 100) > 25) { signal->theData[0] = 827; return; } if (ERROR_INSERTED(4028) && (rand() % 100) > 25) { CLEAR_ERROR_INSERT_VALUE; signal->theData[0] = 827; return; } if (!allocTh(regFragPtr.p, regTabPtr.p, NORMAL_PAGE, Loading ndb/src/kernel/blocks/dbtup/DbtupGen.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ void Dbtup::initData() undoPage = 0; totNoOfPagesAllocated = 0; cnoOfAllocatedPages = 0; CLEAR_ERROR_INSERT_VALUE; // Records with constant sizes }//Dbtup::initData() Loading Loading @@ -568,7 +569,6 @@ void Dbtup::execSTTOR(Signal* signal) switch (startPhase) { case ZSTARTPHASE1: ljam(); CLEAR_ERROR_INSERT_VALUE; cownref = calcTupBlockRef(0); break; default: Loading Loading
ndb/src/kernel/blocks/ERROR_codes.txt +13 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ Next DBACC 3002 Next DBTUP 4014 Next DBLQH 5043 Next DBDICT 6007 Next DBDIH 7181 Next DBDIH 7183 Next DBTC 8039 Next CMVMI 9000 Next BACKUP 10022 Loading Loading @@ -489,3 +489,15 @@ Dbdict: 6003 Crash in participant @ CreateTabReq::Prepare 6004 Crash in participant @ CreateTabReq::Commit 6005 Crash in participant @ CreateTabReq::CreateDrop TUP: ---- 4025: Fail all inserts with out of memory 4026: Fail one insert with oom 4027: Fail inserts randomly with oom 4028: Fail one random insert with oom NDBCNTR: 1000: Crash insertion on SystemError::CopyFragRef
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +29 −3 Original line number Diff line number Diff line Loading @@ -4811,6 +4811,15 @@ void Dbdih::execMASTER_GCPREQ(Signal* signal) } else { ndbrequire(failedNodePtr.p->nodeStatus == NodeRecord::DYING); }//if if (ERROR_INSERTED(7181)) { ndbout_c("execGCP_TCFINISHED in MASTER_GCPREQ"); CLEAR_ERROR_INSERT_VALUE; signal->theData[1] = coldgcp; execGCP_TCFINISHED(signal); } MasterGCPConf::State gcpState; switch (cgcpParticipantState) { case GCP_PARTICIPANT_READY: Loading Loading @@ -4877,6 +4886,14 @@ void Dbdih::execMASTER_GCPREQ(Signal* signal) masterGCPConf->lcpActive[i] = SYSFILE->lcpActive[i]; sendSignal(newMasterBlockref, GSN_MASTER_GCPCONF, signal, MasterGCPConf::SignalLength, JBB); if (ERROR_INSERTED(7182)) { ndbout_c("execGCP_TCFINISHED in MASTER_GCPREQ"); CLEAR_ERROR_INSERT_VALUE; signal->theData[1] = coldgcp; execGCP_TCFINISHED(signal); } }//Dbdih::execMASTER_GCPREQ() void Dbdih::execMASTER_GCPCONF(Signal* signal) Loading Loading @@ -7549,10 +7566,10 @@ void Dbdih::execGCP_NODEFINISH(Signal* signal) } else if (cmasterState == MASTER_TAKE_OVER_GCP) { jam(); //------------------------------------------------------------- // We are currently taking over as master. We will delay the // signal until we have completed the take over gcp handling. // We are currently taking over as master. Ignore // signal in this case since we will discover it in reception of // MASTER_GCPCONF. //------------------------------------------------------------- sendSignalWithDelay(reference(), GSN_GCP_NODEFINISH, signal, 20, 3); return; } else { ndbrequire(cmasterState == MASTER_ACTIVE); Loading Loading @@ -7699,6 +7716,15 @@ void Dbdih::execGCP_TCFINISHED(Signal* signal) Uint32 gci = signal->theData[1]; ndbrequire(gci == coldgcp); if (ERROR_INSERTED(7181) || ERROR_INSERTED(7182)) { ndbout_c("killing %d", refToNode(cmasterdihref)); signal->theData[0] = 9999; sendSignal(numberToRef(CMVMI, refToNode(cmasterdihref)), GSN_NDB_TAMPER, signal, 1, JBB); return; } cgcpParticipantState = GCP_PARTICIPANT_TC_FINISHED; signal->theData[0] = cownNodeId; signal->theData[1] = coldgcp; Loading
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -9634,6 +9634,15 @@ void Dblqh::copyCompletedLab(Signal* signal) closeCopyLab(signal); return; }//if if (scanptr.p->scanState == ScanRecord::WAIT_LQHKEY_COPY && scanptr.p->scanErrorCounter) { jam(); closeCopyLab(signal); return; } if (scanptr.p->scanState == ScanRecord::WAIT_LQHKEY_COPY) { jam(); /*---------------------------------------------------------------------------*/ Loading Loading @@ -9710,13 +9719,16 @@ void Dblqh::continueCopyAfterBlockedLab(Signal* signal) void Dblqh::copyLqhKeyRefLab(Signal* signal) { ndbrequire(tcConnectptr.p->transid[1] == signal->theData[4]); tcConnectptr.p->copyCountWords -= signal->theData[3]; Uint32 copyWords = signal->theData[3]; scanptr.i = tcConnectptr.p->tcScanRec; c_scanRecordPool.getPtr(scanptr); scanptr.p->scanErrorCounter++; tcConnectptr.p->errorCode = terrorCode; closeCopyLab(signal); return; LqhKeyConf* conf = (LqhKeyConf*)signal->getDataPtrSend(); conf->transId1 = copyWords; conf->transId2 = tcConnectptr.p->transid[1]; copyCompletedLab(signal); }//Dblqh::copyLqhKeyRefLab() void Dblqh::closeCopyLab(Signal* signal) Loading @@ -9727,6 +9739,7 @@ void Dblqh::closeCopyLab(Signal* signal) // Wait until all of those have arrived until we start the // close process. /*---------------------------------------------------------------------------*/ scanptr.p->scanState = ScanRecord::WAIT_LQHKEY_COPY; jam(); return; }//if Loading
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,30 @@ void Dbtup::execTUP_ALLOCREQ(Signal* signal) //--------------------------------------------------- PagePtr pagePtr; Uint32 pageOffset; if (ERROR_INSERTED(4025)) { signal->theData[0] = 827; return; } if (ERROR_INSERTED(4026)) { CLEAR_ERROR_INSERT_VALUE; signal->theData[0] = 827; return; } if (ERROR_INSERTED(4027) && (rand() % 100) > 25) { signal->theData[0] = 827; return; } if (ERROR_INSERTED(4028) && (rand() % 100) > 25) { CLEAR_ERROR_INSERT_VALUE; signal->theData[0] = 827; return; } if (!allocTh(regFragPtr.p, regTabPtr.p, NORMAL_PAGE, Loading
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ void Dbtup::initData() undoPage = 0; totNoOfPagesAllocated = 0; cnoOfAllocatedPages = 0; CLEAR_ERROR_INSERT_VALUE; // Records with constant sizes }//Dbtup::initData() Loading Loading @@ -568,7 +569,6 @@ void Dbtup::execSTTOR(Signal* signal) switch (startPhase) { case ZSTARTPHASE1: ljam(); CLEAR_ERROR_INSERT_VALUE; cownref = calcTupBlockRef(0); break; default: Loading