📄 dbtcmain.cpp
字号:
sendSignal(tapiBlockref, GSN_TCRELEASECONF, signal, 1, JBB); } else { if (tapiBlockref == apiConnectptr.p->ndbapiBlockref) { if (apiConnectptr.p->apiConnectstate == CS_CONNECTED || (apiConnectptr.p->apiConnectstate == CS_ABORTING && apiConnectptr.p->abortState == AS_IDLE) || (apiConnectptr.p->apiConnectstate == CS_STARTED && apiConnectptr.p->firstTcConnect == RNIL)) { jam(); /* JUST REPLY OK */ releaseApiCon(signal, apiConnectptr.i); signal->theData[0] = tuserpointer; sendSignal(tapiBlockref, GSN_TCRELEASECONF, signal, 1, JBB); } else { jam(); signal->theData[0] = tuserpointer; signal->theData[1] = ZINVALID_CONNECTION; signal->theData[2] = __LINE__; signal->theData[3] = apiConnectptr.p->apiConnectstate; sendSignal(tapiBlockref, GSN_TCRELEASEREF, signal, 4, JBB); } } else { jam(); signal->theData[0] = tuserpointer; signal->theData[1] = ZINVALID_CONNECTION; signal->theData[2] = __LINE__; signal->theData[3] = tapiBlockref; signal->theData[4] = apiConnectptr.p->ndbapiBlockref; sendSignal(tapiBlockref, GSN_TCRELEASEREF, signal, 5, JBB); }//if }//if}//Dbtc::execTCRELEASEREQ()/****************************************************************************/// Error Handling for TCKEYREQ messages/****************************************************************************/void Dbtc::signalErrorRefuseLab(Signal* signal) { ptrGuard(apiConnectptr); if (apiConnectptr.p->apiConnectstate != CS_DISCONNECTED) { jam(); apiConnectptr.p->abortState = AS_IDLE; apiConnectptr.p->apiConnectstate = CS_ABORTING; }//if sendSignalErrorRefuseLab(signal);}//Dbtc::signalErrorRefuseLab()void Dbtc::sendSignalErrorRefuseLab(Signal* signal) { ndbassert(false); ptrGuard(apiConnectptr); if (apiConnectptr.p->apiConnectstate != CS_DISCONNECTED) { jam(); ndbrequire(false); signal->theData[0] = apiConnectptr.p->ndbapiConnect; signal->theData[1] = signal->theData[ttransid_ptr]; signal->theData[2] = signal->theData[ttransid_ptr + 1]; signal->theData[3] = ZSIGNAL_ERROR; sendSignal(apiConnectptr.p->ndbapiBlockref, GSN_TCROLLBACKREP, signal, 4, JBB); }}//Dbtc::sendSignalErrorRefuseLab()void Dbtc::abortBeginErrorLab(Signal* signal) { apiConnectptr.p->transid[0] = signal->theData[ttransid_ptr]; apiConnectptr.p->transid[1] = signal->theData[ttransid_ptr + 1]; abortErrorLab(signal);}//Dbtc::abortBeginErrorLab()void Dbtc::printState(Signal* signal, int place) {#ifdef VM_TRACE // Change to if 0 to disable these printouts ndbout << "-- Dbtc::printState -- " << endl; ndbout << "Received from place = " << place << " apiConnectptr.i = " << apiConnectptr.i << " apiConnectstate = " << apiConnectptr.p->apiConnectstate << endl; ndbout << "ctcTimer = " << ctcTimer << " ndbapiBlockref = " << hex <<apiConnectptr.p->ndbapiBlockref << " Transid = " << apiConnectptr.p->transid[0] << " " << apiConnectptr.p->transid[1] << endl; ndbout << " apiTimer = " << getApiConTimer(apiConnectptr.i) << " counter = " << apiConnectptr.p->counter << " lqhkeyconfrec = " << apiConnectptr.p->lqhkeyconfrec << " lqhkeyreqrec = " << apiConnectptr.p->lqhkeyreqrec << endl; ndbout << "abortState = " << apiConnectptr.p->abortState << " apiScanRec = " << apiConnectptr.p->apiScanRec << " returncode = " << apiConnectptr.p->returncode << endl; ndbout << "tckeyrec = " << apiConnectptr.p->tckeyrec << " returnsignal = " << apiConnectptr.p->returnsignal << " apiFailState = " << apiConnectptr.p->apiFailState << endl; if (apiConnectptr.p->cachePtr != RNIL) { jam(); CacheRecord *localCacheRecord = cacheRecord; UintR TcacheFilesize = ccacheFilesize; UintR TcachePtr = apiConnectptr.p->cachePtr; if (TcachePtr < TcacheFilesize) { jam(); CacheRecord * const regCachePtr = &localCacheRecord[TcachePtr]; ndbout << "currReclenAi = " << regCachePtr->currReclenAi << " attrlength = " << regCachePtr->attrlength << " tableref = " << regCachePtr->tableref << " keylen = " << regCachePtr->keylen << endl; } else { jam(); systemErrorLab(signal, __LINE__); }//if }//if#endif return;}//Dbtc::printState()voidDbtc::TCKEY_abort(Signal* signal, int place){ switch (place) { case 0: jam(); terrorCode = ZSTATE_ERROR; apiConnectptr.p->firstTcConnect = RNIL; printState(signal, 4); abortBeginErrorLab(signal); return; case 1: jam(); printState(signal, 3); sendSignalErrorRefuseLab(signal); return; case 2:{ printState(signal, 6); const TcKeyReq * const tcKeyReq = (TcKeyReq *)&signal->theData[0]; const Uint32 t1 = tcKeyReq->transId1; const Uint32 t2 = tcKeyReq->transId2; signal->theData[0] = apiConnectptr.p->ndbapiConnect; signal->theData[1] = t1; signal->theData[2] = t2; signal->theData[3] = ZABORT_ERROR; ndbrequire(false); sendSignal(apiConnectptr.p->ndbapiBlockref, GSN_TCROLLBACKREP, signal, 4, JBB); return; } case 3: jam(); printState(signal, 7); noFreeConnectionErrorLab(signal); return; case 4: jam(); terrorCode = ZERO_KEYLEN_ERROR; releaseAtErrorLab(signal); return; case 5: jam(); terrorCode = ZNO_AI_WITH_UPDATE; releaseAtErrorLab(signal); return; case 6: jam(); warningHandlerLab(signal, __LINE__); return; case 7: jam(); tabStateErrorLab(signal); return; case 8: jam(); wrongSchemaVersionErrorLab(signal); return; case 9: jam(); terrorCode = ZSTATE_ERROR; releaseAtErrorLab(signal); return; case 10: jam(); systemErrorLab(signal, __LINE__); return; case 11: jam(); terrorCode = ZMORE_AI_IN_TCKEYREQ_ERROR; releaseAtErrorLab(signal); return; case 12: jam(); terrorCode = ZSIMPLE_READ_WITHOUT_AI; releaseAtErrorLab(signal); return; case 13: jam(); switch (tcConnectptr.p->tcConnectstate) { case OS_WAIT_KEYINFO: jam(); printState(signal, 8); terrorCode = ZSTATE_ERROR; abortErrorLab(signal); return; default: jam(); /********************************************************************/ /* MISMATCH BETWEEN STATE ON API CONNECTION AND THIS */ /* PARTICULAR TC CONNECT RECORD. THIS MUST BE CAUSED BY NDB */ /* INTERNAL ERROR. */ /********************************************************************/ systemErrorLab(signal, __LINE__); return; }//switch return; case 15: jam(); terrorCode = ZSCAN_NODE_ERROR; releaseAtErrorLab(signal); return; case 16: jam(); systemErrorLab(signal, __LINE__); return; case 17: jam(); systemErrorLab(signal, __LINE__); return; case 18: jam(); warningHandlerLab(signal, __LINE__); return; case 19: jam(); return; case 20: jam(); warningHandlerLab(signal, __LINE__); return; case 21: jam(); systemErrorLab(signal, __LINE__); return; case 22: jam(); systemErrorLab(signal, __LINE__); return; case 23: jam(); systemErrorLab(signal, __LINE__); return; case 24: jam(); seizeAttrbuferrorLab(signal); return; case 25: jam(); warningHandlerLab(signal, __LINE__); return; case 26: jam(); return; case 27: systemErrorLab(signal, __LINE__); jam(); return; case 28: jam(); // NOT USED return; case 29: jam(); systemErrorLab(signal, __LINE__); return; case 30: jam(); systemErrorLab(signal, __LINE__); return; case 31: jam(); systemErrorLab(signal, __LINE__); return; case 32: jam(); systemErrorLab(signal, __LINE__); return; case 33: jam(); systemErrorLab(signal, __LINE__); return; case 34: jam(); systemErrorLab(signal, __LINE__); return; case 35: jam(); systemErrorLab(signal, __LINE__); return; case 36: jam(); systemErrorLab(signal, __LINE__); return; case 37: jam(); systemErrorLab(signal, __LINE__); return; case 38: jam(); systemErrorLab(signal, __LINE__); return; case 39: jam(); systemErrorLab(signal, __LINE__); return; case 40: jam(); systemErrorLab(signal, __LINE__); return; case 41: jam(); systemErrorLab(signal, __LINE__); return; case 42: jam(); systemErrorLab(signal, __LINE__); return; case 43: jam(); systemErrorLab(signal, __LINE__); return; case 44: jam(); systemErrorLab(signal, __LINE__); return; case 45: jam(); systemErrorLab(signal, __LINE__); return; case 46: jam(); systemErrorLab(signal, __LINE__); return; case 47: jam(); terrorCode = apiConnectptr.p->returncode; releaseAtErrorLab(signal); return; case 48: jam(); terrorCode = ZCOMMIT_TYPE_ERROR; releaseAtErrorLab(signal); return; case 49: jam(); abortErrorLab(signal); return; case 50: jam(); systemErrorLab(signal, __LINE__); return; case 51: jam(); abortErrorLab(signal); return; case 52: jam(); abortErrorLab(signal); return; case 53: jam(); abortErrorLab(signal); return; case 54: jam(); abortErrorLab(signal); return; case 55: jam(); printState(signal, 5); sendSignalErrorRefuseLab(signal); return; case 56:{ jam(); terrorCode = ZNO_FREE_TC_MARKER; abortErrorLab(signal); return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -