
poll.c Removed mutex from epoll_wait. Removed read and write mutexes from poll_waitevents. session.c If session_alloc fails, instead of calling directly free(session), call session_free, which decreases refcounter and only frees session when there are no references left. Added session_unlink_dcb function which removes link from session and optionally sets the dcb->session pointer to NULL. readconnection.h, readwritesplit.h Added check fields to ROUTER_CLIENT_SES strct as well as lock, version number (not used yet) and closed flag. mysql_backend.c gw_read_backend_event: if backend_protocol->state was set to MYSQL_AUTH_RECV, function returned, which was unnecessary. If mysql state became MYSQL_AUTH_FAILED, router client session was closed. Removed unnecessary NULL checks because rsession is not allowed to be NULL. Similarly, removed other NULL checks and replaced them with asserts checking that router client session is not NULL at any phase. mysql_client.c Removed unused code blocks. Polished log commands. Replaced router client sessions NULL checks with asserts. mysql_common.c mysql_send_custom_error: if called with dcb == NULL, return. readconnroute.c Replaced malloc with calloc. Added functions rses_begin_router_action and rses_exit_router_action. If router client session is not closed, they take a lock and release it, respectively. Those functions are used for protecting all operations which modify the contents of router client session struct. readwritesplit.c Identical changes than in readconnroute.c skygw_debug.h Added check number and - macro for ROUTER_CLIENT_SES, and added COM_QUIT to STRPACKETTYPE.
/** \mainpage MaxScale by SkySQL The SkySQL MaxScale is an intelligent proxy that allows forwarding of database statements to one or more database server user complex rules and a semantic understanding of the database satements and the roles of the various servers within the backend cluster of databases. The MaxScale is designed to provided load balancing and high avilability functionality transparantly to the applications. In addition it provides a highly scalable and flexibile architecture, with plugin components to support differnt protocols and routing decissions. The MaxScale is implemented in C and makes entensive use of the asynchronous I/O capabilities of the Linux operating system. The epoll system is used to provide the event driven framework for the input and output via sockets. The protocols are implemented as external shared object modules which can be loaded and runtime. These modules support a fixed interface, communicating the entries points via a structure consisting of a set of function pointers. This structured is called the "module object". The code that routes the queries to the database servers is also loaed as external shared objects and are referred to as routing modules. \section Building Building the MaxScale Edit the file build_gateway.inc in your skygateway directory and set the ROOT_PATH and MARIADB_SRC_PATH variables to the location in which you checked out the code and the location of your MariaDB source. Build the libmysqld in $MARIADB_SRC_PATH Go to the sky gateway directory and do a make depend to update all the dependency files and then do a make. This should get you all the things built that you need. Other make targets are available install - Installs the binary and the modules in the location defined by the make variable DEST ctags - Build tags files for the vi editor documentation - Build the doxygen documentation depend - Update the dependencies used by the makefiles Two files are required for the libmysqld library that is used within MaxScale, /usr/local/mysql/share/english/errmsg,sys and a my.cnf file with the following: [mysqld] max_connections=4096 \section Running Running the MaxScale The gateway consists of a core executable and a number of modules that implement the different protocols and routing algorithms. These modules are built as shared objects that are loaded on demand. In order for the gateway to find these modules it will search using a predescribed search path. The rules are: 1. Look in the current directory for the module 2. Look in $MAXSCALE_HOME/modules 3. Look in /usr/local/skysql/MaxScale/modules Configuration is read by default from the file $MAXSCALE_HOME/etc/MaxScale.cnf, /etc/MaxScale.cnf, an example file is included in the root of the source tree. The default location can be overriden by use of the -c flag on the command line. This should be immediately followed by the path to the configuration file. */
Description
Languages
C
50.9%
C++
30.8%
Shell
3.7%
HTML
3.2%
Tcl
3.1%
Other
8.1%