Below is the list of changes that have just been committed into a local
5.0 repository of stewart. When stewart 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
1.1972 05/11/24 17:30:25 stewart@stripped +2 -0
BUG#15215 mysqld fails at start-up because of illegal reply from mgmd
In the rare circumstance where a mysqld connects to a mgm server, then the
mgm server goes away before a node id can be allocated, it was possible to get
an Error in mgm protocol parser error message.
ndb/src/mgmapi/mgmapi.cpp
1.56 05/11/24 17:30:21 stewart@stripped +7 -1
Treat Eof and NoLine results from the parser as a sign that we should disconnect
from this management server. It's up to the caller to work out if they want
to try again.
ndb/src/common/mgmcommon/ConfigRetriever.cpp
1.31 05/11/24 17:30:21 stewart@stripped +6 -0
When allocating node id, retry connecting to a management server if it goes away.
# 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: stewart
# Host: willster.(none)
# Root: /home/stewart/Documents/MySQL/5.0/bug15215
--- 1.30/ndb/src/common/mgmcommon/ConfigRetriever.cpp 2005-07-15 22:00:02 +10:00
+++ 1.31/ndb/src/common/mgmcommon/ConfigRetriever.cpp 2005-11-24 17:30:21 +11:00
@@ -341,9 +341,15 @@
{
while (1)
{
+ if(!ndb_mgm_is_connected(m_handle))
+ if(!ndb_mgm_connect(m_handle, 0, 0, 0))
+ goto next;
+
int res= ndb_mgm_alloc_nodeid(m_handle, m_version, m_node_type);
if(res >= 0)
return _ownNodeId= (Uint32)res;
+
+ next:
if (no_retries == 0)
break;
no_retries--;
--- 1.55/ndb/src/mgmapi/mgmapi.cpp 2005-10-25 04:03:27 +10:00
+++ 1.56/ndb/src/mgmapi/mgmapi.cpp 2005-11-24 17:30:21 +11:00
@@ -336,10 +336,16 @@
const Properties* p = parser.parse(ctx, session);
if (p == NULL){
if(!ndb_mgm_is_connected(handle)) {
- return NULL;
+ DBUG_RETURN(NULL);
}
else
{
+ if(ctx.m_status==Parser_t::Eof
+ || ctx.m_status==Parser_t::NoLine)
+ {
+ ndb_mgm_disconnect(handle);
+ DBUG_RETURN(NULL);
+ }
/**
* Print some info about why the parser returns NULL
*/
| Thread |
|---|
| • bk commit into 5.0 tree (stewart:1.1972) BUG#15215 | Stewart Smith | 24 Nov |