Commit 6803e7ec authored by unknown's avatar unknown

Bug #26825 MySQL Server Crashes in high load

Bug #26997  	mysqld segfault when in single user mode


sql/ha_ndbcluster.cc:
  make sure error is always set even if no proper error code from ndb
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  add error code for failing send signal (typically single user mode)
storage/ndb/src/ndbapi/ndberror.c:
  added error code for failing send signal and timeout waiting for node failure
parent 55e0aea0
......@@ -6093,9 +6093,16 @@ int ndbcluster_discover(handlerton *hton, THD* thd, const char *db,
{
const NdbError err= dict->getNdbError();
if (err.code == 709 || err.code == 723)
{
error= -1;
DBUG_PRINT("info", ("ndb_error.code: %u", ndb_error.code));
}
else
{
error= -1;
ndb_error= err;
DBUG_PRINT("info", ("ndb_error.code: %u", ndb_error.code));
}
goto err;
}
DBUG_PRINT("info", ("Found table %s", tab->getName()));
......
......@@ -1753,6 +1753,7 @@ NdbDictInterface::dictSignal(NdbApiSignal* sig,
m_transporter->sendSignal(sig, node));
if(res != 0){
DBUG_PRINT("info", ("dictSignal failed to send signal"));
m_error.code = 4007;
continue;
}
......@@ -1770,6 +1771,7 @@ NdbDictInterface::dictSignal(NdbApiSignal* sig,
*/
if(ret_val == -2) //WAIT_NODE_FAILURE
{
m_error.code = 4013;
continue;
}
if(m_waiter.m_state == WST_WAIT_TIMEOUT)
......
......@@ -149,10 +149,12 @@ ErrorBundle ErrorCodes[] = {
/**
* Unknown result
*/
{ 4007, DMEC, UR, "Send to ndbd failed" },
{ 4008, DMEC, UR, "Receive from NDB failed" },
{ 4009, DMEC, UR, "Cluster Failure" },
{ 4012, DMEC, UR,
"Request ndbd time-out, maybe due to high load or communication problems"},
{ 4013, DMEC, UR, "Request timed out in waiting for node faiulure"},
{ 4024, DMEC, UR,
"Time-out, most likely caused by simple read or cluster failure" },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment