mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
ndb - bug#18781 lock DICT during node restart
ndb/src/kernel/main.cpp: signal log from start (#if 0-ed) ndb/test/ndbapi/testDict.cpp: test NF/NR + dict ops ndb/src/kernel/vm/DLFifoList.hpp: add hasPrev ndb/src/kernel/vm/pc.hpp: ERROR_INSERTED_CLEAR(x) test and clear if set ndb/src/common/debugger/SignalLoggerManager.cpp: block no fix ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: spelling ndb/include/kernel/GlobalSignalNumbers.h: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/AlterTable.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/CreateTable.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/DictLock.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/include/kernel/signaldata/DropTable.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/common/debugger/signaldata/SignalNames.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/ERROR_codes.txt: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdict/Dbdict.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdict/Dbdict.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdih/Dbdih.hpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: locking of master DICT against schema ops, used by slave DIH under NR ndb/src/ndbapi/ndberror.c: locking of master DICT against schema ops, used by slave DIH under NR
This commit is contained in:
parent
d959082054
commit
40f44b48b0
19 changed files with 924 additions and 15 deletions
|
|
@ -718,6 +718,9 @@ private:
|
|||
void checkPrepDropTabComplete(Signal *, TabRecordPtr tabPtr);
|
||||
void checkWaitDropTabFailedLqh(Signal *, Uint32 nodeId, Uint32 tableId);
|
||||
|
||||
void execDICT_LOCK_CONF(Signal* signal);
|
||||
void execDICT_LOCK_REF(Signal* signal);
|
||||
|
||||
// Statement blocks
|
||||
//------------------------------------
|
||||
// Methods that send signals
|
||||
|
|
@ -935,6 +938,7 @@ private:
|
|||
void initialStartCompletedLab(Signal *);
|
||||
void allNodesLcpCompletedLab(Signal *);
|
||||
void nodeRestartPh2Lab(Signal *);
|
||||
void nodeRestartPh2Lab2(Signal *);
|
||||
void initGciFilesLab(Signal *);
|
||||
void dictStartConfLab(Signal *);
|
||||
void nodeDictStartConfLab(Signal *);
|
||||
|
|
@ -1594,6 +1598,30 @@ private:
|
|||
* Reply from nodeId
|
||||
*/
|
||||
void startInfoReply(Signal *, Uint32 nodeId);
|
||||
|
||||
/*
|
||||
* Lock master DICT. Only current use is by starting node
|
||||
* during NR. A pool of slave records is convenient anyway.
|
||||
*/
|
||||
struct DictLockSlaveRecord {
|
||||
Uint32 lockPtr;
|
||||
Uint32 lockType;
|
||||
bool locked;
|
||||
Callback callback;
|
||||
Uint32 nextPool;
|
||||
};
|
||||
|
||||
typedef Ptr<DictLockSlaveRecord> DictLockSlavePtr;
|
||||
ArrayPool<DictLockSlaveRecord> c_dictLockSlavePool;
|
||||
|
||||
// slave
|
||||
void sendDictLockReq(Signal* signal, Uint32 lockType, Callback c);
|
||||
void recvDictLockConf(Signal* signal);
|
||||
void sendDictUnlockOrd(Signal* signal, Uint32 lockSlavePtrI);
|
||||
|
||||
// NR
|
||||
Uint32 c_dictLockSlavePtrI_nodeRestart; // userPtr for NR
|
||||
void recvDictLockConf_nodeRestart(Signal* signal, Uint32 data, Uint32 ret);
|
||||
};
|
||||
|
||||
#if (DIH_CDATA_SIZE < _SYSFILE_SIZE32)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue