Loading ndb/include/kernel/GlobalSignalNumbers.h +1 −1 Original line number Diff line number Diff line Loading @@ -553,7 +553,6 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_STATISTICS_CONF 454 #define GSN_START_ORD 455 /* 456 unused */ /* 457 unused */ #define GSN_EVENT_SUBSCRIBE_REQ 458 Loading Loading @@ -900,6 +899,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_RESUME_REQ 682 #define GSN_STOP_REQ 443 #define GSN_STOP_REF 444 #define GSN_STOP_CONF 456 #define GSN_API_VERSION_REQ 697 #define GSN_API_VERSION_CONF 698 Loading ndb/include/kernel/signaldata/EventReport.hpp +3 −3 Original line number Diff line number Diff line Loading @@ -133,9 +133,9 @@ public: CreateLogBytes = 48, InfoEvent = 49, //GREP GrepSubscriptionInfo = 52, GrepSubscriptionAlert = 53, // SINGLE USER SingleUser = 52, /* unused 53 */ //BACKUP BackupStarted = 54, Loading ndb/include/kernel/signaldata/StopReq.hpp +9 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,13 @@ public: static bool getStopAbort(const Uint32 & requestInfo); }; struct StopConf { STATIC_CONST( SignalLength = 2 ); Uint32 senderData; Uint32 nodeState; }; class StopRef { /** Loading @@ -86,7 +93,8 @@ public: OK = 0, NodeShutdownInProgress = 1, SystemShutdownInProgress = 2, NodeShutdownWouldCauseSystemCrash = 3 NodeShutdownWouldCauseSystemCrash = 3, TransactionAbortFailed = 4 }; public: Loading ndb/src/common/debugger/EventLogger.cpp +12 −457 Original line number Diff line number Diff line Loading @@ -105,9 +105,8 @@ const EventLoggerBase::EventRepLogLevelMatrix EventLoggerBase::matrix[] = { { EventReport::CreateLogBytes, LogLevel::llInfo, 11, Logger::LL_INFO }, { EventReport::InfoEvent, LogLevel::llInfo, 2, Logger::LL_INFO }, //Global replication { EventReport::GrepSubscriptionInfo, LogLevel::llGrep, 7, Logger::LL_INFO}, { EventReport::GrepSubscriptionAlert, LogLevel::llGrep, 7, Logger::LL_ALERT}, //Single User { EventReport::SingleUser, LogLevel::llInfo, 7, Logger::LL_INFO}, // Backup { EventReport::BackupStarted, LogLevel::llBackup, 7, Logger::LL_INFO }, Loading Loading @@ -800,473 +799,29 @@ EventLogger::getText(char * m_text, size_t m_text_len, ); break; } case EventReport::GrepSubscriptionInfo : case EventReport::SingleUser : { GrepEvent::Subscription event = (GrepEvent::Subscription)theData[1]; switch(event) { case GrepEvent::GrepSS_CreateSubIdConf: switch (theData[1]) { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Created subscription id" " (subId=%d,SubKey=%d)" " Return code: %d.", subId, subKey, err); break; } case GrepEvent::GrepPS_CreateSubIdConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Created subscription id" " (subId=%d,SubKey=%d)" " Return code: %d.", subId, subKey, err); break; } case GrepEvent::GrepSS_SubCreateConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int nodegrp = theData[5]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Created subscription using" " (subId=%d,SubKey=%d)" " in primary system. Primary system has %d nodegroup(s)." " Return code: %d", subId, subKey, nodegrp, err); break; } case GrepEvent::GrepPS_SubCreateConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have created " "subscriptions" " using (subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubStartMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging started on meta data changes." " using (subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubStartMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started " "logging meta data" " changes on the subscription subId=%d,SubKey=%d) " "(N.I yet)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubStartDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging started on table data changes " " using (subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubStartDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started logging " "table data changes on the subscription " "subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubSyncMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started " " synchronization on meta data (META SCAN) using " "(subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubSyncMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization started (META SCAN) on " " meta data using (subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubSyncDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started " "synchronization " " on table data (DATA SCAN) using (subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubSyncDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int gci = theData[5]; case 0: BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization started (DATA SCAN) on " "table data using (subId=%d,SubKey=%d). GCI = %d" " Return code: %d", subId, subKey, gci, err); "%sEntering single user mode", theNodeId); break; } case GrepEvent::GrepPS_SubRemoveConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; case 1: BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have removed " "subscription (subId=%d,SubKey=%d). I have cleaned " "up resources I've used." " Return code: %d", subId, subKey, err); "%sEntered single user mode %d", theNodeId, theData[2]); break; } case GrepEvent::GrepSS_SubRemoveConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; case 2: BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Removed subscription " "(subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); "%sExiting single user mode", theNodeId); break; } default: BaseString::snprintf(m_text, m_text_len, "%sUnknown GrepSubscriptonInfo event: %d", theNodeId, theData[1]); } break; } case EventReport::GrepSubscriptionAlert : { GrepEvent::Subscription event = (GrepEvent::Subscription)theData[1]; switch(event) { case GrepEvent::GrepSS_CreateSubIdRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord:Error code: %d Error message: %s" " (subId=%d,SubKey=%d)", err, GrepError::getErrorDesc((GrepError::GE_Code)err), subId, subKey); break; } case GrepEvent::GrepSS_SubCreateRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: FAILED to Created subscription using" " (subId=%d,SubKey=%d)in primary system." " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubStartMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging failed to start on meta " "data changes." " using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubStartDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging FAILED to start on table data " " changes using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubSyncMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization FAILED (META SCAN) on " " meta data using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubSyncDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int gci = theData[5]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization FAILED (DATA SCAN) on " "table data using (subId=%d,SubKey=%d). GCI = %d" " Error code: %d Error Message: %s", subId, subKey, gci, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); "%sUnknown single user report %d", theNodeId, theData[1]); break; } case GrepEvent::GrepSS_SubRemoveRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Failed to remove subscription " "(subId=%d,SubKey=%d). " " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err) ); break; } case GrepEvent::GrepPS_CreateSubIdRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Error code: %d Error Message: %s" " (subId=%d,SubKey=%d)", err, GrepError::getErrorDesc((GrepError::GE_Code)err), subId, subKey); break; } case GrepEvent::GrepPS_SubCreateRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: FAILED to Created subscription using" " (subId=%d,SubKey=%d)in primary system." " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubStartMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Logging failed to start on meta " "data changes." " using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubStartDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Logging FAILED to start on table data " " changes using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubSyncMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Synchronization FAILED (META SCAN) on " " meta data using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubSyncDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int gci = theData[5]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Synchronization FAILED (DATA SCAN) on " "table data using (subId=%d,SubKey=%d). GCI = %d. " " Error code: %d Error Message: %s", subId, subKey, gci, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubRemoveRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Failed to remove subscription " "(subId=%d,SubKey=%d)." " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::Rep_Disconnect: { const int err = theData[4]; const int nodeId = theData[5]; BaseString::snprintf(m_text, m_text_len, "Rep: Node %d." " Error code: %d Error Message: %s", nodeId, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } default: BaseString::snprintf(m_text, m_text_len, "%sUnknown GrepSubscriptionAlert event: %d", theNodeId, theData[1]); break; } break; } case EventReport::BackupStarted: BaseString::snprintf(m_text, m_text_len, Loading ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp +47 −18 Original line number Diff line number Diff line Loading @@ -1966,6 +1966,11 @@ Ndbcntr::execRESUME_REQ(Signal* signal){ //ResumeRef * const ref = (ResumeRef *)&signal->theData[0]; jamEntry(); signal->theData[0] = EventReport::SingleUser; signal->theData[1] = 2; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB); //Uint32 senderData = req->senderData; //BlockReference senderRef = req->senderRef; NodeState newState(NodeState::SL_STARTED); Loading Loading @@ -2004,12 +2009,11 @@ Ndbcntr::execSTOP_REQ(Signal* signal){ return; } if(c_stopRec.stopReq.senderRef != 0 && !singleuser){ jam(); if(c_stopRec.stopReq.senderRef != 0){ /** * Requested a system shutdown */ if(StopReq::getSystemStop(req->requestInfo)){ if(!singleuser && StopReq::getSystemStop(req->requestInfo)){ jam(); sendSignalWithDelay(reference(), GSN_STOP_REQ, signal, 100, StopReq::SignalLength); Loading @@ -2031,22 +2035,27 @@ Ndbcntr::execSTOP_REQ(Signal* signal){ c_stopRec.stopReq = * req; c_stopRec.stopInitiatedTime = NdbTick_CurrentMillisecond(); if(StopReq::getSystemStop(c_stopRec.stopReq.requestInfo) && !singleuser) { if(!singleuser) { if(StopReq::getSystemStop(c_stopRec.stopReq.requestInfo)) { jam(); if(StopReq::getPerformRestart(c_stopRec.stopReq.requestInfo)){ ((Configuration&)theConfiguration).stopOnError(false); } } if(!singleuser) { if(!c_stopRec.checkNodeFail(signal)){ jam(); return; } } signal->theData[0] = EventReport::NDBStopStarted; signal->theData[1] = StopReq::getSystemStop(c_stopRec.stopReq.requestInfo) ? 1 : 0; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB); } else { signal->theData[0] = EventReport::SingleUser; signal->theData[1] = 0; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB); } NodeState newState(NodeState::SL_STOPPING_1, StopReq::getSystemStop(c_stopRec.stopReq.requestInfo)); Loading Loading @@ -2129,9 +2138,11 @@ Ndbcntr::StopRecord::checkNodeFail(Signal* signal){ stopReq.senderRef = 0; if (cntr.getNodeState().startLevel != NodeState::SL_SINGLEUSER) { NodeState newState(NodeState::SL_STARTED); cntr.updateNodeState(signal, newState); } signal->theData[0] = EventReport::NDBStopAborted; cntr.sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 1, JBB); Loading Loading @@ -2227,12 +2238,24 @@ void Ndbcntr::execABORT_ALL_CONF(Signal* signal){ jamEntry(); if(c_stopRec.stopReq.singleuser) { jam(); NodeState newState(NodeState::SL_SINGLEUSER); newState.setSingleUser(true); newState.setSingleUserApi(c_stopRec.stopReq.singleUserApi); updateNodeState(signal, newState); c_stopRec.stopInitiatedTime = NdbTick_CurrentMillisecond(); StopConf * const stopConf = (StopConf *)&signal->theData[0]; stopConf->senderData = c_stopRec.stopReq.senderData; stopConf->nodeState = (Uint32) NodeState::SL_SINGLEUSER; sendSignal(c_stopRec.stopReq.senderRef, GSN_STOP_CONF, signal, StopConf::SignalLength, JBB); c_stopRec.stopReq.senderRef = 0; // the command is done signal->theData[0] = EventReport::SingleUser; signal->theData[1] = 1; signal->theData[2] = c_stopRec.stopReq.singleUserApi; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 3, JBB); } else { Loading @@ -2250,7 +2273,13 @@ void Ndbcntr::execABORT_ALL_CONF(Signal* signal){ void Ndbcntr::execABORT_ALL_REF(Signal* signal){ jamEntry(); ndbrequire(false); AbortAllRef *abortAllRef = (AbortAllRef *)&signal->theData[0]; AbortAllRef::ErrorCode errorCode = (AbortAllRef::ErrorCode) abortAllRef->errorCode; StopRef * const stopRef = (StopRef *)&signal->theData[0]; stopRef->senderData = c_stopRec.stopReq.senderData; stopRef->errorCode = StopRef::TransactionAbortFailed; sendSignal(c_stopRec.stopReq.senderRef, GSN_STOP_REF, signal, StopRef::SignalLength, JBB); } void Loading Loading
ndb/include/kernel/GlobalSignalNumbers.h +1 −1 Original line number Diff line number Diff line Loading @@ -553,7 +553,6 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_STATISTICS_CONF 454 #define GSN_START_ORD 455 /* 456 unused */ /* 457 unused */ #define GSN_EVENT_SUBSCRIBE_REQ 458 Loading Loading @@ -900,6 +899,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES; #define GSN_RESUME_REQ 682 #define GSN_STOP_REQ 443 #define GSN_STOP_REF 444 #define GSN_STOP_CONF 456 #define GSN_API_VERSION_REQ 697 #define GSN_API_VERSION_CONF 698 Loading
ndb/include/kernel/signaldata/EventReport.hpp +3 −3 Original line number Diff line number Diff line Loading @@ -133,9 +133,9 @@ public: CreateLogBytes = 48, InfoEvent = 49, //GREP GrepSubscriptionInfo = 52, GrepSubscriptionAlert = 53, // SINGLE USER SingleUser = 52, /* unused 53 */ //BACKUP BackupStarted = 54, Loading
ndb/include/kernel/signaldata/StopReq.hpp +9 −1 Original line number Diff line number Diff line Loading @@ -67,6 +67,13 @@ public: static bool getStopAbort(const Uint32 & requestInfo); }; struct StopConf { STATIC_CONST( SignalLength = 2 ); Uint32 senderData; Uint32 nodeState; }; class StopRef { /** Loading @@ -86,7 +93,8 @@ public: OK = 0, NodeShutdownInProgress = 1, SystemShutdownInProgress = 2, NodeShutdownWouldCauseSystemCrash = 3 NodeShutdownWouldCauseSystemCrash = 3, TransactionAbortFailed = 4 }; public: Loading
ndb/src/common/debugger/EventLogger.cpp +12 −457 Original line number Diff line number Diff line Loading @@ -105,9 +105,8 @@ const EventLoggerBase::EventRepLogLevelMatrix EventLoggerBase::matrix[] = { { EventReport::CreateLogBytes, LogLevel::llInfo, 11, Logger::LL_INFO }, { EventReport::InfoEvent, LogLevel::llInfo, 2, Logger::LL_INFO }, //Global replication { EventReport::GrepSubscriptionInfo, LogLevel::llGrep, 7, Logger::LL_INFO}, { EventReport::GrepSubscriptionAlert, LogLevel::llGrep, 7, Logger::LL_ALERT}, //Single User { EventReport::SingleUser, LogLevel::llInfo, 7, Logger::LL_INFO}, // Backup { EventReport::BackupStarted, LogLevel::llBackup, 7, Logger::LL_INFO }, Loading Loading @@ -800,473 +799,29 @@ EventLogger::getText(char * m_text, size_t m_text_len, ); break; } case EventReport::GrepSubscriptionInfo : case EventReport::SingleUser : { GrepEvent::Subscription event = (GrepEvent::Subscription)theData[1]; switch(event) { case GrepEvent::GrepSS_CreateSubIdConf: switch (theData[1]) { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Created subscription id" " (subId=%d,SubKey=%d)" " Return code: %d.", subId, subKey, err); break; } case GrepEvent::GrepPS_CreateSubIdConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Created subscription id" " (subId=%d,SubKey=%d)" " Return code: %d.", subId, subKey, err); break; } case GrepEvent::GrepSS_SubCreateConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int nodegrp = theData[5]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Created subscription using" " (subId=%d,SubKey=%d)" " in primary system. Primary system has %d nodegroup(s)." " Return code: %d", subId, subKey, nodegrp, err); break; } case GrepEvent::GrepPS_SubCreateConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have created " "subscriptions" " using (subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubStartMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging started on meta data changes." " using (subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubStartMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started " "logging meta data" " changes on the subscription subId=%d,SubKey=%d) " "(N.I yet)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubStartDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging started on table data changes " " using (subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubStartDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started logging " "table data changes on the subscription " "subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubSyncMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started " " synchronization on meta data (META SCAN) using " "(subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubSyncMetaConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization started (META SCAN) on " " meta data using (subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepPS_SubSyncDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have started " "synchronization " " on table data (DATA SCAN) using (subId=%d,SubKey=%d)." " Return code: %d", subId, subKey, err); break; } case GrepEvent::GrepSS_SubSyncDataConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int gci = theData[5]; case 0: BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization started (DATA SCAN) on " "table data using (subId=%d,SubKey=%d). GCI = %d" " Return code: %d", subId, subKey, gci, err); "%sEntering single user mode", theNodeId); break; } case GrepEvent::GrepPS_SubRemoveConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; case 1: BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: All participants have removed " "subscription (subId=%d,SubKey=%d). I have cleaned " "up resources I've used." " Return code: %d", subId, subKey, err); "%sEntered single user mode %d", theNodeId, theData[2]); break; } case GrepEvent::GrepSS_SubRemoveConf: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; case 2: BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Removed subscription " "(subId=%d,SubKey=%d)" " Return code: %d", subId, subKey, err); "%sExiting single user mode", theNodeId); break; } default: BaseString::snprintf(m_text, m_text_len, "%sUnknown GrepSubscriptonInfo event: %d", theNodeId, theData[1]); } break; } case EventReport::GrepSubscriptionAlert : { GrepEvent::Subscription event = (GrepEvent::Subscription)theData[1]; switch(event) { case GrepEvent::GrepSS_CreateSubIdRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord:Error code: %d Error message: %s" " (subId=%d,SubKey=%d)", err, GrepError::getErrorDesc((GrepError::GE_Code)err), subId, subKey); break; } case GrepEvent::GrepSS_SubCreateRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: FAILED to Created subscription using" " (subId=%d,SubKey=%d)in primary system." " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubStartMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging failed to start on meta " "data changes." " using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubStartDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Logging FAILED to start on table data " " changes using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubSyncMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization FAILED (META SCAN) on " " meta data using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepSS_SubSyncDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int gci = theData[5]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Synchronization FAILED (DATA SCAN) on " "table data using (subId=%d,SubKey=%d). GCI = %d" " Error code: %d Error Message: %s", subId, subKey, gci, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); "%sUnknown single user report %d", theNodeId, theData[1]); break; } case GrepEvent::GrepSS_SubRemoveRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::SSCoord: Failed to remove subscription " "(subId=%d,SubKey=%d). " " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err) ); break; } case GrepEvent::GrepPS_CreateSubIdRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Error code: %d Error Message: %s" " (subId=%d,SubKey=%d)", err, GrepError::getErrorDesc((GrepError::GE_Code)err), subId, subKey); break; } case GrepEvent::GrepPS_SubCreateRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: FAILED to Created subscription using" " (subId=%d,SubKey=%d)in primary system." " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubStartMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Logging failed to start on meta " "data changes." " using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubStartDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Logging FAILED to start on table data " " changes using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubSyncMetaRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Synchronization FAILED (META SCAN) on " " meta data using (subId=%d,SubKey=%d)" " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubSyncDataRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; const int gci = theData[5]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Synchronization FAILED (DATA SCAN) on " "table data using (subId=%d,SubKey=%d). GCI = %d. " " Error code: %d Error Message: %s", subId, subKey, gci, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::GrepPS_SubRemoveRef: { const int subId = theData[2]; const int subKey = theData[3]; const int err = theData[4]; BaseString::snprintf(m_text, m_text_len, "Grep::PSCoord: Failed to remove subscription " "(subId=%d,SubKey=%d)." " Error code: %d Error Message: %s", subId, subKey, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } case GrepEvent::Rep_Disconnect: { const int err = theData[4]; const int nodeId = theData[5]; BaseString::snprintf(m_text, m_text_len, "Rep: Node %d." " Error code: %d Error Message: %s", nodeId, err, GrepError::getErrorDesc((GrepError::GE_Code)err)); break; } default: BaseString::snprintf(m_text, m_text_len, "%sUnknown GrepSubscriptionAlert event: %d", theNodeId, theData[1]); break; } break; } case EventReport::BackupStarted: BaseString::snprintf(m_text, m_text_len, Loading
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp +47 −18 Original line number Diff line number Diff line Loading @@ -1966,6 +1966,11 @@ Ndbcntr::execRESUME_REQ(Signal* signal){ //ResumeRef * const ref = (ResumeRef *)&signal->theData[0]; jamEntry(); signal->theData[0] = EventReport::SingleUser; signal->theData[1] = 2; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB); //Uint32 senderData = req->senderData; //BlockReference senderRef = req->senderRef; NodeState newState(NodeState::SL_STARTED); Loading Loading @@ -2004,12 +2009,11 @@ Ndbcntr::execSTOP_REQ(Signal* signal){ return; } if(c_stopRec.stopReq.senderRef != 0 && !singleuser){ jam(); if(c_stopRec.stopReq.senderRef != 0){ /** * Requested a system shutdown */ if(StopReq::getSystemStop(req->requestInfo)){ if(!singleuser && StopReq::getSystemStop(req->requestInfo)){ jam(); sendSignalWithDelay(reference(), GSN_STOP_REQ, signal, 100, StopReq::SignalLength); Loading @@ -2031,22 +2035,27 @@ Ndbcntr::execSTOP_REQ(Signal* signal){ c_stopRec.stopReq = * req; c_stopRec.stopInitiatedTime = NdbTick_CurrentMillisecond(); if(StopReq::getSystemStop(c_stopRec.stopReq.requestInfo) && !singleuser) { if(!singleuser) { if(StopReq::getSystemStop(c_stopRec.stopReq.requestInfo)) { jam(); if(StopReq::getPerformRestart(c_stopRec.stopReq.requestInfo)){ ((Configuration&)theConfiguration).stopOnError(false); } } if(!singleuser) { if(!c_stopRec.checkNodeFail(signal)){ jam(); return; } } signal->theData[0] = EventReport::NDBStopStarted; signal->theData[1] = StopReq::getSystemStop(c_stopRec.stopReq.requestInfo) ? 1 : 0; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB); } else { signal->theData[0] = EventReport::SingleUser; signal->theData[1] = 0; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB); } NodeState newState(NodeState::SL_STOPPING_1, StopReq::getSystemStop(c_stopRec.stopReq.requestInfo)); Loading Loading @@ -2129,9 +2138,11 @@ Ndbcntr::StopRecord::checkNodeFail(Signal* signal){ stopReq.senderRef = 0; if (cntr.getNodeState().startLevel != NodeState::SL_SINGLEUSER) { NodeState newState(NodeState::SL_STARTED); cntr.updateNodeState(signal, newState); } signal->theData[0] = EventReport::NDBStopAborted; cntr.sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 1, JBB); Loading Loading @@ -2227,12 +2238,24 @@ void Ndbcntr::execABORT_ALL_CONF(Signal* signal){ jamEntry(); if(c_stopRec.stopReq.singleuser) { jam(); NodeState newState(NodeState::SL_SINGLEUSER); newState.setSingleUser(true); newState.setSingleUserApi(c_stopRec.stopReq.singleUserApi); updateNodeState(signal, newState); c_stopRec.stopInitiatedTime = NdbTick_CurrentMillisecond(); StopConf * const stopConf = (StopConf *)&signal->theData[0]; stopConf->senderData = c_stopRec.stopReq.senderData; stopConf->nodeState = (Uint32) NodeState::SL_SINGLEUSER; sendSignal(c_stopRec.stopReq.senderRef, GSN_STOP_CONF, signal, StopConf::SignalLength, JBB); c_stopRec.stopReq.senderRef = 0; // the command is done signal->theData[0] = EventReport::SingleUser; signal->theData[1] = 1; signal->theData[2] = c_stopRec.stopReq.singleUserApi; sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 3, JBB); } else { Loading @@ -2250,7 +2273,13 @@ void Ndbcntr::execABORT_ALL_CONF(Signal* signal){ void Ndbcntr::execABORT_ALL_REF(Signal* signal){ jamEntry(); ndbrequire(false); AbortAllRef *abortAllRef = (AbortAllRef *)&signal->theData[0]; AbortAllRef::ErrorCode errorCode = (AbortAllRef::ErrorCode) abortAllRef->errorCode; StopRef * const stopRef = (StopRef *)&signal->theData[0]; stopRef->senderData = c_stopRec.stopReq.senderData; stopRef->errorCode = StopRef::TransactionAbortFailed; sendSignal(c_stopRec.stopReq.senderRef, GSN_STOP_REF, signal, StopRef::SignalLength, JBB); } void Loading