List:Commits« Previous MessageNext Message »
From:jonas Date:April 25 2006 4:01pm
Subject:bk commit into 5.0 tree (jonas:1.2146)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2146 06/04/25 16:01:54 jonas@stripped +2 -0
  Merge perch.ndb.mysql.com:/home/jonas/src/41-work
  into  perch.ndb.mysql.com:/home/jonas/src/50-work

  ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
    1.92 06/04/25 16:01:51 jonas@stripped +0 -0
    Auto merged

  ndb/src/kernel/blocks/dbtc/Dbtc.hpp
    1.34 06/04/25 16:01:50 jonas@stripped +0 -0
    Auto merged

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	jonas
# Host:	perch.ndb.mysql.com
# Root:	/home/jonas/src/50-work/RESYNC

--- 1.33/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2006-03-22 15:10:34 +01:00
+++ 1.34/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2006-04-25 16:01:50 +02:00
@@ -1407,7 +1407,7 @@
 		   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 @@
   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);

--- 1.91/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2006-04-04 11:50:44 +02:00
+++ 1.92/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2006-04-25 16:01:51 +02:00
@@ -8839,17 +8839,17 @@
 
 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 @@
     ;
   } else {
     abortScanLab(signal, scanptr, 
-		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
+		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
+		 true);
     return;
   }
 
@@ -8932,13 +8933,13 @@
   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 @@
     ;
   } else {
     abortScanLab(signal, scanptr,
-		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
+		 tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
+		 true);
     return;
   }
 
@@ -9016,20 +9018,22 @@
   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 @@
   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());
Thread
bk commit into 5.0 tree (jonas:1.2146)jonas25 Apr