Loading storage/ndb/include/kernel/GlobalSignalNumbers.h +3 −3 Original line number Diff line number Diff line Loading @@ -111,9 +111,9 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; /* 57 unused */ /* 58 unused */ /* 59 unused */ /* 60 unused */ /* 61 unused */ /* 62 unused */ #define GSN_ALLOC_NODEID_REQ 60 #define GSN_ALLOC_NODEID_CONF 61 #define GSN_ALLOC_NODEID_REF 62 /* 63 unused */ /* 64 unused */ /* 65 unused */ Loading storage/ndb/include/kernel/signaldata/AllocNodeId.hpp 0 → 100644 +65 −0 Original line number Diff line number Diff line /* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef ALLOC_NODE_ID_HPP #define ALLOC_NODE_ID_HPP #include "SignalData.hpp" #include <NodeBitmask.hpp> /** * Request to allocate node id */ class AllocNodeIdReq { public: STATIC_CONST( SignalLength = 3 ); Uint32 senderRef; Uint32 senderData; Uint32 nodeId; }; class AllocNodeIdConf { public: STATIC_CONST( SignalLength = 3 ); Uint32 senderRef; Uint32 senderData; Uint32 nodeId; }; class AllocNodeIdRef { public: STATIC_CONST( SignalLength = 5 ); enum ErrorCodes { NoError = 0, Undefined = 1, NF_FakeErrorREF = 11, Busy = 701, NotMaster = 702, NodeReserved = 1701, NodeConnected = 1702, NodeFailureHandlingNotCompleted = 1703 }; Uint32 senderRef; Uint32 senderData; Uint32 nodeId; Uint32 errorCode; Uint32 masterRef; }; #endif storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -1509,6 +1509,9 @@ void Ndbcntr::execNODE_FAILREP(Signal* signal) sendSignal(SUMA_REF, GSN_NODE_FAILREP, signal, NodeFailRep::SignalLength, JBB); sendSignal(QMGR_REF, GSN_NODE_FAILREP, signal, NodeFailRep::SignalLength, JBB); Uint32 nodeId = 0; while(!allFailed.isclear()){ nodeId = allFailed.find(nodeId + 1); Loading storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp +18 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,10 @@ #include <signaldata/CmRegSignalData.hpp> #include <signaldata/ApiRegSignalData.hpp> #include <signaldata/FailRep.hpp> #include <signaldata/AllocNodeId.hpp> #include <SafeCounter.hpp> #include <RequestTracker.hpp> #include "timer.hpp" Loading Loading @@ -222,6 +226,12 @@ private: void execAPI_VERSION_REQ(Signal* signal); void execAPI_BROADCAST_REP(Signal* signal); void execNODE_FAILREP(Signal *); void execALLOC_NODEID_REQ(Signal *); void execALLOC_NODEID_CONF(Signal *); void execALLOC_NODEID_REF(Signal *); void completeAllocNodeIdReq(Signal *); // Arbitration signals void execARBIT_CFG(Signal* signal); void execARBIT_PREPREQ(Signal* signal); Loading Loading @@ -388,6 +398,14 @@ private: Uint16 cprepFailedNodes[MAX_NDB_NODES]; Uint16 ccommitFailedNodes[MAX_NDB_NODES]; struct OpAllocNodeIdReq { RequestTracker m_tracker; AllocNodeIdReq m_req; Uint32 m_connectCount; Uint32 m_error; }; struct OpAllocNodeIdReq opAllocNodeIdReq; }; #endif storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,11 @@ Qmgr::Qmgr(const class Configuration & conf) addRecSignal(GSN_SET_VAR_REQ, &Qmgr::execSET_VAR_REQ); addRecSignal(GSN_API_BROADCAST_REP, &Qmgr::execAPI_BROADCAST_REP); addRecSignal(GSN_NODE_FAILREP, &Qmgr::execNODE_FAILREP); addRecSignal(GSN_ALLOC_NODEID_REQ, &Qmgr::execALLOC_NODEID_REQ); addRecSignal(GSN_ALLOC_NODEID_CONF, &Qmgr::execALLOC_NODEID_CONF); addRecSignal(GSN_ALLOC_NODEID_REF, &Qmgr::execALLOC_NODEID_REF); // Arbitration signals addRecSignal(GSN_ARBIT_PREPREQ, &Qmgr::execARBIT_PREPREQ); addRecSignal(GSN_ARBIT_PREPCONF, &Qmgr::execARBIT_PREPCONF); Loading Loading
storage/ndb/include/kernel/GlobalSignalNumbers.h +3 −3 Original line number Diff line number Diff line Loading @@ -111,9 +111,9 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; /* 57 unused */ /* 58 unused */ /* 59 unused */ /* 60 unused */ /* 61 unused */ /* 62 unused */ #define GSN_ALLOC_NODEID_REQ 60 #define GSN_ALLOC_NODEID_CONF 61 #define GSN_ALLOC_NODEID_REF 62 /* 63 unused */ /* 64 unused */ /* 65 unused */ Loading
storage/ndb/include/kernel/signaldata/AllocNodeId.hpp 0 → 100644 +65 −0 Original line number Diff line number Diff line /* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef ALLOC_NODE_ID_HPP #define ALLOC_NODE_ID_HPP #include "SignalData.hpp" #include <NodeBitmask.hpp> /** * Request to allocate node id */ class AllocNodeIdReq { public: STATIC_CONST( SignalLength = 3 ); Uint32 senderRef; Uint32 senderData; Uint32 nodeId; }; class AllocNodeIdConf { public: STATIC_CONST( SignalLength = 3 ); Uint32 senderRef; Uint32 senderData; Uint32 nodeId; }; class AllocNodeIdRef { public: STATIC_CONST( SignalLength = 5 ); enum ErrorCodes { NoError = 0, Undefined = 1, NF_FakeErrorREF = 11, Busy = 701, NotMaster = 702, NodeReserved = 1701, NodeConnected = 1702, NodeFailureHandlingNotCompleted = 1703 }; Uint32 senderRef; Uint32 senderData; Uint32 nodeId; Uint32 errorCode; Uint32 masterRef; }; #endif
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -1509,6 +1509,9 @@ void Ndbcntr::execNODE_FAILREP(Signal* signal) sendSignal(SUMA_REF, GSN_NODE_FAILREP, signal, NodeFailRep::SignalLength, JBB); sendSignal(QMGR_REF, GSN_NODE_FAILREP, signal, NodeFailRep::SignalLength, JBB); Uint32 nodeId = 0; while(!allFailed.isclear()){ nodeId = allFailed.find(nodeId + 1); Loading
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp +18 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,10 @@ #include <signaldata/CmRegSignalData.hpp> #include <signaldata/ApiRegSignalData.hpp> #include <signaldata/FailRep.hpp> #include <signaldata/AllocNodeId.hpp> #include <SafeCounter.hpp> #include <RequestTracker.hpp> #include "timer.hpp" Loading Loading @@ -222,6 +226,12 @@ private: void execAPI_VERSION_REQ(Signal* signal); void execAPI_BROADCAST_REP(Signal* signal); void execNODE_FAILREP(Signal *); void execALLOC_NODEID_REQ(Signal *); void execALLOC_NODEID_CONF(Signal *); void execALLOC_NODEID_REF(Signal *); void completeAllocNodeIdReq(Signal *); // Arbitration signals void execARBIT_CFG(Signal* signal); void execARBIT_PREPREQ(Signal* signal); Loading Loading @@ -388,6 +398,14 @@ private: Uint16 cprepFailedNodes[MAX_NDB_NODES]; Uint16 ccommitFailedNodes[MAX_NDB_NODES]; struct OpAllocNodeIdReq { RequestTracker m_tracker; AllocNodeIdReq m_req; Uint32 m_connectCount; Uint32 m_error; }; struct OpAllocNodeIdReq opAllocNodeIdReq; }; #endif
storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,11 @@ Qmgr::Qmgr(const class Configuration & conf) addRecSignal(GSN_SET_VAR_REQ, &Qmgr::execSET_VAR_REQ); addRecSignal(GSN_API_BROADCAST_REP, &Qmgr::execAPI_BROADCAST_REP); addRecSignal(GSN_NODE_FAILREP, &Qmgr::execNODE_FAILREP); addRecSignal(GSN_ALLOC_NODEID_REQ, &Qmgr::execALLOC_NODEID_REQ); addRecSignal(GSN_ALLOC_NODEID_CONF, &Qmgr::execALLOC_NODEID_CONF); addRecSignal(GSN_ALLOC_NODEID_REF, &Qmgr::execALLOC_NODEID_REF); // Arbitration signals addRecSignal(GSN_ARBIT_PREPREQ, &Qmgr::execARBIT_PREPREQ); addRecSignal(GSN_ARBIT_PREPCONF, &Qmgr::execARBIT_PREPCONF); Loading