From b96e8d7a97a7f9c38e3528c057a1ef39de4ad693 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 6 Apr 2006 16:18:42 +0200 Subject: [PATCH] ndb - bug#18612 - post review fixes 1) make sure that check_multi_node_shutdown does not proceed (in stop case) 2) Fix printout ndb/src/kernel/blocks/qmgr/Qmgr.hpp: make sure that check_multi_node_shutdown does not proceed (in stop case) ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: make sure that check_multi_node_shutdown does not proceed (in stop case) --- ndb/src/kernel/blocks/qmgr/Qmgr.hpp | 2 +- ndb/src/kernel/blocks/qmgr/QmgrMain.cpp | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ndb/src/kernel/blocks/qmgr/Qmgr.hpp b/ndb/src/kernel/blocks/qmgr/Qmgr.hpp index 07e6a2a10c1..02be002cae0 100644 --- a/ndb/src/kernel/blocks/qmgr/Qmgr.hpp +++ b/ndb/src/kernel/blocks/qmgr/Qmgr.hpp @@ -409,7 +409,7 @@ private: Uint16 ccommitFailedNodes[MAX_NDB_NODES]; StopReq c_stopReq; - void check_multi_node_shutdown(Signal* signal); + bool check_multi_node_shutdown(Signal* signal); }; #endif diff --git a/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp b/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp index c17922dff48..8b7caadfeb9 100644 --- a/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp +++ b/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp @@ -2296,7 +2296,11 @@ void Qmgr::failReportLab(Signal* signal, Uint16 aFailedNode, ptrCheckGuard(failedNodePtr, MAX_NODES, nodeRec); FailRep* rep = (FailRep*)signal->getDataPtr(); - check_multi_node_shutdown(signal); + if (check_multi_node_shutdown(signal)) + { + jam(); + return; + } if (failedNodePtr.i == getOwnNodeId()) { jam(); @@ -2360,8 +2364,8 @@ void Qmgr::failReportLab(Signal* signal, Uint16 aFailedNode, "We(%u) have been declared dead by %u reason: %s(%u)", getOwnNodeId(), refToNode(signal->getSendersBlockRef()), - aFailCause, - msg ? msg : ""); + msg ? msg : "", + aFailCause); progError(__LINE__, code, buf); return; @@ -2421,7 +2425,11 @@ void Qmgr::execPREP_FAILREQ(Signal* signal) NodeRecPtr myNodePtr; jamEntry(); - check_multi_node_shutdown(signal); + if (check_multi_node_shutdown(signal)) + { + jam(); + return; + } PrepFailReqRef * const prepFail = (PrepFailReqRef *)&signal->theData[0]; @@ -4255,7 +4263,7 @@ Qmgr::execSTOP_REQ(Signal* signal) } } -void +bool Qmgr::check_multi_node_shutdown(Signal* signal) { if (c_stopReq.senderRef && @@ -4271,5 +4279,7 @@ Qmgr::check_multi_node_shutdown(Signal* signal) } else { EXECUTE_DIRECT(CMVMI, GSN_STOP_ORD, signal, 1); } + return true; } + return false; }