/* ---------------------------------------------------------------------- */ void Dbtup::execEND_LCPREQ(Signal* signal) { DiskBufferSegmentInfoPtr dbsiPtr; LocalLogInfoPtr lliPtr; PendingFileOpenInfoPtr pfoiPtr; ljamEntry(); clqhUserpointer = signal->theData[0]; clqhBlockref = signal->theData[1]; for (lliPtr.i = 0; lliPtr.i < 16; lliPtr.i++) { ljam(); ptrAss(lliPtr, localLogInfo); if (lliPtr.p->lliActiveLcp > 0) { ljam(); dbsiPtr.i = lliPtr.p->lliUndoBufferSegmentP; ptrCheckGuard(dbsiPtr, cnoOfConcurrentWriteOp, diskBufferSegmentInfo); freeDiskBufferSegmentRecord(signal, dbsiPtr); seizePendingFileOpenInfoRecord(pfoiPtr); /* SEIZE A NEW FILE OPEN INFO */ pfoiPtr.p->pfoOpenType = LCP_UNDO_FILE_CLOSE; pfoiPtr.p->pfoCheckpointInfoP = lliPtr.i; signal->theData[0] = lliPtr.p->lliUndoFileHandle; signal->theData[1] = cownref; signal->theData[2] = pfoiPtr.i; signal->theData[3] = 0; sendSignal(NDBFS_REF, GSN_FSCLOSEREQ, signal, 4, JBA); lliPtr.p->lliActiveLcp = 0; }//if }//for return; }//Dbtup::execEND_LCPREQ()
void Dbtup::lcpEndconfLab(Signal* signal) { LocalLogInfoPtr lliPtr; for (lliPtr.i = 0; lliPtr.i < 16; lliPtr.i++) { ljam(); ptrAss(lliPtr, localLogInfo); if (lliPtr.p->lliUndoFileHandle != RNIL) { ljam(); /* ---------------------------------------------------------------------- */ /* WAIT UNTIL ALL LOG FILES HAVE BEEN CLOSED. */ /* ---------------------------------------------------------------------- */ return; }//if }//for signal->theData[0] = clqhUserpointer; sendSignal(clqhBlockref, GSN_END_LCPCONF, signal, 1, JBB); return; }//Dbtup::lcpEndconfLab()
void Qmgr::initData() { creadyDistCom = ZFALSE; // Records with constant sizes nodeRec = new NodeRec[MAX_NODES]; cnoCommitFailedNodes = 0; c_maxDynamicId = 0; c_clusterNodes.clear(); c_stopReq.senderRef = 0; /** * Check sanity for NodeVersion */ ndbrequire((Uint32)NodeInfo::DB == 0); ndbrequire((Uint32)NodeInfo::API == 1); ndbrequire((Uint32)NodeInfo::MGM == 2); NodeRecPtr nodePtr; nodePtr.i = getOwnNodeId(); ptrAss(nodePtr, nodeRec); nodePtr.p->blockRef = reference(); c_connectedNodes.set(getOwnNodeId()); setNodeInfo(getOwnNodeId()).m_version = NDB_VERSION; /** * Timeouts */ const ndb_mgm_configuration_iterator * p = m_ctx.m_config.getOwnConfigIterator(); ndbrequire(p != 0); Uint32 hbDBAPI = 1500; ndb_mgm_get_int_parameter(p, CFG_DB_API_HEARTBEAT_INTERVAL, &hbDBAPI); setHbApiDelay(hbDBAPI); }//Qmgr::initData()
void Qmgr::initData() { creadyDistCom = ZFALSE; // Records with constant sizes nodeRec = new NodeRec[MAX_NODES]; for (Uint32 i = 0; i<MAX_NODES; i++) { nodeRec[i].m_secret = 0; } c_maxDynamicId = 0; c_clusterNodes.clear(); c_stopReq.senderRef = 0; /** * Check sanity for NodeVersion */ ndbrequire((Uint32)NodeInfo::DB == 0); ndbrequire((Uint32)NodeInfo::API == 1); ndbrequire((Uint32)NodeInfo::MGM == 2); m_micro_gcp_enabled = false; m_hb_order_config_used = false; NodeRecPtr nodePtr; nodePtr.i = getOwnNodeId(); ptrAss(nodePtr, nodeRec); nodePtr.p->blockRef = reference(); ndbrequire(getNodeInfo(getOwnNodeId()).m_type == NodeInfo::DB); c_connectedNodes.set(getOwnNodeId()); setNodeInfo(getOwnNodeId()).m_version = NDB_VERSION; /** * Timeouts */ const ndb_mgm_configuration_iterator * p = m_ctx.m_config.getOwnConfigIterator(); ndbrequire(p != 0); Uint32 hbDBAPI = 1500; ndb_mgm_get_int_parameter(p, CFG_DB_API_HEARTBEAT_INTERVAL, &hbDBAPI); setHbApiDelay(hbDBAPI); const NDB_TICKS now = NdbTick_getCurrentTicks(); //OJA bug#17757895 interface_check_timer.setDelay(1000); interface_check_timer.reset(now); #ifdef ERROR_INSERT nodeFailCount = 0; #endif cfailureNr = 1; ccommitFailureNr = 1; cprepareFailureNr = 1; cfailedNodes.clear(); cprepFailedNodes.clear(); ccommitFailedNodes.clear(); creadyDistCom = ZFALSE; cpresident = ZNIL; c_start.m_president_candidate = ZNIL; c_start.m_president_candidate_gci = 0; cpdistref = 0; cneighbourh = ZNIL; cneighbourl = ZNIL; cdelayRegreq = ZDELAY_REGREQ; c_allow_api_connect = 0; ctoStatus = Q_NOT_ACTIVE; for (nodePtr.i = 1; nodePtr.i < MAX_NODES; nodePtr.i++) { ptrAss(nodePtr, nodeRec); nodePtr.p->ndynamicId = 0; nodePtr.p->hbOrder = 0; Uint32 cnt = 0; Uint32 type = getNodeInfo(nodePtr.i).m_type; switch(type){ case NodeInfo::DB: jam(); nodePtr.p->phase = ZINIT; c_definedNodes.set(nodePtr.i); break; case NodeInfo::API: jam(); nodePtr.p->phase = ZAPI_INACTIVE; break; case NodeInfo::MGM: jam(); /** * cmvmi allows ndb_mgmd to connect directly */ nodePtr.p->phase = ZAPI_INACTIVE; break; default: jam(); nodePtr.p->phase = ZAPI_INACTIVE; } set_hb_count(nodePtr.i) = cnt; nodePtr.p->sendPrepFailReqStatus = Q_NOT_ACTIVE; nodePtr.p->sendCommitFailReqStatus = Q_NOT_ACTIVE; nodePtr.p->sendPresToStatus = Q_NOT_ACTIVE; nodePtr.p->failState = NORMAL; }//for }//Qmgr::initData()