Below is the list of changes that have just been committed into a local
5.1 repository of mikron. When mikron 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@stripped, 2007-02-07 13:53:55+01:00, mikron@stripped +7 -0
WL 3683:
Prepare MySQL Cluster for upto 255 data nodes
by setting of a constant.
Constant now set to handle upto 128 data nodes
and in total 255 nodes in cluster
storage/ndb/include/kernel/NodeBitmask.hpp@stripped, 2007-02-07 13:53:50+01:00, mikron@stripped +1 -1
Increasing the bitmask to handle upto 255 data nodes
storage/ndb/include/kernel/ndb_limits.h@stripped, 2007-02-07 13:53:51+01:00, mikron@stripped +1 -1
Setting max number of data nodes to 128 (1 through 129)
storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp@stripped, 2007-02-07 13:53:51+01:00, mikron@stripped +2 -3
Handle Distributed length of READ_NODESCONF which doesn't need
the bitmaps.
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp@stripped, 2007-02-07 13:53:51+01:00, mikron@stripped +2 -2
Use EXECUTE_DIRECT since signal length is larger than 25 to
avoid having to introduce Long signal handling
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp@stripped, 2007-02-07 13:53:51+01:00, mikron@stripped +2 -0
Some function becomes the same in C++ when
_NODE_BITMASK_SIZE == _NDB_NODE_BITMASK_SIZE
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp@stripped, 2007-02-07 13:53:51+01:00, mikron@stripped +26 -13
Temporarily disabled an event report that was longer than 25 words
Cleared bitmask
Use EXECUTE_DIRECT to avoid conversion to long signal handling
Two functions become the same if
_NODE_BITMASK_SIZE == _NDB_NODE_BITMASK_SIZE
storage/ndb/src/kernel/vm/VMSignal.hpp@stripped, 2007-02-07 13:53:51+01:00, mikron@stripped +4 -1
Some function becomes the same in C++ when
_NODE_BITMASK_SIZE == _NDB_NODE_BITMASK_SIZE
# 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: mikron
# Host: mikael-ronstr-ms-dator.local
# Root: /Users/mikron/mysql_clones/wl3683
--- 1.5/storage/ndb/include/kernel/NodeBitmask.hpp 2007-01-17 16:27:41 +01:00
+++ 1.6/storage/ndb/include/kernel/NodeBitmask.hpp 2007-02-07 13:53:50 +01:00
@@ -35,7 +35,7 @@
*
* Note that this is used in a lot of signals
*/
-#define _NDB_NODE_BITMASK_SIZE 4
+#define _NDB_NODE_BITMASK_SIZE 8
/**
* No of 32 bits word needed to store B bits for N nodes
--- 1.29/storage/ndb/include/kernel/ndb_limits.h 2007-01-17 16:27:41 +01:00
+++ 1.30/storage/ndb/include/kernel/ndb_limits.h 2007-02-07 13:53:51 +01:00
@@ -24,7 +24,7 @@
* Note that actual value = MAX_NODES - 1,
* since NodeId = 0 can not be used
*/
-#define MAX_NDB_NODES 65
+#define MAX_NDB_NODES 129
#define MAX_NODES 256
#define UNDEF_NODEGROUP 0xFFFF
--- 1.5/storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp 2007-01-17 16:27:41 +01:00
+++ 1.6/storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp 2007-02-07 13:53:51 +01:00
@@ -49,9 +49,8 @@
friend bool printREAD_NODES_CONF(FILE*, const Uint32 *, Uint32, Uint16);
public:
- STATIC_CONST( SignalLength = 3 );
- STATIC_CONST( SectionLength = 5*NdbNodeBitmask::Size );
- STATIC_CONST( NoOfSections = 1 );
+ STATIC_CONST( DistributedSignalLength = 3 );
+ STATIC_CONST( SignalLength = 3 + 5*NdbNodeBitmask::Size );
private:
Uint32 noOfNodes;
--- 1.45/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp 2007-01-17 16:27:41 +01:00
+++ 1.46/storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp 2007-02-07 13:53:51 +01:00
@@ -1644,8 +1644,8 @@
readNodes->ndynamicId = cdynamicNodeId;
if (cstartPhase > ZSTART_PHASE_2) {
jam();
- sendSignal(TuserBlockref, GSN_READ_NODESCONF, signal,
- ReadNodesConf::SignalLength, JBB);
+ EXECUTE_DIRECT(refToBlock(TuserBlockref), GSN_READ_NODESCONF, signal,
+ ReadNodesConf::SignalLength);
} else {
jam();
--- 1.19/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp 2007-02-06 08:56:04 +01:00
+++ 1.20/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp 2007-02-07 13:53:51 +01:00
@@ -358,7 +358,9 @@
void stateArbitChoose(Signal* signal);
void stateArbitCrash(Signal* signal);
void computeArbitNdbMask(NodeBitmask& aMask);
+#if _NODE_BITMASK_SIZE != _NDB_NODE_BITMASK_SIZE
void computeArbitNdbMask(NdbNodeBitmask& aMask);
+#endif
void reportArbitEvent(Signal* signal, Ndb_logevent_type type);
// Initialisation
--- 1.50/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2007-02-06 08:56:04 +01:00
+++ 1.51/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2007-02-07 13:53:51 +01:00
@@ -1404,8 +1404,10 @@
c_start.m_starting_nodes.copyto(sz, ptr); ptr += sz;
c_start.m_skip_nodes.copyto(sz, ptr); ptr += sz;
report_mask.copyto(sz, ptr); ptr+= sz;
+ /*
sendSignal(CMVMI_REF, GSN_EVENT_REP, signal,
4+4*NdbNodeBitmask::Size, JBB);
+ */
}
return retVal;
@@ -2067,6 +2069,10 @@
void Qmgr::initData(Signal* signal)
{
NodeRecPtr nodePtr;
+ c_definedNodes.clear();
+ c_clusterNodes.clear();
+ c_connectedNodes.clear();
+ c_readnodes_nodes.clear();
for (nodePtr.i = 1; nodePtr.i < MAX_NODES; nodePtr.i++) {
ptrAss(nodePtr, nodeRec);
nodePtr.p->ndynamicId = 0;
@@ -3747,21 +3753,27 @@
NdbNodeBitmask tmp = c_definedNodes;
tmp.bitANDC(c_clusterNodes);
- if (TBref == reference())
+ readNodes->noOfNodes = c_definedNodes.count();
+ readNodes->masterNodeId = cpresident;
+ readNodes->ndynamicId = nodePtr.p->ndynamicId;
+ c_definedNodes.copyto(NdbNodeBitmask::Size, readNodes->definedNodes);
+ c_clusterNodes.copyto(NdbNodeBitmask::Size, readNodes->clusterNodes);
+ tmp.copyto(NdbNodeBitmask::Size, readNodes->inactiveNodes);
+ NdbNodeBitmask::clear(readNodes->startingNodes);
+ NdbNodeBitmask::clear(readNodes->startedNodes);
+ if (refToNode(TBref) == getOwnNodeId())
{
+ jam();
/* Only send bitmasks locally in node */
- readNodes->noOfNodes = c_definedNodes.count();
- readNodes->masterNodeId = cpresident;
- readNodes->ndynamicId = nodePtr.p->ndynamicId;
- c_definedNodes.copyto(NdbNodeBitmask::Size, readNodes->definedNodes);
- c_clusterNodes.copyto(NdbNodeBitmask::Size, readNodes->clusterNodes);
- tmp.copyto(NdbNodeBitmask::Size, readNodes->inactiveNodes);
- NdbNodeBitmask::clear(readNodes->startingNodes);
- NdbNodeBitmask::clear(readNodes->startedNodes);
+ EXECUTE_DIRECT(refToBlock(TBref), GSN_READ_NODESCONF, signal,
+ ReadNodesConf::SignalLength);
+ }
+ else
+ {
+ jam();
+ sendSignal(TBref, GSN_READ_NODESCONF, signal,
+ ReadNodesConf::DistributedSignalLength, JBB);
}
-
- sendSignal(TBref, GSN_READ_NODESCONF, signal,
- ReadNodesConf::SignalLength, JBB);
}//Qmgr::execREAD_NODESREQ()
void Qmgr::systemErrorBecauseOtherNodeFailed(Signal* signal, Uint32 line,
@@ -4921,6 +4933,7 @@
}
}
+#if _NODE_BITMASK_SIZE != _NDB_NODE_BITMASK_SIZE
void
Qmgr::computeArbitNdbMask(NdbNodeBitmask& aMask)
{
@@ -4935,7 +4948,7 @@
}
}
}
-
+#endif
/**
* Report arbitration event. We use arbitration signal format
* where sender (word 0) is event type.
--- 1.10/storage/ndb/src/kernel/vm/VMSignal.hpp 2007-01-17 16:27:41 +01:00
+++ 1.11/storage/ndb/src/kernel/vm/VMSignal.hpp 2007-02-07 13:53:51 +01:00
@@ -33,7 +33,9 @@
NodeReceiverGroup();
NodeReceiverGroup(Uint32 blockRef);
NodeReceiverGroup(Uint32 blockNo, const NodeBitmask &);
+#if _NODE_BITMASK_SIZE != _NDB_NODE_BITMASK_SIZE
NodeReceiverGroup(Uint32 blockNo, const NdbNodeBitmask &);
+#endif
NodeReceiverGroup(Uint32 blockNo, const class SignalCounter &);
NodeReceiverGroup& operator=(BlockReference ref);
@@ -190,6 +192,7 @@
m_nodes = nodes;
}
+#if _NODE_BITMASK_SIZE != _NDB_NODE_BITMASK_SIZE
inline
NodeReceiverGroup::NodeReceiverGroup(Uint32 blockNo,
const NdbNodeBitmask & nodes)
@@ -197,7 +200,7 @@
m_block = blockNo;
m_nodes = nodes;
}
-
+#endif
#include "SignalCounter.hpp"
inline
| Thread |
|---|
| • bk commit into 5.1 tree (mikron:1.2412) | mikael | 7 Feb |