mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 14:54:20 +01:00
2361720c98
into mysql.com:/home/my/mysql-5.1 BUILD/FINISH.sh: Auto merged BitKeeper/deleted/.del-makefilewin.i~5c8479dcb8a455b2: Auto merged BitKeeper/deleted/.del-makefilewin~13888739357b3025: Auto merged BitKeeper/deleted/.del-makefilewin~14f24a4a173e2fcd: Auto merged BitKeeper/deleted/.del-makefilewin~15e9e5c9e8fa870b: Auto merged BitKeeper/deleted/.del-makefilewin~1c53f31b88dd36e: Auto merged BitKeeper/deleted/.del-makefilewin~1dbc058d76ebf1db: Auto merged BitKeeper/deleted/.del-makefilewin~2e0407fe123f8365: Auto merged BitKeeper/deleted/.del-makefilewin~2fc379bd4065c995: Auto merged BitKeeper/deleted/.del-makefilewin~389ee2dcf79afb79: Auto merged BitKeeper/deleted/.del-makefilewin~4d139e182457e553: Auto merged BitKeeper/deleted/.del-makefilewin~5104767c73775697: Auto merged BitKeeper/deleted/.del-makefilewin~608ed49dcd88e0f7: Auto merged BitKeeper/deleted/.del-makefilewin~63acd666293282a: Auto merged BitKeeper/deleted/.del-makefilewin~6ba64863bce3d0b8: Auto merged BitKeeper/deleted/.del-makefilewin~72a64128bacce71b: Auto merged BitKeeper/deleted/.del-makefilewin~78000390c783b1c5: Auto merged BitKeeper/deleted/.del-makefilewin~7a9d7d5a42bbfaf5: Auto merged Makefile.am: Auto merged BitKeeper/deleted/.del-makefilewin~a40ea12eebdd6ef0: Auto merged BitKeeper/deleted/.del-makefilewin~aeea7c82f21f7cf5: Auto merged BitKeeper/deleted/.del-makefilewin~b643e38d8da389ac: Auto merged BitKeeper/deleted/.del-makefilewin~c7b621c745e5de95: Auto merged BitKeeper/deleted/.del-makefilewin~c8273a47b90f52bb: Auto merged BitKeeper/deleted/.del-makefilewin~d1a9d1f7d33fcb73: Auto merged BitKeeper/deleted/.del-makefilewin~d37b6b303348c871: Auto merged BitKeeper/deleted/.del-makefilewin~d90f35fdc3f2ee5f: Auto merged BitKeeper/deleted/.del-makefilewin~dc4b8ad5ea53bd: Auto merged BitKeeper/deleted/.del-makefilewin~dea10ec1c94f7be: Auto merged BitKeeper/deleted/.del-makefilewin~ef3a208fa0e9b0db: Auto merged BitKeeper/deleted/.del-makefilewin~f1e3b890aa1c9ea3: Auto merged BitKeeper/deleted/.del-makefilewin~f4b7b99a887b7de: Auto merged BitKeeper/deleted/.del-makefilewin~fdda94ad32fa9e34: Auto merged BitKeeper/deleted/.del-my_cnf~977f69858affc57b: Auto merged BitKeeper/etc/config: Auto merged VC++Files/libmysqld/libmysqld.dsp: Auto merged VC++Files/sql/mysqld.dsp: Auto merged client/mysqltest.c: Auto merged include/Makefile.am: Auto merged include/base64.h: Auto merged include/my_base.h: Auto merged include/mysql_com.h: Auto merged libmysqld/Makefile.am: Auto merged mysql-test/mysql-test-run.pl: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/ndb_basic.result: Auto merged mysql-test/r/ndb_condition_pushdown.result: Auto merged mysql-test/t/alter_table.test: Auto merged mysql-test/t/disabled.def: Auto merged mysql-test/t/query_cache.test: Auto merged mysys/Makefile.am: Auto merged mysys/base64.c: Auto merged scripts/make_win_src_distribution.sh: Auto merged scripts/mysql_create_system_tables.sh: Auto merged scripts/mysql_fix_privilege_tables.sql: Auto merged sql/Makefile.am: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/ha_berkeley.cc: Auto merged sql/ha_berkeley.h: Auto merged sql/ha_federated.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/handler.h: Auto merged sql/item.cc: Auto merged sql/item_subselect.cc: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysqld.cc: Auto merged sql/opt_range.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/slave.cc: Auto merged sql/slave.h: Auto merged sql/sp.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_help.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_load.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_repl.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_show.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.h: Auto merged storage/heap/_check.c: Auto merged storage/heap/hp_create.c: Auto merged storage/innobase/include/Makefile.am: Auto merged storage/innobase/include/rem0rec.h: Auto merged storage/innobase/include/rem0rec.ic: Auto merged storage/innobase/row/row0ins.c: Auto merged storage/innobase/row/row0upd.c: Auto merged storage/myisam/mi_check.c: Auto merged storage/myisam/mi_delete.c: Auto merged storage/myisam/mi_rkey.c: Auto merged storage/myisam/mi_rnext_same.c: Auto merged storage/myisam/mi_search.c: Auto merged storage/myisam/mi_write.c: Auto merged storage/myisam/myisamchk.c: Auto merged storage/myisam/myisamdef.h: Auto merged storage/myisam/sort.c: Auto merged storage/myisammrg/myrg_queue.c: Auto merged storage/ndb/config/type_util.mk.am: Auto merged storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp: Auto merged storage/ndb/include/mgmapi/mgmapi_config_parameters.h: Auto merged storage/ndb/include/mgmapi/ndbd_exit_codes.h: Auto merged storage/ndb/include/transporter/TransporterCallback.hpp: Auto merged storage/ndb/src/common/mgmcommon/IPCConfig.cpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.cpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.hpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.unix.cpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.win32.cpp: Auto merged storage/ndb/src/common/transporter/Transporter.hpp: Auto merged storage/ndb/src/common/transporter/TransporterRegistry.cpp: Auto merged storage/ndb/src/common/util/Makefile.am: Auto merged storage/ndb/src/common/util/Parser.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Auto merged storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: Auto merged storage/ndb/src/kernel/error/ndbd_exit_codes.c: Auto merged storage/ndb/src/kernel/vm/FastScheduler.cpp: Auto merged storage/ndb/src/kernel/vm/TransporterCallback.cpp: Auto merged storage/ndb/src/kernel/vm/VMSignal.hpp: Auto merged storage/ndb/src/mgmapi/mgmapi.cpp: Auto merged storage/ndb/src/mgmsrv/ConfigInfo.cpp: Auto merged storage/ndb/src/mgmsrv/InitConfigFileParser.cpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvr.cpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvr.hpp: Auto merged storage/ndb/src/mgmsrv/Services.cpp: Auto merged storage/ndb/src/ndbapi/TransporterFacade.cpp: Auto merged storage/ndb/test/ndbapi/testBackup.cpp: Auto merged storage/ndb/test/ndbapi/testOperations.cpp: Auto merged storage/ndb/test/src/HugoCalculator.cpp: Auto merged storage/ndb/tools/ndb_condig.cpp: Auto merged strings/ctype-big5.c: Auto merged strings/ctype-ucs2.c: Auto merged support-files/mysql.spec.sh: Auto merged BUILD/SETUP.sh: manual merge configure.in: manual merge mysql-test/r/alter_table.result: manual merge sql/handler.cc: manual merge sql/mysql_priv.h: manual merge sql/records.cc: manual merge sql/share/errmsg.txt: manual merge sql/sql_table.cc: manual merge Fix labels sql/sql_update.cc: manual merge sql/table.cc: manual merge sql/unireg.cc: manual merge storage/ndb/config/type_ndbapi.mk.am: manual merge
358 lines
8.8 KiB
C++
358 lines
8.8 KiB
C++
/* Copyright (C) 2003 MySQL AB
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
//****************************************************************************
|
|
//
|
|
// AUTHOR
|
|
// Åsa Fransson
|
|
//
|
|
// NAME
|
|
// TransporterCallback
|
|
//
|
|
//
|
|
//***************************************************************************/
|
|
#ifndef TRANSPORTER_CALLBACK_H
|
|
#define TRANSPORTER_CALLBACK_H
|
|
|
|
#include <kernel_types.h>
|
|
#include "TransporterDefinitions.hpp"
|
|
|
|
|
|
/**
|
|
* Call back functions
|
|
*/
|
|
|
|
/**
|
|
* The execute function
|
|
*/
|
|
void
|
|
execute(void * callbackObj,
|
|
SignalHeader * const header,
|
|
Uint8 prio,
|
|
Uint32 * const signalData,
|
|
LinearSectionPtr ptr[3]);
|
|
|
|
/**
|
|
* A function to avoid job buffer overflow in NDB kernel, empty in API
|
|
* Non-zero return means we executed signals. This is necessary information
|
|
* to the transporter to ensure that it properly uses the transporter after
|
|
* coming back again.
|
|
*/
|
|
int
|
|
checkJobBuffer();
|
|
|
|
/**
|
|
* Report send length
|
|
*/
|
|
void
|
|
reportSendLen(void * callbackObj,
|
|
NodeId nodeId, Uint32 count, Uint64 bytes);
|
|
|
|
/**
|
|
* Report average receive length
|
|
*/
|
|
void
|
|
reportReceiveLen(void * callbackObj,
|
|
NodeId nodeId, Uint32 count, Uint64 bytes);
|
|
|
|
/**
|
|
* Report connection established
|
|
*/
|
|
void
|
|
reportConnect(void * callbackObj, NodeId nodeId);
|
|
|
|
/**
|
|
* Report connection broken
|
|
*/
|
|
|
|
void
|
|
reportDisconnect(void * callbackObj,
|
|
NodeId nodeId, Uint32 errNo);
|
|
|
|
#define TE_DO_DISCONNECT 0x8000
|
|
|
|
enum TransporterError {
|
|
TE_NO_ERROR = 0,
|
|
/**
|
|
* TE_ERROR_CLOSING_SOCKET
|
|
*
|
|
* Error found during closing of socket
|
|
*
|
|
* Recommended behavior: Ignore
|
|
*/
|
|
TE_ERROR_CLOSING_SOCKET = 0x1,
|
|
|
|
/**
|
|
* TE_ERROR_IN_SELECT_BEFORE_ACCEPT
|
|
*
|
|
* Error found during accept (just before)
|
|
* The transporter will retry.
|
|
*
|
|
* Recommended behavior: Ignore
|
|
* (or possible do setPerformState(PerformDisconnect)
|
|
*/
|
|
TE_ERROR_IN_SELECT_BEFORE_ACCEPT = 0x2,
|
|
|
|
/**
|
|
* TE_INVALID_MESSAGE_LENGTH
|
|
*
|
|
* Error found in message (message length)
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisconnect)
|
|
*/
|
|
TE_INVALID_MESSAGE_LENGTH = 0x3 | TE_DO_DISCONNECT,
|
|
|
|
/**
|
|
* TE_INVALID_CHECKSUM
|
|
*
|
|
* Error found in message (checksum)
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
TE_INVALID_CHECKSUM = 0x4 | TE_DO_DISCONNECT,
|
|
|
|
/**
|
|
* TE_COULD_NOT_CREATE_SOCKET
|
|
*
|
|
* Error found while creating socket
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
TE_COULD_NOT_CREATE_SOCKET = 0x5,
|
|
|
|
/**
|
|
* TE_COULD_NOT_BIND_SOCKET
|
|
*
|
|
* Error found while binding server socket
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
TE_COULD_NOT_BIND_SOCKET = 0x6,
|
|
|
|
/**
|
|
* TE_LISTEN_FAILED
|
|
*
|
|
* Error found while listening to server socket
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
TE_LISTEN_FAILED = 0x7,
|
|
|
|
/**
|
|
* TE_ACCEPT_RETURN_ERROR
|
|
*
|
|
* Error found during accept
|
|
* The transporter will retry.
|
|
*
|
|
* Recommended behavior: Ignore
|
|
* (or possible do setPerformState(PerformDisconnect)
|
|
*/
|
|
TE_ACCEPT_RETURN_ERROR = 0x8
|
|
|
|
/**
|
|
* TE_SHM_DISCONNECT
|
|
*
|
|
* The remote node has disconnected
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SHM_DISCONNECT = 0xb | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SHM_IPC_STAT
|
|
*
|
|
* Unable to check shm segment
|
|
* probably because remote node
|
|
* has disconnected and removed it
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SHM_IPC_STAT = 0xc | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* Permanent error
|
|
*/
|
|
,TE_SHM_IPC_PERMANENT = 0x21
|
|
|
|
/**
|
|
* TE_SHM_UNABLE_TO_CREATE_SEGMENT
|
|
*
|
|
* Unable to create shm segment
|
|
* probably os something error
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SHM_UNABLE_TO_CREATE_SEGMENT = 0xd
|
|
|
|
/**
|
|
* TE_SHM_UNABLE_TO_ATTACH_SEGMENT
|
|
*
|
|
* Unable to attach shm segment
|
|
* probably invalid group / user
|
|
*
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SHM_UNABLE_TO_ATTACH_SEGMENT = 0xe
|
|
|
|
/**
|
|
* TE_SHM_UNABLE_TO_REMOVE_SEGMENT
|
|
*
|
|
* Unable to remove shm segment
|
|
*
|
|
* Recommended behavior: Ignore (not much to do)
|
|
* Print warning to logfile
|
|
*/
|
|
,TE_SHM_UNABLE_TO_REMOVE_SEGMENT = 0xf
|
|
|
|
,TE_TOO_SMALL_SIGID = 0x10
|
|
,TE_TOO_LARGE_SIGID = 0x11
|
|
,TE_WAIT_STACK_FULL = 0x12 | TE_DO_DISCONNECT
|
|
,TE_RECEIVE_BUFFER_FULL = 0x13 | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SIGNAL_LOST_SEND_BUFFER_FULL
|
|
*
|
|
* Send buffer is full, and trying to force send fails
|
|
* a signal is dropped!! very bad very bad
|
|
*
|
|
*/
|
|
,TE_SIGNAL_LOST_SEND_BUFFER_FULL = 0x14 | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SIGNAL_LOST
|
|
*
|
|
* Send failed for unknown reason
|
|
* a signal is dropped!! very bad very bad
|
|
*
|
|
*/
|
|
,TE_SIGNAL_LOST = 0x15
|
|
|
|
/**
|
|
* TE_SEND_BUFFER_FULL
|
|
*
|
|
* The send buffer was full, but sleeping for a while solved it
|
|
*/
|
|
,TE_SEND_BUFFER_FULL = 0x16
|
|
|
|
/**
|
|
* TE_SCI_UNABLE_TO_CLOSE_CHANNEL
|
|
*
|
|
* Unable to close the sci channel and the resources allocated by
|
|
* the sisci api.
|
|
*/
|
|
,TE_SCI_UNABLE_TO_CLOSE_CHANNEL = 0x22
|
|
|
|
/**
|
|
* TE_SCI_LINK_ERROR
|
|
*
|
|
* There is no link from this node to the switch.
|
|
* No point in continuing. Must check the connections.
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_LINK_ERROR = 0x0017
|
|
|
|
/**
|
|
* TE_SCI_UNABLE_TO_START_SEQUENCE
|
|
*
|
|
* Could not start a sequence, because system resources
|
|
* are exumed or no sequence has been created.
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_UNABLE_TO_START_SEQUENCE = 0x18 | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_UNABLE_TO_REMOVE_SEQUENCE
|
|
*
|
|
* Could not remove a sequence
|
|
*/
|
|
,TE_SCI_UNABLE_TO_REMOVE_SEQUENCE = 0x19 | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_UNABLE_TO_CREATE_SEQUENCE
|
|
*
|
|
* Could not create a sequence, because system resources are
|
|
* exempted. Must reboot.
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_UNABLE_TO_CREATE_SEQUENCE = 0x1a | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_UNRECOVERABLE_DATA_TFX_ERROR
|
|
*
|
|
* Tried to send data on redundant link but failed.
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_UNRECOVERABLE_DATA_TFX_ERROR = 0x1b | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_CANNOT_INIT_LOCALSEGMENT
|
|
*
|
|
* Cannot initialize local segment. A whole lot of things has
|
|
* gone wrong (no system resources). Must reboot.
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_CANNOT_INIT_LOCALSEGMENT = 0x1c | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_CANNOT_MAP_REMOTESEGMENT
|
|
*
|
|
* Cannot map remote segment. No system resources are left.
|
|
* Must reboot system.
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_CANNOT_MAP_REMOTESEGMENT = 0x1d | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_UNABLE_TO_UNMAP_SEGMENT
|
|
*
|
|
* Cannot free the resources used by this segment (step 1).
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_UNABLE_TO_UNMAP_SEGMENT = 0x1e | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_UNABLE_TO_REMOVE_SEGMENT
|
|
*
|
|
* Cannot free the resources used by this segment (step 2).
|
|
* Cannot guarantee that enough resources exist for NDB
|
|
* to map more segment
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_UNABLE_TO_REMOVE_SEGMENT = 0x1f | TE_DO_DISCONNECT
|
|
|
|
/**
|
|
* TE_SCI_UNABLE_TO_DISCONNECT_SEGMENT
|
|
*
|
|
* Cannot disconnect from a remote segment.
|
|
* Recommended behavior: setPerformState(PerformDisonnect)
|
|
*/
|
|
,TE_SCI_UNABLE_TO_DISCONNECT_SEGMENT = 0x20 | TE_DO_DISCONNECT
|
|
|
|
/* Used 0x21 */
|
|
/* Used 0x22 */
|
|
};
|
|
|
|
/**
|
|
* Report error
|
|
*/
|
|
void
|
|
reportError(void * callbackObj, NodeId nodeId, TransporterError errorCode,
|
|
const char *info = 0);
|
|
|
|
void
|
|
transporter_recv_from(void* callbackObj, NodeId node);
|
|
|
|
#endif
|