Commit e1e3a93f authored by unknown's avatar unknown
Browse files

Merge perch.ndb.mysql.com:/home/jonas/src/50-work

into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.0

parents 2ce6146b 27ace481
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -88,12 +88,13 @@ Backup::execREAD_CONFIG_REQ(Signal* signal)

  c_nodePool.setSize(MAX_NDB_NODES);

  Uint32 noBackups = 0, noTables = 0, noAttribs = 0;
  Uint32 noBackups = 0, noTables = 0, noAttribs = 0, noFrags = 0;
  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_DISCLESS, &m_diskless));
  ndb_mgm_get_int_parameter(p, CFG_DB_PARALLEL_BACKUPS, &noBackups);
  //  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_NO_TABLES, &noTables));
  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DICT_TABLE, &noTables));
  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_NO_ATTRIBUTES, &noAttribs));
  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DIH_FRAG_CONNECT, &noFrags));

  noAttribs++; //RT 527 bug fix

@@ -102,9 +103,7 @@ Backup::execREAD_CONFIG_REQ(Signal* signal)
  c_tablePool.setSize(noBackups * noTables);
  c_attributePool.setSize(noBackups * noAttribs);
  c_triggerPool.setSize(noBackups * 3 * noTables);

  // 2 = no of replicas
  c_fragmentPool.setSize(noBackups * 2 * NO_OF_FRAG_PER_NODE * noTables);
  c_fragmentPool.setSize(noBackups * noFrags);
  
  Uint32 szMem = 0;
  ndb_mgm_get_int_parameter(p, CFG_DB_BACKUP_MEM, &szMem);
+3 −2
Original line number Diff line number Diff line
@@ -1407,7 +1407,7 @@ private:
		   const UintR scanParallel, 
		   const UintR noOprecPerFrag);
  void initScanfragrec(Signal* signal);
  void releaseScanResources(ScanRecordPtr);
  void releaseScanResources(ScanRecordPtr, bool not_started = false);
  ScanRecordPtr seizeScanrec(Signal* signal);
  void sendScanFragReq(Signal*, ScanRecord*, ScanFragRec*);
  void sendScanTabConf(Signal* signal, ScanRecordPtr);
@@ -1554,7 +1554,8 @@ private:
  void signalErrorRefuseLab(Signal* signal);
  void abort080Lab(Signal* signal);
  void packKeyData000Lab(Signal* signal, BlockReference TBRef, Uint32 len);
  void abortScanLab(Signal* signal, ScanRecordPtr, Uint32 errCode);
  void abortScanLab(Signal* signal, ScanRecordPtr, Uint32 errCode, 
		    bool not_started = false);
  void sendAbortedAfterTimeout(Signal* signal, int Tcheck);
  void abort010Lab(Signal* signal);
  void abort015Lab(Signal* signal);
+25 −12
Original line number Diff line number Diff line
@@ -8839,17 +8839,17 @@ void Dbtc::scanAttrinfoLab(Signal* signal, UintR Tlen)

scanAttrinfo_attrbuf_error:
  jam();
  abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR);
  abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR, true);
  return;

scanAttrinfo_attrbuf2_error:
  jam();
  abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR);
  abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR, true);
  return;

scanAttrinfo_len_error:
  jam();
  abortScanLab(signal, scanptr, ZLENGTH_ERROR);
  abortScanLab(signal, scanptr, ZLENGTH_ERROR, true);
  return;
}//Dbtc::scanAttrinfoLab()

@@ -8865,7 +8865,8 @@ void Dbtc::diFcountReqLab(Signal* signal, ScanRecordPtr scanptr)
    ;
  } else {
    abortScanLab(signal, scanptr, 
		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
		 true);
    return;
  }

@@ -8932,13 +8933,13 @@ void Dbtc::execDI_FCOUNTCONF(Signal* signal)
  ndbrequire(scanptr.p->scanState == ScanRecord::WAIT_FRAGMENT_COUNT);
  if (apiConnectptr.p->apiFailState == ZTRUE) {
    jam();
    releaseScanResources(scanptr);
    releaseScanResources(scanptr, true);
    handleApiFailState(signal, apiConnectptr.i);
    return;
  }//if
  if (tfragCount == 0) {
    jam();
    abortScanLab(signal, scanptr, ZNO_FRAGMENT_ERROR);
    abortScanLab(signal, scanptr, ZNO_FRAGMENT_ERROR, true);
    return;
  }//if
  
@@ -8952,7 +8953,8 @@ void Dbtc::execDI_FCOUNTCONF(Signal* signal)
    ;
  } else {
    abortScanLab(signal, scanptr,
		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
		 true);
    return;
  }

@@ -9016,20 +9018,22 @@ void Dbtc::execDI_FCOUNTREF(Signal* signal)
  ndbrequire(scanptr.p->scanState == ScanRecord::WAIT_FRAGMENT_COUNT);
  if (apiConnectptr.p->apiFailState == ZTRUE) {
    jam();
    releaseScanResources(scanptr);
    releaseScanResources(scanptr, true);
    handleApiFailState(signal, apiConnectptr.i);
    return;
  }//if
  abortScanLab(signal, scanptr, errCode);
  abortScanLab(signal, scanptr, errCode, true);
}//Dbtc::execDI_FCOUNTREF()

void Dbtc::abortScanLab(Signal* signal, ScanRecordPtr scanptr, Uint32 errCode) 
void Dbtc::abortScanLab(Signal* signal, ScanRecordPtr scanptr, Uint32 errCode,
			bool not_started) 
{
  scanTabRefLab(signal, errCode);
  releaseScanResources(scanptr);
  releaseScanResources(scanptr, not_started);
}//Dbtc::abortScanLab()

void Dbtc::releaseScanResources(ScanRecordPtr scanPtr)
void Dbtc::releaseScanResources(ScanRecordPtr scanPtr,
				bool not_started)
{
  if (apiConnectptr.p->cachePtr != RNIL) {
    cachePtr.i = apiConnectptr.p->cachePtr;
@@ -9041,6 +9045,15 @@ void Dbtc::releaseScanResources(ScanRecordPtr scanPtr)
  ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
  releaseTcCon();

  if (not_started)
  {
    jam();
    ScanFragList run(c_scan_frag_pool, scanPtr.p->m_running_scan_frags);
    ScanFragList queue(c_scan_frag_pool, scanPtr.p->m_queued_scan_frags);
    run.release();
    queue.release();
  }
  
  ndbrequire(scanPtr.p->m_running_scan_frags.isEmpty());
  ndbrequire(scanPtr.p->m_queued_scan_frags.isEmpty());
  ndbrequire(scanPtr.p->m_delivered_scan_frags.isEmpty());
+2 −2
Original line number Diff line number Diff line
@@ -1355,5 +1355,5 @@ NdbTransaction::sendTC_COMMIT_ACK(NdbApiSignal * aSignal,
  dataPtr[0] = transId1;
  dataPtr[1] = transId2;
  
  tp->sendSignal(aSignal, refToNode(aTCRef));
  tp->sendSignalUnCond(aSignal, refToNode(aTCRef));
}
+4 −3
Original line number Diff line number Diff line
@@ -813,7 +813,7 @@ TransporterFacade::sendSignal(NdbApiSignal * aSignal, NodeId aNode){
      LinearSectionPtr ptr[3];
      signalLogger.sendSignal(* aSignal,
			      1,
			      aSignal->getDataPtr(),
			      tDataPtr,
			      aNode, ptr, 0);
      signalLogger.flushSignalLog();
      aSignal->theSendersBlockRef = tmp;
@@ -840,6 +840,7 @@ TransporterFacade::sendSignal(NdbApiSignal * aSignal, NodeId aNode){

int
TransporterFacade::sendSignalUnCond(NdbApiSignal * aSignal, NodeId aNode){
  Uint32* tDataPtr = aSignal->getDataPtrSend();
#ifdef API_TRACE
  if(setSignalLog() && TRACE_GSN(aSignal->theVerId_signalNumber)){
    Uint32 tmp = aSignal->theSendersBlockRef;
@@ -847,7 +848,7 @@ TransporterFacade::sendSignalUnCond(NdbApiSignal * aSignal, NodeId aNode){
    LinearSectionPtr ptr[3];
    signalLogger.sendSignal(* aSignal,
			    0,
			    aSignal->getDataPtr(),
			    tDataPtr,
			    aNode, ptr, 0);
    signalLogger.flushSignalLog();
    aSignal->theSendersBlockRef = tmp;
@@ -858,7 +859,7 @@ TransporterFacade::sendSignalUnCond(NdbApiSignal * aSignal, NodeId aNode){
         (aSignal->theReceiversBlockNumber != 0));
  SendStatus ss = theTransporterRegistry->prepareSend(aSignal, 
						      0, 
						      aSignal->getDataPtr(), 
						      tDataPtr,
						      aNode, 
						      0);
  
Loading