Loading sql/log_event.cc +20 −3 Original line number Diff line number Diff line Loading @@ -5716,10 +5716,27 @@ int Rows_log_event::exec_event(st_relay_log_info *rli) rli->tables_to_lock_count, &need_reopen))) { if (!need_reopen) { if (thd->query_error || thd->is_fatal_error) { /* Error reporting borrowed from Query_log_event with many excessive simplifications (we don't honour --slave-skip-errors) */ uint actual_error= thd->net.last_errno; slave_print_msg(ERROR_LEVEL, rli, actual_error, "Error '%s' in %s event: when locking tables", (actual_error ? thd->net.last_error : "unexpected success or fatal error"), get_type_str()); thd->is_fatal_error= 1; } else { slave_print_msg(ERROR_LEVEL, rli, error, "Error in %s event: when locking tables", get_type_str()); } rli->clear_tables_to_lock(); DBUG_RETURN(error); } Loading sql/protocol.h +2 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ class Protocol String *storage_packet() { return packet; } inline void free() { packet->free(); } virtual bool write(); inline bool store(int from) { return store_long((longlong) from); } inline bool store(uint32 from) { return store_long((longlong) from); } inline bool store(longlong from) Loading sql/slave.cc +1 −1 Original line number Diff line number Diff line Loading @@ -1295,7 +1295,7 @@ bool show_master_info(THD* thd, MASTER_INFO* mi) rpl_filter->get_wild_ignore_table(&tmp); protocol->store(&tmp); protocol->store((uint32) mi->rli.last_slave_errno); protocol->store(mi->rli.last_slave_errno); protocol->store(mi->rli.last_slave_error, &my_charset_bin); protocol->store((uint32) mi->rli.slave_skip_counter); protocol->store((ulonglong) mi->rli.group_master_log_pos); Loading storage/ndb/src/common/debugger/EventLogger.cpp +94 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <ndb_global.h> #include <EventLogger.hpp> #include <TransporterCallback.hpp> #include <NdbConfig.h> #include <kernel/BlockNumbers.h> Loading Loading @@ -526,11 +527,100 @@ void getTextUndoLogBlocked(QQQQ) { theData[1], theData[2]); } void getTextTransporterError(QQQQ) { struct myTransporterError{ int errorNum; char errorString[256]; }; int i = 0; int lenth = 0; static const struct myTransporterError TransporterErrorString[]= { //TE_NO_ERROR = 0 {TE_NO_ERROR,"No error"}, //TE_ERROR_CLOSING_SOCKET = 0x1 {TE_ERROR_CLOSING_SOCKET,"Error found during closing of socket"}, //TE_ERROR_IN_SELECT_BEFORE_ACCEPT = 0x2 {TE_ERROR_IN_SELECT_BEFORE_ACCEPT,"Error found before accept. The transporter will retry"}, //TE_INVALID_MESSAGE_LENGTH = 0x3 | TE_DO_DISCONNECT {TE_INVALID_MESSAGE_LENGTH,"Error found in message (invalid message length)"}, //TE_INVALID_CHECKSUM = 0x4 | TE_DO_DISCONNECT {TE_INVALID_CHECKSUM,"Error found in message (checksum)"}, //TE_COULD_NOT_CREATE_SOCKET = 0x5 {TE_COULD_NOT_CREATE_SOCKET,"Error found while creating socket(can't create socket)"}, //TE_COULD_NOT_BIND_SOCKET = 0x6 {TE_COULD_NOT_BIND_SOCKET,"Error found while binding server socket"}, //TE_LISTEN_FAILED = 0x7 {TE_LISTEN_FAILED,"Error found while listening to server socket"}, //TE_ACCEPT_RETURN_ERROR = 0x8 {TE_ACCEPT_RETURN_ERROR,"Error found during accept(accept return error)"}, //TE_SHM_DISCONNECT = 0xb | TE_DO_DISCONNECT {TE_SHM_DISCONNECT,"The remote node has disconnected"}, //TE_SHM_IPC_STAT = 0xc | TE_DO_DISCONNECT {TE_SHM_IPC_STAT,"Unable to check shm segment"}, //TE_SHM_UNABLE_TO_CREATE_SEGMENT = 0xd {TE_SHM_UNABLE_TO_CREATE_SEGMENT,"Unable to create shm segment"}, //TE_SHM_UNABLE_TO_ATTACH_SEGMENT = 0xe {TE_SHM_UNABLE_TO_ATTACH_SEGMENT,"Unable to attach shm segment"}, //TE_SHM_UNABLE_TO_REMOVE_SEGMENT = 0xf {TE_SHM_UNABLE_TO_REMOVE_SEGMENT,"Unable to remove shm segment"}, //TE_TOO_SMALL_SIGID = 0x10 {TE_TOO_SMALL_SIGID,"Sig ID too small"}, //TE_TOO_LARGE_SIGID = 0x11 {TE_TOO_LARGE_SIGID,"Sig ID too large"}, //TE_WAIT_STACK_FULL = 0x12 | TE_DO_DISCONNECT {TE_WAIT_STACK_FULL,"Wait stack was full"}, //TE_RECEIVE_BUFFER_FULL = 0x13 | TE_DO_DISCONNECT {TE_RECEIVE_BUFFER_FULL,"Receive buffer was full"}, //TE_SIGNAL_LOST_SEND_BUFFER_FULL = 0x14 | TE_DO_DISCONNECT {TE_SIGNAL_LOST_SEND_BUFFER_FULL,"Send buffer was full,and trying to force send fails"}, //TE_SIGNAL_LOST = 0x15 {TE_SIGNAL_LOST,"Send failed for unknown reason(signal lost)"}, //TE_SEND_BUFFER_FULL = 0x16 {TE_SEND_BUFFER_FULL,"The send buffer was full, but sleeping for a while solved"}, //TE_SCI_LINK_ERROR = 0x0017 {TE_SCI_LINK_ERROR,"There is no link from this node to the switch"}, //TE_SCI_UNABLE_TO_START_SEQUENCE = 0x18 | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_START_SEQUENCE,"Could not start a sequence, because system resources are exumed or no sequence has been created"}, //TE_SCI_UNABLE_TO_REMOVE_SEQUENCE = 0x19 | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_REMOVE_SEQUENCE,"Could not remove a sequence"}, //TE_SCI_UNABLE_TO_CREATE_SEQUENCE = 0x1a | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_CREATE_SEQUENCE,"Could not create a sequence, because system resources are exempted. Must reboot"}, //TE_SCI_UNRECOVERABLE_DATA_TFX_ERROR = 0x1b | TE_DO_DISCONNECT {TE_SCI_UNRECOVERABLE_DATA_TFX_ERROR,"Tried to send data on redundant link but failed"}, //TE_SCI_CANNOT_INIT_LOCALSEGMENT = 0x1c | TE_DO_DISCONNECT {TE_SCI_CANNOT_INIT_LOCALSEGMENT,"Cannot initialize local segment"}, //TE_SCI_CANNOT_MAP_REMOTESEGMENT = 0x1d | TE_DO_DISCONNEC {TE_SCI_CANNOT_MAP_REMOTESEGMENT,"Cannot map remote segment"}, //TE_SCI_UNABLE_TO_UNMAP_SEGMENT = 0x1e | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_UNMAP_SEGMENT,"Cannot free the resources used by this segment (step 1)"}, //TE_SCI_UNABLE_TO_REMOVE_SEGMENT = 0x1f | TE_DO_DISCONNEC {TE_SCI_UNABLE_TO_REMOVE_SEGMENT,"Cannot free the resources used by this segment (step 2)"}, //TE_SCI_UNABLE_TO_DISCONNECT_SEGMENT = 0x20 | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_DISCONNECT_SEGMENT,"Cannot disconnect from a remote segment"}, //TE_SHM_IPC_PERMANENT = 0x21 {TE_SHM_IPC_PERMANENT,"Shm ipc Permanent error"}, //TE_SCI_UNABLE_TO_CLOSE_CHANNEL = 0x22 {TE_SCI_UNABLE_TO_CLOSE_CHANNEL,"Unable to close the sci channel and the resources allocated"} }; lenth = sizeof(TransporterErrorString)/sizeof(struct myTransporterError); for(i=0; i<lenth; i++) { if(theData[2] == TransporterErrorString[i].errorNum) { BaseString::snprintf(m_text, m_text_len, "Transporter to node %d reported error 0x%x", "Transporter to node %d reported error: %s", theData[1], theData[2]); TransporterErrorString[i].errorString); break; } } if(i == lenth) BaseString::snprintf(m_text, m_text_len, "Transporter to node %d reported error: no such error", theData[1]); } void getTextTransporterWarning(QQQQ) { getTextTransporterError(m_text, m_text_len, theData); Loading storage/ndb/src/kernel/blocks/backup/Backup.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2405,6 +2405,18 @@ Backup::defineBackupRef(Signal* signal, BackupRecordPtr ptr, Uint32 errCode) if(ptr.p->is_lcp()) { jam(); if (ptr.p->ctlFilePtr == RNIL) { ptr.p->m_gsn = GSN_DEFINE_BACKUP_REF; ndbrequire(ptr.p->errorCode != 0); DefineBackupRef* ref = (DefineBackupRef*)signal->getDataPtrSend(); ref->backupId = ptr.p->backupId; ref->backupPtr = ptr.i; ref->errorCode = ptr.p->errorCode; ref->nodeId = getOwnNodeId(); sendSignal(ptr.p->masterRef, GSN_DEFINE_BACKUP_REF, signal, DefineBackupRef::SignalLength, JBB); return; } BackupFilePtr filePtr LINT_SET_PTR; ptr.p->files.getPtr(filePtr, ptr.p->ctlFilePtr); Loading Loading
sql/log_event.cc +20 −3 Original line number Diff line number Diff line Loading @@ -5716,10 +5716,27 @@ int Rows_log_event::exec_event(st_relay_log_info *rli) rli->tables_to_lock_count, &need_reopen))) { if (!need_reopen) { if (thd->query_error || thd->is_fatal_error) { /* Error reporting borrowed from Query_log_event with many excessive simplifications (we don't honour --slave-skip-errors) */ uint actual_error= thd->net.last_errno; slave_print_msg(ERROR_LEVEL, rli, actual_error, "Error '%s' in %s event: when locking tables", (actual_error ? thd->net.last_error : "unexpected success or fatal error"), get_type_str()); thd->is_fatal_error= 1; } else { slave_print_msg(ERROR_LEVEL, rli, error, "Error in %s event: when locking tables", get_type_str()); } rli->clear_tables_to_lock(); DBUG_RETURN(error); } Loading
sql/protocol.h +2 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ class Protocol String *storage_packet() { return packet; } inline void free() { packet->free(); } virtual bool write(); inline bool store(int from) { return store_long((longlong) from); } inline bool store(uint32 from) { return store_long((longlong) from); } inline bool store(longlong from) Loading
sql/slave.cc +1 −1 Original line number Diff line number Diff line Loading @@ -1295,7 +1295,7 @@ bool show_master_info(THD* thd, MASTER_INFO* mi) rpl_filter->get_wild_ignore_table(&tmp); protocol->store(&tmp); protocol->store((uint32) mi->rli.last_slave_errno); protocol->store(mi->rli.last_slave_errno); protocol->store(mi->rli.last_slave_error, &my_charset_bin); protocol->store((uint32) mi->rli.slave_skip_counter); protocol->store((ulonglong) mi->rli.group_master_log_pos); Loading
storage/ndb/src/common/debugger/EventLogger.cpp +94 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <ndb_global.h> #include <EventLogger.hpp> #include <TransporterCallback.hpp> #include <NdbConfig.h> #include <kernel/BlockNumbers.h> Loading Loading @@ -526,11 +527,100 @@ void getTextUndoLogBlocked(QQQQ) { theData[1], theData[2]); } void getTextTransporterError(QQQQ) { struct myTransporterError{ int errorNum; char errorString[256]; }; int i = 0; int lenth = 0; static const struct myTransporterError TransporterErrorString[]= { //TE_NO_ERROR = 0 {TE_NO_ERROR,"No error"}, //TE_ERROR_CLOSING_SOCKET = 0x1 {TE_ERROR_CLOSING_SOCKET,"Error found during closing of socket"}, //TE_ERROR_IN_SELECT_BEFORE_ACCEPT = 0x2 {TE_ERROR_IN_SELECT_BEFORE_ACCEPT,"Error found before accept. The transporter will retry"}, //TE_INVALID_MESSAGE_LENGTH = 0x3 | TE_DO_DISCONNECT {TE_INVALID_MESSAGE_LENGTH,"Error found in message (invalid message length)"}, //TE_INVALID_CHECKSUM = 0x4 | TE_DO_DISCONNECT {TE_INVALID_CHECKSUM,"Error found in message (checksum)"}, //TE_COULD_NOT_CREATE_SOCKET = 0x5 {TE_COULD_NOT_CREATE_SOCKET,"Error found while creating socket(can't create socket)"}, //TE_COULD_NOT_BIND_SOCKET = 0x6 {TE_COULD_NOT_BIND_SOCKET,"Error found while binding server socket"}, //TE_LISTEN_FAILED = 0x7 {TE_LISTEN_FAILED,"Error found while listening to server socket"}, //TE_ACCEPT_RETURN_ERROR = 0x8 {TE_ACCEPT_RETURN_ERROR,"Error found during accept(accept return error)"}, //TE_SHM_DISCONNECT = 0xb | TE_DO_DISCONNECT {TE_SHM_DISCONNECT,"The remote node has disconnected"}, //TE_SHM_IPC_STAT = 0xc | TE_DO_DISCONNECT {TE_SHM_IPC_STAT,"Unable to check shm segment"}, //TE_SHM_UNABLE_TO_CREATE_SEGMENT = 0xd {TE_SHM_UNABLE_TO_CREATE_SEGMENT,"Unable to create shm segment"}, //TE_SHM_UNABLE_TO_ATTACH_SEGMENT = 0xe {TE_SHM_UNABLE_TO_ATTACH_SEGMENT,"Unable to attach shm segment"}, //TE_SHM_UNABLE_TO_REMOVE_SEGMENT = 0xf {TE_SHM_UNABLE_TO_REMOVE_SEGMENT,"Unable to remove shm segment"}, //TE_TOO_SMALL_SIGID = 0x10 {TE_TOO_SMALL_SIGID,"Sig ID too small"}, //TE_TOO_LARGE_SIGID = 0x11 {TE_TOO_LARGE_SIGID,"Sig ID too large"}, //TE_WAIT_STACK_FULL = 0x12 | TE_DO_DISCONNECT {TE_WAIT_STACK_FULL,"Wait stack was full"}, //TE_RECEIVE_BUFFER_FULL = 0x13 | TE_DO_DISCONNECT {TE_RECEIVE_BUFFER_FULL,"Receive buffer was full"}, //TE_SIGNAL_LOST_SEND_BUFFER_FULL = 0x14 | TE_DO_DISCONNECT {TE_SIGNAL_LOST_SEND_BUFFER_FULL,"Send buffer was full,and trying to force send fails"}, //TE_SIGNAL_LOST = 0x15 {TE_SIGNAL_LOST,"Send failed for unknown reason(signal lost)"}, //TE_SEND_BUFFER_FULL = 0x16 {TE_SEND_BUFFER_FULL,"The send buffer was full, but sleeping for a while solved"}, //TE_SCI_LINK_ERROR = 0x0017 {TE_SCI_LINK_ERROR,"There is no link from this node to the switch"}, //TE_SCI_UNABLE_TO_START_SEQUENCE = 0x18 | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_START_SEQUENCE,"Could not start a sequence, because system resources are exumed or no sequence has been created"}, //TE_SCI_UNABLE_TO_REMOVE_SEQUENCE = 0x19 | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_REMOVE_SEQUENCE,"Could not remove a sequence"}, //TE_SCI_UNABLE_TO_CREATE_SEQUENCE = 0x1a | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_CREATE_SEQUENCE,"Could not create a sequence, because system resources are exempted. Must reboot"}, //TE_SCI_UNRECOVERABLE_DATA_TFX_ERROR = 0x1b | TE_DO_DISCONNECT {TE_SCI_UNRECOVERABLE_DATA_TFX_ERROR,"Tried to send data on redundant link but failed"}, //TE_SCI_CANNOT_INIT_LOCALSEGMENT = 0x1c | TE_DO_DISCONNECT {TE_SCI_CANNOT_INIT_LOCALSEGMENT,"Cannot initialize local segment"}, //TE_SCI_CANNOT_MAP_REMOTESEGMENT = 0x1d | TE_DO_DISCONNEC {TE_SCI_CANNOT_MAP_REMOTESEGMENT,"Cannot map remote segment"}, //TE_SCI_UNABLE_TO_UNMAP_SEGMENT = 0x1e | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_UNMAP_SEGMENT,"Cannot free the resources used by this segment (step 1)"}, //TE_SCI_UNABLE_TO_REMOVE_SEGMENT = 0x1f | TE_DO_DISCONNEC {TE_SCI_UNABLE_TO_REMOVE_SEGMENT,"Cannot free the resources used by this segment (step 2)"}, //TE_SCI_UNABLE_TO_DISCONNECT_SEGMENT = 0x20 | TE_DO_DISCONNECT {TE_SCI_UNABLE_TO_DISCONNECT_SEGMENT,"Cannot disconnect from a remote segment"}, //TE_SHM_IPC_PERMANENT = 0x21 {TE_SHM_IPC_PERMANENT,"Shm ipc Permanent error"}, //TE_SCI_UNABLE_TO_CLOSE_CHANNEL = 0x22 {TE_SCI_UNABLE_TO_CLOSE_CHANNEL,"Unable to close the sci channel and the resources allocated"} }; lenth = sizeof(TransporterErrorString)/sizeof(struct myTransporterError); for(i=0; i<lenth; i++) { if(theData[2] == TransporterErrorString[i].errorNum) { BaseString::snprintf(m_text, m_text_len, "Transporter to node %d reported error 0x%x", "Transporter to node %d reported error: %s", theData[1], theData[2]); TransporterErrorString[i].errorString); break; } } if(i == lenth) BaseString::snprintf(m_text, m_text_len, "Transporter to node %d reported error: no such error", theData[1]); } void getTextTransporterWarning(QQQQ) { getTextTransporterError(m_text, m_text_len, theData); Loading
storage/ndb/src/kernel/blocks/backup/Backup.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2405,6 +2405,18 @@ Backup::defineBackupRef(Signal* signal, BackupRecordPtr ptr, Uint32 errCode) if(ptr.p->is_lcp()) { jam(); if (ptr.p->ctlFilePtr == RNIL) { ptr.p->m_gsn = GSN_DEFINE_BACKUP_REF; ndbrequire(ptr.p->errorCode != 0); DefineBackupRef* ref = (DefineBackupRef*)signal->getDataPtrSend(); ref->backupId = ptr.p->backupId; ref->backupPtr = ptr.i; ref->errorCode = ptr.p->errorCode; ref->nodeId = getOwnNodeId(); sendSignal(ptr.p->masterRef, GSN_DEFINE_BACKUP_REF, signal, DefineBackupRef::SignalLength, JBB); return; } BackupFilePtr filePtr LINT_SET_PTR; ptr.p->files.getPtr(filePtr, ptr.p->ctlFilePtr); Loading