List:Internals« Previous MessageNext Message »
From:Stewart Smith Date:November 24 2005 7:30am
Subject:bk commit into 5.0 tree (stewart:1.1972) BUG#15215
View as plain text  
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#15215Stewart Smith24 Nov