Below is the list of changes that have just been committed into a local
5.0 repository of dli. When dli 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, 2006-09-11 11:03:14+08:00, dli@stripped +5 -0
Fix for Bug #20395 Cluster datanodes always assigned to nodegroup 0 during single user mode.
Data node is not allowed to get added in the cluster when it is in single user mode.
ndb/include/kernel/signaldata/CmRegSignalData.hpp@stripped, 2006-09-11 11:03:12+08:00, dli@stripped +5 -1
Data node is not allowed to get added in the cluster when it is in single user mode.
ndb/include/mgmapi/ndbd_exit_codes.h@stripped, 2006-09-11 11:03:12+08:00, dli@stripped +2 -0
Data node is not allowed to get added in the cluster when it is in single user mode.
ndb/include/ndb_version.h.in@stripped, 2006-09-11 11:03:12+08:00, dli@stripped +1 -0
added version macro for version 5.0.25.
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp@stripped, 2006-09-11 11:03:12+08:00, dli@stripped +49 -2
Data node is not allowed to get added in the cluster when it is in single user mode.
ndb/src/kernel/error/ndbd_exit_codes.c@stripped, 2006-09-11 11:03:12+08:00, dli@stripped +3 -0
Data node is not allowed to get added in the cluster when it is in single user mode.
# 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: dli
# Host: dev3-76.dev.cn.tlan
# Root: /home/dli/mysql/mysql-5.0/mysql-5.0-bug-20395
--- 1.4/ndb/include/ndb_version.h.in 2006-09-11 11:03:19 +08:00
+++ 1.5/ndb/include/ndb_version.h.in 2006-09-11 11:03:19 +08:00
@@ -62,5 +62,6 @@
#define NDBD_DICT_LOCK_VERSION_5 MAKE_VERSION(5,0,23)
+#define NDBD_QMGR_SINGLEUSER_VERSION_5 MAKE_VERSION(5,0,25)
#endif
--- 1.2/ndb/include/kernel/signaldata/CmRegSignalData.hpp 2006-09-11 11:03:19 +08:00
+++ 1.3/ndb/include/kernel/signaldata/CmRegSignalData.hpp 2006-09-11 11:03:19 +08:00
@@ -90,7 +90,11 @@
ZNOT_PRESIDENT = 5, /* We are not president */
ZNOT_DEAD = 6, /* We are not dead when we are starting */
ZINCOMPATIBLE_VERSION = 7,
- ZINCOMPATIBLE_START_TYPE = 8
+ ZINCOMPATIBLE_START_TYPE = 8,
+ ZSINGLE_USER_MODE = 9, /* The cluster is in single user mode,
+ * data node is not allowed to get added
+ * in the cluster while in single user mode */
+ ZGENERIC = 100 /* The generic error code */
};
private:
--- 1.34/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2006-09-11 11:03:19 +08:00
+++ 1.35/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2006-09-11 11:03:19 +08:00
@@ -153,6 +153,7 @@
return;
}
Uint64 now = NdbTick_CurrentMillisecond();
+
if (now > (c_start_election_time + c_restartFailureTimeout))
{
jam();
@@ -698,7 +699,40 @@
sendCmRegrefLab(signal, Tblockref, CmRegRef::ZNOT_IN_CFG);
return;
}
-
+
+ if (getNodeState().getSingleUserMode())
+ {
+ /**
+ * The cluster is in single user mode.
+ * Data node is not allowed to get added in the cluster
+ * while in single user mode.
+ */
+ // handle rolling upgrade
+ {
+ unsigned int get_major = getMajor(startingVersion);
+ unsigned int get_minor = getMinor(startingVersion);
+ unsigned int get_build = getBuild(startingVersion);
+
+ if (startingVersion < NDBD_QMGR_SINGLEUSER_VERSION_5) {
+ jam();
+
+ infoEvent("QMGR: detect upgrade: new node %u old version %u.%u.%u",
+ (unsigned int)addNodePtr.i, get_major, get_minor, get_build);
+ /**
+ * The new node is old version, send ZINCOMPATIBLE_VERSION instead
+ * of ZSINGLE_USER_MODE.
+ */
+ sendCmRegrefLab(signal, Tblockref, CmRegRef::ZINCOMPATIBLE_VERSION);
+ } else {
+ jam();
+
+ sendCmRegrefLab(signal, Tblockref, CmRegRef::ZSINGLE_USER_MODE);
+ }//if
+ }
+
+ return;
+ }//if
+
ptrCheckGuard(addNodePtr, MAX_NDB_NODES, nodeRec);
Phase phase = addNodePtr.p->phase;
if (phase != ZINIT)
@@ -1093,6 +1127,19 @@
jam();
progError(__LINE__, NDBD_EXIT_NODE_NOT_DEAD);
break;
+ case CmRegRef::ZSINGLE_USER_MODE:
+ jam();
+ progError(__LINE__, NDBD_EXIT_SINGLE_USER_MODE);
+ break;
+ /**
+ * For generic refuse error.
+ * e.g. in online upgrade, we can use this error code instead
+ * of the incompatible error code.
+ */
+ case CmRegRef::ZGENERIC:
+ jam();
+ progError(__LINE__, NDBD_EXIT_GENERIC);
+ break;
case CmRegRef::ZELECTION:
jam();
if (candidate_gci > c_start.m_president_candidate_gci ||
@@ -2025,7 +2072,7 @@
&c_restartPartionedTimeout);
ndb_mgm_get_int_parameter(p, CFG_DB_START_FAILURE_TIMEOUT,
&c_restartFailureTimeout);
-
+
if(c_restartPartialTimeout == 0)
{
c_restartPartialTimeout = ~0;
--- 1.10/ndb/include/mgmapi/ndbd_exit_codes.h 2006-09-11 11:03:19 +08:00
+++ 1.11/ndb/include/mgmapi/ndbd_exit_codes.h 2006-09-11 11:03:19 +08:00
@@ -65,6 +65,7 @@
typedef ndbd_exit_classification_enum ndbd_exit_classification;
/* Errorcodes before block division was used */
+#define NDBD_EXIT_GENERIC 2300
#define NDBD_EXIT_PRGERR 2301
#define NDBD_EXIT_NODE_NOT_IN_CONFIG 2302
#define NDBD_EXIT_SYSTEM_ERROR 2303
@@ -78,6 +79,7 @@
#define NDBD_EXIT_SR_RESTARTCONFLICT 2311
#define NDBD_EXIT_NO_MORE_UNDOLOG 2312
#define NDBD_EXIT_SR_UNDOLOG 2313
+#define NDBD_EXIT_SINGLE_USER_MODE 2314
#define NDBD_EXIT_MEMALLOC 2327
#define NDBD_EXIT_BLOCK_JBUFCONGESTION 2334
#define NDBD_EXIT_TIME_QUEUE_SHORT 2335
--- 1.12/ndb/src/kernel/error/ndbd_exit_codes.c 2006-09-11 11:03:19 +08:00
+++ 1.13/ndb/src/kernel/error/ndbd_exit_codes.c 2006-09-11 11:03:19 +08:00
@@ -45,6 +45,7 @@
static const ErrStruct errArray[] =
{
+ {NDBD_EXIT_GENERIC, XRE, "Generic error"},
{NDBD_EXIT_PRGERR, XIE, "Assertion"},
{NDBD_EXIT_NODE_NOT_IN_CONFIG, XCE,
"node id in the configuration has the wrong type, (i.e. not an NDB node)"},
@@ -68,6 +69,8 @@
"No more free UNDO log, increase UndoIndexBuffer"},
{NDBD_EXIT_SR_UNDOLOG, XFI,
"Error while reading the datapages and UNDO log"},
+ {NDBD_EXIT_SINGLE_USER_MODE, XRE, "Data node is not allowed to get added "
+ "to the cluster while it is in single user mode"},
{NDBD_EXIT_MEMALLOC, XCE, "Memory allocation failure, "
"please decrease some configuration parameters"},
{NDBD_EXIT_BLOCK_JBUFCONGESTION, XIE, "Job buffer congestion"},
| Thread |
|---|
| • bk commit into 5.0 tree (dli:1.2255) BUG#20395 | David Li | 11 Sep |