summaryrefslogtreecommitdiff
path: root/ndb
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2005-03-04 12:23:17 +0100
committerunknown <tomas@poseidon.ndb.mysql.com>2005-03-04 12:23:17 +0100
commit45b0ea6546a522a496e286caece19ec3005167c4 (patch)
treef63ea56c53f9aa529b9766d9edd490288044f94f /ndb
parentdb86cb81aae20fa8cdd594f3f6ec28d262db9c60 (diff)
parentaec0408ba9634bc15be77b8507ca8b83ff609e24 (diff)
downloadmariadb-git-45b0ea6546a522a496e286caece19ec3005167c4.tar.gz
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-ndb ndb/include/ndbapi/NdbTransaction.hpp: Auto merged ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged ndb/test/ndbapi/testNodeRestart.cpp: Auto merged ndb/test/run-test/daily-devel-tests.txt: Auto merged
Diffstat (limited to 'ndb')
-rw-r--r--ndb/src/kernel/blocks/dbtc/DbtcMain.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
index 15de44a5d2d..17d55176830 100644
--- a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
+++ b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
@@ -6074,11 +6074,17 @@ int Dbtc::releaseAndAbort(Signal* signal)
UintR TnoLoops = tcConnectptr.p->noOfNodes;
apiConnectptr.p->counter++;
+ bool prevAlive = false;
for (Uint32 Ti = 0; Ti < TnoLoops ; Ti++) {
localHostptr.i = tcConnectptr.p->tcNodedata[Ti];
ptrCheckGuard(localHostptr, chostFilesize, hostRecord);
if (localHostptr.p->hostStatus == HS_ALIVE) {
jam();
+ if (prevAlive) {
+ // if previous is alive, its LQH forwards abort to this node
+ jam();
+ continue;
+ }
/* ************< */
/* ABORT < */
/* ************< */
@@ -6088,15 +6094,16 @@ int Dbtc::releaseAndAbort(Signal* signal)
signal->theData[2] = apiConnectptr.p->transid[0];
signal->theData[3] = apiConnectptr.p->transid[1];
sendSignal(tblockref, GSN_ABORT, signal, 4, JBB);
- return 1;
+ prevAlive = true;
} else {
jam();
signal->theData[0] = tcConnectptr.i;
signal->theData[1] = apiConnectptr.p->transid[0];
signal->theData[2] = apiConnectptr.p->transid[1];
- signal->theData[3] = hostptr.i;
+ signal->theData[3] = localHostptr.i;
signal->theData[4] = ZFALSE;
sendSignal(cownref, GSN_ABORTED, signal, 5, JBB);
+ prevAlive = false;
}//if
}//for
return 1;