Below is the list of changes that have just been committed into a local
4.1 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.2512 06/06/30 09:41:41 jonas@stripped +2 -0
ndb - bug#20774
crash if system restart with more than 4096 fragments
solution: continueb enable expand check loop
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
1.63 06/06/30 09:41:40 jonas@stripped +41 -13
continueb enable expand check loop
ndb/src/kernel/blocks/dblqh/Dblqh.hpp
1.31 06/06/30 09:41:39 jonas@stripped +1 -0
continueb enable expand check loop
# 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/41-work
--- 1.30/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 2005-12-08 15:28:13 +01:00
+++ 1.31/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 2006-06-30 09:41:39 +02:00
@@ -232,6 +232,7 @@
#define ZSCAN_MARKERS 18
#define ZOPERATION_EVENT_REP 19
#define ZPREP_DROP_TABLE 20
+#define ZENABLE_EXPAND_CHECK 21
/* ------------------------------------------------------------------------- */
/* NODE STATE DURING SYSTEM RESTART, VARIABLES CNODES_SR_STATE */
--- 1.62/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2006-03-23 11:53:53 +01:00
+++ 1.63/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2006-06-30 09:41:40 +02:00
@@ -434,6 +434,33 @@ void Dblqh::execCONTINUEB(Signal* signal
checkDropTab(signal);
return;
break;
+ case ZENABLE_EXPAND_CHECK:
+ {
+ jam();
+ fragptr.i = signal->theData[1];
+ if (fragptr.i != RNIL)
+ {
+ jam();
+ ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord);
+ signal->theData[0] = fragptr.p->tabRef;
+ signal->theData[1] = fragptr.p->fragId;
+ sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB);
+
+ signal->theData[0] = ZENABLE_EXPAND_CHECK;
+ signal->theData[1] = fragptr.p->nextFrag;
+ sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB);
+ return;
+ }
+ else
+ {
+ jam();
+ StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend();
+ conf->startingNodeId = getOwnNodeId();
+ sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal,
+ StartRecConf::SignalLength, JBB);
+ return;
+ }
+ }
default:
ndbrequire(false);
break;
@@ -15503,20 +15530,21 @@ void Dblqh::srFourthComp(Signal* signal)
} else if ((cstartType == NodeState::ST_NODE_RESTART) ||
(cstartType == NodeState::ST_SYSTEM_RESTART)) {
jam();
- StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend();
- conf->startingNodeId = getOwnNodeId();
- sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal,
- StartRecConf::SignalLength, JBB);
- if(cstartType == NodeState::ST_SYSTEM_RESTART){
- fragptr.i = c_redo_log_complete_frags;
- while(fragptr.i != RNIL){
- ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord);
- signal->theData[0] = fragptr.p->tabRef;
- signal->theData[1] = fragptr.p->fragId;
- sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB);
- fragptr.i = fragptr.p->nextFrag;
- }
+ if(cstartType == NodeState::ST_SYSTEM_RESTART)
+ {
+ jam();
+ signal->theData[0] = ZENABLE_EXPAND_CHECK;
+ signal->theData[1] = c_redo_log_complete_frags;
+ sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB);
+ }
+ else
+ {
+ jam();
+ StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend();
+ conf->startingNodeId = getOwnNodeId();
+ sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal,
+ StartRecConf::SignalLength, JBB);
}
} else {
ndbrequire(false);
| Thread |
|---|
| • bk commit into 4.1 tree (jonas:1.2512) BUG#20774 | jonas | 30 Jun |