List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:October 5 2009 10:38am
Subject:bzr commit into mysql-5.1-telco-6.2 branch (jonas:3011) Bug#47831
View as plain text  
#At file:///home/jonas/src/telco-6.2/ based on revid:jonas@stripped

 3011 Jonas Oreland	2009-10-05
      ndb - bug#47831 - fix scan error handling in Dbtc, wrt lists

    modified:
      storage/ndb/src/kernel/blocks/ERROR_codes.txt
      storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
      storage/ndb/test/ndbapi/testScan.cpp
      storage/ndb/test/run-test/daily-basic-tests.txt
=== modified file 'storage/ndb/src/kernel/blocks/ERROR_codes.txt'
--- a/storage/ndb/src/kernel/blocks/ERROR_codes.txt	2009-09-14 12:48:22 +0000
+++ b/storage/ndb/src/kernel/blocks/ERROR_codes.txt	2009-10-05 10:38:50 +0000
@@ -6,7 +6,7 @@ Next DBTUP 4029
 Next DBLQH 5054
 Next DBDICT 6008
 Next DBDIH 7215
-Next DBTC 8081
+Next DBTC 8082
 Next CMVMI 9000
 Next BACKUP 10041
 Next DBUTIL 11002

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2009-09-14 12:48:22 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2009-10-05 10:38:50 +0000
@@ -7094,10 +7094,11 @@ void Dbtc::timeOutFoundFragLab(Signal* s
        * The node has died
        */
       ptr.p->scanFragState = ScanFragRec::COMPLETED;
-      ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
-      
-      run.release(ptr);
       ptr.p->stopFragTimer();
+      {
+        ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
+        run.release(ptr);
+      }
     }
     
     scanError(signal, scanptr, ZSCAN_FRAG_LQH_ERROR);
@@ -9799,12 +9800,24 @@ void Dbtc::execDIGETPRIMCONF(Signal* sig
     tabPtr.i = scanptr.p->scanTableref;
     ptrAss(tabPtr, tableRecord);
     Uint32 schemaVersion = scanptr.p->scanSchemaVersion;
-    if(tabPtr.p->checkTable(schemaVersion) == false){
+    if (ERROR_INSERTED(8081) || tabPtr.p->checkTable(schemaVersion) == false)
+    {
       jam();
-      ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
-      
-      run.release(scanFragptr);
-      scanError(signal, scanptr, tabPtr.p->getErrorCode(schemaVersion));
+      Uint32 err;
+      if (ERROR_INSERTED(8081))
+      {
+        err = ZTIME_OUT_ERROR;
+        CLEAR_ERROR_INSERT_VALUE;
+      }
+      else
+      {
+        err = tabPtr.p->getErrorCode(schemaVersion);
+      }
+      {
+        ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
+        run.release(scanFragptr);
+      }
+      scanError(signal, scanptr, err);
       return;
     }
   }
@@ -9821,7 +9834,6 @@ void Dbtc::execDIGETPRIMCONF(Signal* sig
     updateBuddyTimer(apiConnectptr);
     {
       ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
-      
       run.release(scanFragptr);
     }
     close_scan_req_send_conf(signal, scanptr);
@@ -9878,9 +9890,10 @@ void Dbtc::execDIGETPRIMREF(Signal* sign
   scanptr.i = scanFragptr.p->scanRec;
   ptrCheckGuard(scanptr, cscanrecFileSize, scanRecord);
 
-  ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
-  
-  run.release(scanFragptr);
+  {
+    ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
+    run.release(scanFragptr);
+  }
 
   scanError(signal, scanptr, errCode);
 }//Dbtc::execDIGETPRIMREF()
@@ -9922,12 +9935,11 @@ void Dbtc::execSCAN_FRAGREF(Signal* sign
    * close of the other fragment scans
    */
   ndbrequire(scanFragptr.p->scanFragState == ScanFragRec::LQH_ACTIVE);
+  scanFragptr.p->scanFragState = ScanFragRec::COMPLETED;
+  scanFragptr.p->stopFragTimer();
   {
-    scanFragptr.p->scanFragState = ScanFragRec::COMPLETED;
     ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
-    
     run.release(scanFragptr);
-    scanFragptr.p->stopFragTimer();
   }    
   scanError(signal, scanptr, errCode);
 }//Dbtc::execSCAN_FRAGREF()
@@ -10023,11 +10035,12 @@ void Dbtc::execSCAN_FRAGCONF(Signal* sig
       return;
     } else {
       jam();
-      ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
-      
-      run.release(scanFragptr);
       scanFragptr.p->stopFragTimer();
       scanFragptr.p->scanFragState = ScanFragRec::COMPLETED;
+      {
+        ScanFragList run(c_scan_frag_pool, scanptr.p->m_running_scan_frags);
+        run.release(scanFragptr);
+      }
     }
     close_scan_req_send_conf(signal, scanptr);
     return;

=== modified file 'storage/ndb/test/ndbapi/testScan.cpp'
--- a/storage/ndb/test/ndbapi/testScan.cpp	2009-05-26 18:53:34 +0000
+++ b/storage/ndb/test/ndbapi/testScan.cpp	2009-10-05 10:38:50 +0000
@@ -1717,6 +1717,13 @@ TESTCASE("ScanReadError5025", 
   STEP(runScanReadError);
   FINALIZER(runClearTable);
 }
+TESTCASE("ScanReadError8081",
+	 "Scan and insert error 8081"){
+  INITIALIZER(runLoadTable);
+  TC_PROPERTY("ErrorCode", 8081);
+  STEP(runScanReadError);
+  FINALIZER(runClearTable);
+}
 TESTCASE("ScanReadError5030", 
 	 "Scan and insert error 5030."\
 	 "Drop all SCAN_NEXTREQ signals in LQH until the node is "\

=== modified file 'storage/ndb/test/run-test/daily-basic-tests.txt'
--- a/storage/ndb/test/run-test/daily-basic-tests.txt	2009-09-22 13:04:32 +0000
+++ b/storage/ndb/test/run-test/daily-basic-tests.txt	2009-10-05 10:38:50 +0000
@@ -475,6 +475,10 @@ args: -n ScanReadError5030 T1 D1 D2 
 
 max-time: 500
 cmd: testScan
+args: -n ScanReadError8081 T1 D1 D2
+
+max-time: 500
+cmd: testScan
 args: -n InsertDelete T1 T6 D1 D2 
 
 max-time: 500


Attachment: [text/bzr-bundle] bzr/jonas@mysql.com-20091005103850-dwij2dojwpvf5hi6.bundle
Thread
bzr commit into mysql-5.1-telco-6.2 branch (jonas:3011) Bug#47831Jonas Oreland5 Oct