--- a/storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp 2009-11-10 08:29:09.000000000 +0100 +++ b/storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp 2009-12-07 09:42:15.000000000 +0100 @@ -94,6 +94,7 @@ ApiStart = 31, // arbitrator thread started ApiFail = 32, // arbitrator died ApiExit = 33, // arbitrator reported it will exit + ApiReport = 34, // arbitrator show ye self // arbitration result LoseNodes = 41, // lose on ndb node count --- a/storage/ndb/src/common/debugger/EventLogger.cpp 2009-11-10 08:29:14.000000000 +0100 +++ b/storage/ndb/src/common/debugger/EventLogger.cpp 2009-12-07 09:55:41.000000000 +0100 @@ -342,6 +342,11 @@ "Lost arbitrator node %u - process exit [state=%u]", sd->node, state); break; + case ArbitCode::ApiReport: + BaseString::snprintf(m_text, m_text_len, + "Current arbitrator is node %u", + sd->node); + break; default: ArbitCode::getErrText(code, errText, sizeof(errText)); BaseString::snprintf(m_text, m_text_len, --- a/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2009-11-10 08:29:24.000000000 +0100 +++ b/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2009-12-07 09:50:01.000000000 +0100 @@ -39,6 +39,7 @@ #include #include #include +#include #include @@ -5661,6 +5662,21 @@ ndbout_c("disconnecting %u", signal->theData[1]); api_failed(signal, signal->theData[1]); } + + if (signal->theData[0] == DumpStateOrd::DumpArbitrator) + { + NodeBitmask nodes; + computeArbitNdbMask(nodes); + signal->theData[1] = ~0; + ArbitSignalData* sd = (ArbitSignalData*)&signal->theData[0]; + sd->sender = NDB_LE_ArbitState; + sd->code = ArbitCode::ApiReport; + sd->node = arbitRec.node; + sd->ticket = arbitRec.ticket; + sd->mask = nodes; + sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, + ArbitSignalData::SignalLength, JBB); + } }//Qmgr::execDUMP_STATE_ORD() --- a/storage/ndb/src/mgmclient/CommandInterpreter.cpp 2009-11-10 08:29:31.000000000 +0100 +++ b/storage/ndb/src/mgmclient/CommandInterpreter.cpp 2009-12-07 10:06:34.000000000 +0100 @@ -896,6 +896,14 @@ Q(pages_used), Q(page_size_kb)/1024, Q(pages_total)); break; } +#undef EVENT +#define EVENT Arbitrator + case NDB_LE_ArbitState: + { + ndbout_c("Current Arbitrator is"); + break; + } +#undef EVENT /** * default nothing to print */ @@ -2452,6 +2460,8 @@ NDB_LE_BackupStatus, 100000 } ,{ "MemoryUsage", "Report memory usage of respective node", NDB_LE_MemoryUsage, 1000 } + ,{ "Arbitrator", "Report current arbitrator", + NDB_LE_ArbitState, 2599 } }; static unsigned n_report_cmds =