List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:September 19 2008 11:54pm
Subject:bzr commit into mysql-5.1 branch (jonas:2701)
View as plain text  
#At file:///home/jonas/src/telco-6.3/

 2701 Jonas Oreland	2008-09-19 [merge]
      merge 6.2 to 6.3
modified:
  storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
  storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
  storage/ndb/src/ndbapi/ndberror.c

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2008-08-11 11:24:12 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2008-09-19 21:54:11 +0000
@@ -123,6 +123,7 @@
 #define ZUNKNOWN_TABLE_ERROR 285
 #define ZNODEFAIL_BEFORE_COMMIT 286
 #define ZINDEX_CORRUPT_ERROR 287
+#define ZSCAN_FRAGREC_ERROR 291
 
 // ----------------------------------------
 // Seize error
@@ -1424,7 +1425,7 @@ private:
                            UintR anApiConnectPtr);
   void handleScanStop(Signal* signal, UintR aFailedNode);
   void initScanTcrec(Signal* signal);
-  void initScanrec(ScanRecordPtr,  const class ScanTabReq*,
+  Uint32 initScanrec(ScanRecordPtr,  const class ScanTabReq*,
 		   const UintR scanParallel, 
 		   const UintR noOprecPerFrag);
   void initScanfragrec(Signal* signal);

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2008-08-21 22:14:40 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2008-09-19 21:54:11 +0000
@@ -9222,7 +9222,12 @@ void Dbtc::execSCAN_TABREQ(Signal* signa
   ndbrequire(transP->apiScanRec == RNIL);
   ndbrequire(scanptr.p->scanApiRec == RNIL);
 
-  initScanrec(scanptr, scanTabReq, scanParallel, noOprecPerFrag);
+  errCode = initScanrec(scanptr, scanTabReq, scanParallel, noOprecPerFrag);
+  if (unlikely(errCode))
+  {
+    jam();
+    goto SCAN_TAB_error;
+  }
 
   transP->apiScanRec = scanptr.i;
   transP->returncode = 0;
@@ -9312,10 +9317,11 @@ SCAN_TAB_error_no_state_change:
   return;
 }//Dbtc::execSCAN_TABREQ()
 
-void Dbtc::initScanrec(ScanRecordPtr scanptr,
-		       const ScanTabReq * scanTabReq,
-		       UintR scanParallel,
-		       UintR noOprecPerFrag) 
+Uint32
+Dbtc::initScanrec(ScanRecordPtr scanptr,
+		  const ScanTabReq * scanTabReq,
+		  UintR scanParallel,
+		  UintR noOprecPerFrag) 
 {
   const UintR ri = scanTabReq->requestInfo;
   scanptr.p->scanTcrec = tcConnectptr.i;
@@ -9350,7 +9356,11 @@ void Dbtc::initScanrec(ScanRecordPtr sca
   for (Uint32 i = 0; i < scanParallel; i++) {
     jam();
     ScanFragRecPtr ptr;
-    ndbrequire(list.seize(ptr));
+    if (unlikely(list.seize(ptr) == false))
+    {
+      jam();
+      goto errout;
+    }
     ptr.p->scanFragState = ScanFragRec::IDLE;
     ptr.p->scanRec = scanptr.i;
     ptr.p->scanFragId = 0;
@@ -9360,6 +9370,10 @@ void Dbtc::initScanrec(ScanRecordPtr sca
   (* (ScanTabReq::getRangeScanFlag(ri) ? 
       &c_counters.c_range_scan_count : 
       &c_counters.c_scan_count))++;
+  return 0;
+errout:
+  list.release();
+  return ZSCAN_FRAGREC_ERROR;
 }//Dbtc::initScanrec()
 
 void Dbtc::scanTabRefLab(Signal* signal, Uint32 errCode) 

=== modified file 'storage/ndb/src/ndbapi/ndberror.c'
--- a/storage/ndb/src/ndbapi/ndberror.c	2008-04-28 15:27:57 +0000
+++ b/storage/ndb/src/ndbapi/ndberror.c	2008-09-19 21:54:11 +0000
@@ -191,6 +191,7 @@ ErrorBundle ErrorCodes[] = {
   { 1501, DMEC, TR, "Out of undo space" },
   {  288, DMEC, TR, "Out of index operations in transaction coordinator (increase
MaxNoOfConcurrentIndexOperations)" },
   {  289, DMEC, TR, "Out of transaction buffer memory in TC (increase
TransactionBufferMemory)" },
+  {  291, DMEC, TR, "Out of scanfrag records in TC (increase MaxNoOfLocalScans)" },
 
   /**
    * InsufficientSpace

Thread
bzr commit into mysql-5.1 branch (jonas:2701) Jonas Oreland19 Sep