⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbdihmain.cpp

📁 mysql-5.0.22.tar.gz源码包
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    jam();    break;  case FileRecord::TABLE_CLOSE_DELETE:    jam();    break;  default:    jam();    break;  }//switch  {    char msg[100];    sprintf(msg, "File system close failed during FileRecord status %d", (Uint32)status);    fsRefError(signal,__LINE__,msg);  }  return;}//Dbdih::execFSCLOSEREF()void Dbdih::execFSOPENCONF(Signal* signal) {  FileRecordPtr filePtr;  jamEntry();  filePtr.i = signal->theData[0];  ptrCheckGuard(filePtr, cfileFileSize, fileRecord);  filePtr.p->fileRef = signal->theData[1];  filePtr.p->fileStatus = FileRecord::OPEN;  FileRecord::ReqStatus status = filePtr.p->reqStatus;  filePtr.p->reqStatus = FileRecord::IDLE;  switch (status) {  case FileRecord::CREATING_GCP:    jam();    creatingGcpLab(signal, filePtr);    break;  case FileRecord::OPENING_COPY_GCI:    jam();    openingCopyGciSkipInitLab(signal, filePtr);    break;  case FileRecord::CREATING_COPY_GCI:    jam();    openingCopyGciSkipInitLab(signal, filePtr);    break;  case FileRecord::OPENING_GCP:    jam();    openingGcpLab(signal, filePtr);    break;  case FileRecord::OPENING_TABLE:    jam();    openingTableLab(signal, filePtr);    break;  case FileRecord::TABLE_CREATE:    jam();    tableCreateLab(signal, filePtr);    break;  case FileRecord::TABLE_OPEN_FOR_DELETE:    jam();    tableOpenLab(signal, filePtr);    break;  default:    ndbrequire(false);    break;  }//switch  return;}//Dbdih::execFSOPENCONF()void Dbdih::execFSOPENREF(Signal* signal) {  FileRecordPtr filePtr;  jamEntry();  filePtr.i = signal->theData[0];  ptrCheckGuard(filePtr, cfileFileSize, fileRecord);  FileRecord::ReqStatus status = filePtr.p->reqStatus;  filePtr.p->reqStatus = FileRecord::IDLE;  switch (status) {  case FileRecord::CREATING_GCP:    /* --------------------------------------------------------------------- */    /*   WE DID NOT MANAGE TO CREATE A GLOBAL CHECKPOINT FILE. SERIOUS ERROR */    /*   WHICH CAUSES A SYSTEM RESTART.                                      */    /* --------------------------------------------------------------------- */    jam();    break;  case FileRecord::OPENING_COPY_GCI:    jam();    openingCopyGciErrorLab(signal, filePtr);    return;  case FileRecord::CREATING_COPY_GCI:    jam();    break;  case FileRecord::OPENING_GCP:    jam();    openingGcpErrorLab(signal, filePtr);    return;  case FileRecord::OPENING_TABLE:    jam();    openingTableErrorLab(signal, filePtr);    return;  case FileRecord::TABLE_CREATE:    jam();    break;  case FileRecord::TABLE_OPEN_FOR_DELETE:    jam();    tableDeleteLab(signal, filePtr);    return;  default:    jam();    break;  }//switch  {    char msg[100];    sprintf(msg, "File system open failed during FileRecord status %d", (Uint32)status);    fsRefError(signal,__LINE__,msg);  }  return;}//Dbdih::execFSOPENREF()void Dbdih::execFSREADCONF(Signal* signal) {  FileRecordPtr filePtr;  jamEntry();  filePtr.i = signal->theData[0];  ptrCheckGuard(filePtr, cfileFileSize, fileRecord);  FileRecord::ReqStatus status = filePtr.p->reqStatus;  filePtr.p->reqStatus = FileRecord::IDLE;  switch (status) {  case FileRecord::READING_GCP:    jam();    readingGcpLab(signal, filePtr);    break;  case FileRecord::READING_TABLE:    jam();    readingTableLab(signal, filePtr);    break;  default:    ndbrequire(false);    break;  }//switch  return;}//Dbdih::execFSREADCONF()void Dbdih::execFSREADREF(Signal* signal) {  FileRecordPtr filePtr;  jamEntry();  filePtr.i = signal->theData[0];  ptrCheckGuard(filePtr, cfileFileSize, fileRecord);  FileRecord::ReqStatus status = filePtr.p->reqStatus;  filePtr.p->reqStatus = FileRecord::IDLE;  switch (status) {  case FileRecord::READING_GCP:    jam();    readingGcpErrorLab(signal, filePtr);    return;  case FileRecord::READING_TABLE:    jam();    readingTableErrorLab(signal, filePtr);    return;  default:    break;  }//switch  {    char msg[100];    sprintf(msg, "File system read failed during FileRecord status %d", (Uint32)status);    fsRefError(signal,__LINE__,msg);  }}//Dbdih::execFSREADREF()void Dbdih::execFSWRITECONF(Signal* signal) {  FileRecordPtr filePtr;  jamEntry();  filePtr.i = signal->theData[0];  ptrCheckGuard(filePtr, cfileFileSize, fileRecord);  FileRecord::ReqStatus status = filePtr.p->reqStatus;  filePtr.p->reqStatus = FileRecord::IDLE;  switch (status) {  case FileRecord::WRITING_COPY_GCI:    jam();    writingCopyGciLab(signal, filePtr);    break;  case FileRecord::WRITE_INIT_GCP:    jam();    writeInitGcpLab(signal, filePtr);    break;  case FileRecord::TABLE_WRITE:    jam();    tableWriteLab(signal, filePtr);    break;  default:    ndbrequire(false);    break;  }//switch  return;}//Dbdih::execFSWRITECONF()void Dbdih::execFSWRITEREF(Signal* signal) {  FileRecordPtr filePtr;  jamEntry();  filePtr.i = signal->theData[0];  ptrCheckGuard(filePtr, cfileFileSize, fileRecord);  FileRecord::ReqStatus status = filePtr.p->reqStatus;  filePtr.p->reqStatus = FileRecord::IDLE;  switch (status) {  case FileRecord::WRITING_COPY_GCI:    /* --------------------------------------------------------------------- */    /*  EVEN CREATING THE FILE DID NOT WORK. WE WILL THEN CRASH.             */    /*  ERROR IN WRITING FILE. WE WILL NOT CONTINUE FROM HERE.               */    /* --------------------------------------------------------------------- */    jam();    break;  case FileRecord::WRITE_INIT_GCP:    /* --------------------------------------------------------------------- */    /*   AN ERROR OCCURRED IN WRITING A GCI FILE WHICH IS A SERIOUS ERROR    */    /*   THAT CAUSE A SYSTEM RESTART.                                        */    /* --------------------------------------------------------------------- */    jam();    break;  case FileRecord::TABLE_WRITE:    jam();    break;  default:    jam();    break;  }//switch  {    char msg[100];    sprintf(msg, "File system write failed during FileRecord status %d", (Uint32)status);    fsRefError(signal,__LINE__,msg);  }  return;}//Dbdih::execFSWRITEREF()void Dbdih::execGETGCIREQ(Signal* signal) {  jamEntry();  Uint32 userPtr = signal->theData[0];  BlockReference userRef = signal->theData[1];  signal->theData[0] = userPtr;  signal->theData[1] = SYSFILE->newestRestorableGCI;  sendSignal(userRef, GSN_GETGCICONF, signal, 2, JBB);}//Dbdih::execGETGCIREQ()void Dbdih::execREAD_CONFIG_REQ(Signal* signal) {  const ReadConfigReq * req = (ReadConfigReq*)signal->getDataPtr();  Uint32 ref = req->senderRef;  Uint32 senderData = req->senderData;  ndbrequire(req->noOfParameters == 0);  jamEntry();  const ndb_mgm_configuration_iterator * p =     theConfiguration.getOwnConfigIterator();  ndbrequireErr(p != 0, NDBD_EXIT_INVALID_CONFIG);  initData();  ndbrequireErr(!ndb_mgm_get_int_parameter(p, CFG_DIH_API_CONNECT, 					   &capiConnectFileSize),		NDBD_EXIT_INVALID_CONFIG);  ndbrequireErr(!ndb_mgm_get_int_parameter(p, CFG_DIH_CONNECT,					   &cconnectFileSize),		NDBD_EXIT_INVALID_CONFIG);  ndbrequireErr(!ndb_mgm_get_int_parameter(p, CFG_DIH_FRAG_CONNECT, 					   &cfragstoreFileSize),		NDBD_EXIT_INVALID_CONFIG);  ndbrequireErr(!ndb_mgm_get_int_parameter(p, CFG_DIH_REPLICAS, 					   &creplicaFileSize),		NDBD_EXIT_INVALID_CONFIG);  ndbrequireErr(!ndb_mgm_get_int_parameter(p, CFG_DIH_TABLE, &ctabFileSize),		NDBD_EXIT_INVALID_CONFIG);  cfileFileSize = (2 * ctabFileSize) + 2;  initRecords();  initialiseRecordsLab(signal, 0, ref, senderData);  return;}//Dbdih::execSIZEALT_REP()void Dbdih::execSTART_COPYREF(Signal* signal) {  jamEntry();  ndbrequire(false);}//Dbdih::execSTART_COPYREF()void Dbdih::execSTART_FRAGCONF(Signal* signal) {  (void)signal;  // Don't want compiler warning  /* ********************************************************************* */  /*  If anyone wants to add functionality in this method, be aware that   */  /*  for temporary tables no START_FRAGREQ is sent and therefore no       */  /*  START_FRAGCONF signal will be received for those tables!!            */  /* ********************************************************************* */  jamEntry();  return;}//Dbdih::execSTART_FRAGCONF()void Dbdih::execSTART_MEREF(Signal* signal) {  jamEntry();  ndbrequire(false);}//Dbdih::execSTART_MEREF()void Dbdih::execTAB_COMMITREQ(Signal* signal) {  TabRecordPtr tabPtr;  jamEntry();  Uint32 tdictPtr = signal->theData[0];  BlockReference tdictBlockref = signal->theData[1];  tabPtr.i = signal->theData[2];  ptrCheckGuard(tabPtr, ctabFileSize, tabRecord);  ndbrequire(tabPtr.p->tabStatus == TabRecord::TS_CREATING);  tabPtr.p->tabStatus = TabRecord::TS_ACTIVE;  signal->theData[0] = tdictPtr;  signal->theData[1] = cownNodeId;  signal->theData[2] = tabPtr.i;  sendSignal(tdictBlockref, GSN_TAB_COMMITCONF, signal, 3, JBB);  return;}//Dbdih::execTAB_COMMITREQ()/*  3.2   S T A N D A R D   S U B P R O G R A M S   I N   P L E X  *************************************************************  *//*  3.2.1   S T A R T /  R E S T A R T  **********************************  *//*****************************************************************************//* **********     START / RESTART MODULE                         *************//*****************************************************************************//*  3.2.1.1    LOADING   O W N   B L O C K  R E F E R E N C E (ABSOLUTE PHASE 1)  *****************************************************************************  */void Dbdih::execDIH_RESTARTREQ(Signal* signal) {  jamEntry();  cntrlblockref = signal->theData[0];  if(theConfiguration.getInitialStart()){    sendSignal(cntrlblockref, GSN_DIH_RESTARTREF, signal, 1, JBB);  } else {    readGciFileLab(signal);  }  return;}//Dbdih::execDIH_RESTARTREQ()void Dbdih::execSTTOR(Signal* signal) {  jamEntry();  signal->theData[0] = 0;  signal->theData[1] = 0;  signal->theData[2] = 0;  signal->theData[3] = 1;   // Next start phase  signal->theData[4] = 255; // Next start phase  sendSignal(NDBCNTR_REF, GSN_STTORRY, signal, 5, JBB);  return;}//Dbdih::execSTTOR()void Dbdih::initialStartCompletedLab(Signal* signal) {  /*-------------------------------------------------------------------------*/  /* NOW THAT (RE)START IS COMPLETED WE CAN START THE LCP.*/  /*-------------------------------------------------------------------------*/  return;}//Dbdih::initialStartCompletedLab()/* * *************************************************************************** * S E N D I N G   R E P L Y  T O  S T A R T /  R E S T A R T   R E Q U E S T S * **************************************************************************** */void Dbdih::ndbsttorry10Lab(Signal* signal, Uint32 _line) {  /*-------------------------------------------------------------------------*/  // AN NDB START PHASE HAS BEEN COMPLETED. WHEN START PHASE 6 IS COMPLETED WE  // RECORD THAT THE SYSTEM IS RUNNING.  /*-------------------------------------------------------------------------*/  signal->theData[0] = reference();  sendSignal(cntrlblockref, GSN_NDB_STTORRY, signal, 1, JBB);  return;}//Dbdih::ndbsttorry10Lab()/*****************************************I N T E R N A L  P H A S E S*****************************************//*---------------------------------------------------------------------------*//*NDB_STTOR                              START SIGNAL AT START/RESTART       *//*---------------------------------------------------------------------------*/void Dbdih::execNDB_STTOR(Signal* signal) {  jamEntry();  BlockReference cntrRef = signal->theData[0];    /* SENDERS BLOCK REFERENCE */  Uint32 ownNodeId = signal->theData[1];          /* OWN PROCESSOR ID*/  Uint32 phase = signal->theData[2];              /* INTERNAL START PHASE*/  Uint32 typestart = signal->theData[3];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -