From: Date: November 24 2005 7:30am Subject: bk commit into 5.0 tree (stewart:1.1972) BUG#15215 List-Archive: http://lists.mysql.com/internals/32640 X-Bug: 15215 Message-Id: <20051124063030.63B581409EEB@localhost.localdomain> 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 */