void getTextNDBStopForced(QQQQ) { BaseString action_str(""); BaseString reason_str(""); BaseString sphase_str(""); int signum = theData[2]; int error = theData[3]; int sphase = theData[4]; int extra = theData[5]; getRestartAction(theData[1],action_str); if (signum) reason_str.appfmt(" Initiated by signal %d.", signum); if (error) { ndbd_exit_classification cl; ndbd_exit_status st; const char *msg = ndbd_exit_message(error, &cl); const char *cl_msg = ndbd_exit_classification_message(cl, &st); const char *st_msg = ndbd_exit_status_message(st); reason_str.appfmt(" Caused by error %d: \'%s(%s). %s\'.", error, msg, cl_msg, st_msg); if (extra != 0) reason_str.appfmt(" (extra info %d)", extra); } if (sphase < 255) sphase_str.appfmt(" Occured during startphase %u.", sphase); BaseString::snprintf(m_text, m_text_len, "Forced node shutdown completed%s.%s%s", action_str.c_str(), sphase_str.c_str(), reason_str.c_str()); }
void ErrorReporter::formatMessage(int faultID, const char* problemData, const char* objRef, const char* theNameOfTheTraceFile, char* messptr){ int processId; ndbd_exit_classification cl; ndbd_exit_status st; const char *exit_msg = ndbd_exit_message(faultID, &cl); const char *exit_cl_msg = ndbd_exit_classification_message(cl, &st); const char *exit_st_msg = ndbd_exit_status_message(st); processId = NdbHost_GetProcessId(); BaseString::snprintf(messptr, MESSAGE_LENGTH, "Time: %s\n" "Status: %s\n" "Message: %s (%s)\n" "Error: %d\n" "Error data: %s\n" "Error object: %s\n" "Program: %s\n" "Pid: %d\n" "Trace: %s\n" "Version: %s\n" "***EOM***\n", formatTimeStampString() , exit_st_msg, exit_msg, exit_cl_msg, faultID, (problemData == NULL) ? "" : problemData, objRef, my_progname, processId, theNameOfTheTraceFile ? theNameOfTheTraceFile : "<no tracefile>", NDB_VERSION_STRING); // Add trailing blanks to get a fixed lenght of the message while (strlen(messptr) <= MESSAGE_LENGTH-3){ strcat(messptr, " "); } strcat(messptr, "\n"); return; }
int ndbd_exit_string(int err_no, char *str, unsigned int size) { unsigned int len; ndbd_exit_classification cl; ndbd_exit_status st; const char *msg = ndbd_exit_message(err_no, &cl); if (msg[0] != '\0' && cl != XUE) { const char *cl_msg = ndbd_exit_classification_message(cl, &st); const char *st_msg = ndbd_exit_status_message(st); len = my_snprintf(str, size-1, "%s: %s: %s", msg, st_msg, cl_msg); str[size-1]= '\0'; return len; } return -1; }
void ErrorReporter::formatMessage(int thr_no, Uint32 num_threads, int faultID, const char* problemData, const char* objRef, const char* theNameOfTheTraceFile, char* messptr){ int processId; ndbd_exit_classification cl; ndbd_exit_status st; const char *exit_msg = ndbd_exit_message(faultID, &cl); const char *exit_cl_msg = ndbd_exit_classification_message(cl, &st); const char *exit_st_msg = ndbd_exit_status_message(st); int sofar; processId = NdbHost_GetProcessId(); char thrbuf[100] = ""; if (thr_no >= 0) { BaseString::snprintf(thrbuf, sizeof(thrbuf), " thr: %u", thr_no); } BaseString::snprintf(messptr, MESSAGE_LENGTH, "Time: %s\n" "Status: %s\n" "Message: %s (%s)\n" "Error: %d\n" "Error data: %s\n" "Error object: %s\n" "Program: %s\n" "Pid: %d%s\n" "Version: %s\n" "Trace: %s", formatTimeStampString() , exit_st_msg, exit_msg, exit_cl_msg, faultID, (problemData == NULL) ? "" : problemData, objRef, my_progname, processId, thrbuf, NDB_VERSION_STRING, theNameOfTheTraceFile ? theNameOfTheTraceFile : "<no tracefile>"); if (theNameOfTheTraceFile) { for (Uint32 i = 1 ; i < num_threads; i++) { sofar = strlen(messptr); if(sofar < MESSAGE_LENGTH) { BaseString::snprintf(messptr + sofar, MESSAGE_LENGTH - sofar, " %s_t%u", theNameOfTheTraceFile, i); } } } sofar = strlen(messptr); if(sofar < MESSAGE_LENGTH) { BaseString::snprintf(messptr + sofar, MESSAGE_LENGTH - sofar, "\n" "***EOM***\n"); } // Add trailing blanks to get a fixed length of the message while (strlen(messptr) <= MESSAGE_LENGTH-3){ strcat(messptr, " "); } messptr[MESSAGE_LENGTH -2]='\n'; messptr[MESSAGE_LENGTH -1]=0; return; }