Merge branch 'develop' into MXS-129
This commit is contained in:
commit
5936916e04
@ -159,6 +159,7 @@ install(FILES ${ERRMSG} DESTINATION ${MAXSCALE_VARDIR}/lib/maxscale
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/COPYRIGHT DESTINATION ${MAXSCALE_SHAREDIR})
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/README DESTINATION ${MAXSCALE_SHAREDIR})
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION ${MAXSCALE_SHAREDIR})
|
||||
install(FILES Documentation/maxscale.1 DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1)
|
||||
|
||||
# Install startup scripts and ldconfig files
|
||||
if(WITH_SCRIPTS)
|
||||
|
@ -28,7 +28,7 @@ You will need to install all of the following packages for all versions of RHEL,
|
||||
|
||||
```
|
||||
gcc gcc-c++ ncurses-devel bison glibc-devel cmake libgcc perl make libtool
|
||||
openssl-devel libaio libaio-devel librabbitmq-devel
|
||||
openssl-devel libaio libaio-devel librabbitmq-devel libcurl-devel pcre-devel
|
||||
```
|
||||
|
||||
In addition, if you wish to to build an RPM package include:
|
||||
@ -68,7 +68,7 @@ These packages are required on all versions of Ubuntu and Debian.
|
||||
|
||||
```
|
||||
build-essential libssl-dev libaio-dev ncurses-dev bison
|
||||
cmake perl libtool librabbitmq-dev
|
||||
cmake perl libtool librabbitmq-dev libcurl-dev libpcre3-dev
|
||||
```
|
||||
|
||||
If you want to build a DEB package, you will also need:
|
||||
|
69
Documentation/maxscale.1
Normal file
69
Documentation/maxscale.1
Normal file
@ -0,0 +1,69 @@
|
||||
.TH maxscale 1
|
||||
.SH NAME
|
||||
maxscale - The intelligent proxy
|
||||
.SH SYNOPSIS
|
||||
.B maxscale
|
||||
[\fIOPTIONS...\fR]
|
||||
.SH DESCRIPTION
|
||||
The MariaDB Corporation MaxScale is an intelligent proxy that allows forwarding of
|
||||
database statements to one or more database servers using complex rules,
|
||||
a semantic understanding of the database statements and the roles of
|
||||
the various servers within the backend cluster of databases.
|
||||
|
||||
MaxScale is designed to provide load balancing and high availability
|
||||
functionality transparently to the applications. In addition it provides
|
||||
a highly scalable and flexible architecture, with plugin components to
|
||||
support different protocols and routing decisions.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BR "-d, --nodaemon"
|
||||
Run MaxScale in the terminal process
|
||||
.TP
|
||||
.BR -f " \fIFILE\fB, --config=\fIFILE\fR"
|
||||
Relative or absolute pathname of MaxScale configuration file to load.
|
||||
.TP
|
||||
.BR -l "[\fIfile|shm\fB], --log=[\fIfile|shm\fB]"
|
||||
Log trace and debug logs to file or shared memory. The debug and trace logs are disabled by default and if enabled, will log to shared memory.
|
||||
.TP
|
||||
.BR -L " \fIPATH\fB, --logdir=\fIPATH\fB"
|
||||
Path to log file directory.
|
||||
.TP
|
||||
.BR -D " \fIPATH\fB, --datadir=\fIPATH\fB"
|
||||
Path to data directory. This is where the embedded mysql tables are stored in addition to other MaxScale specific data.
|
||||
.TP
|
||||
.BR -C " \fIPATH\fB, --configdir=\fIPATH\fB"
|
||||
Path to configuration file directory. MaxScale will look for the \fImaxscale.cnf\fR file from this folder.
|
||||
.TP
|
||||
.BR -B " \fIPATH\fB, --libdir=\fIPATH\fB"
|
||||
Path to module directory. Modules are only searched from this folder.
|
||||
.TP
|
||||
.BR -A " \fIPATH\fB, --cachedir=\fIPATH\fB"
|
||||
Path to cache directory. This is where MaxScale stores cached authentication data.
|
||||
.TP
|
||||
.BR -P " \fIPATH\fB, --piddir=\fIPATH\fB"
|
||||
Location of MaxScale's PID file.
|
||||
.TP
|
||||
.BR -U " \fIUSER\fB, --user=\fIUSER\fB"
|
||||
Run MaxScale as another user. The user ID and group ID of this user are used to run MaxScale.
|
||||
.TP
|
||||
.BR -s " [\fIyes\fB|\fIno\fB], --syslog=[\fIyes\fB|\fIno\fB]"
|
||||
Log messages to syslog.
|
||||
.TP
|
||||
.BR -S " [\fIyes\fB|\fIno\fB], \fB--maxscalelog=[\fIyes\fB|\fIno\fB]"
|
||||
Log messages to MaxScale's own log files.
|
||||
.TP
|
||||
.BR "-v, --version"
|
||||
Print version information and exit.
|
||||
.TP
|
||||
.BR "-?, --help"
|
||||
Show the help information for MaxScale and exit.
|
||||
|
||||
.SH EXAMPLES
|
||||
Tutorials on GitHub:
|
||||
.UR https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Documentation-Contents.md#tutorials
|
||||
.UE
|
||||
.SH SEE ALSO
|
||||
The MaxScale documentation on GitHub:
|
||||
.UR https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Documentation-Contents.md
|
||||
.UE
|
@ -38,7 +38,7 @@ then
|
||||
cp @CMAKE_INSTALL_PREFIX@/@MAXSCALE_SHAREDIR@/maxscale.service /usr/lib/systemd/system
|
||||
fi
|
||||
/sbin/ldconfig
|
||||
|
||||
mandb
|
||||
cat <<EOF >& 2
|
||||
********** Notice: MaxScale 1.2 Changes **************
|
||||
|
||||
|
@ -194,7 +194,8 @@ DCB *rval;
|
||||
rval->polloutbusy = 0;
|
||||
rval->writecheck = 0;
|
||||
rval->fd = DCBFD_CLOSED;
|
||||
|
||||
rval->server = NULL;
|
||||
rval->service = NULL;
|
||||
rval->evq.next = NULL;
|
||||
rval->evq.prev = NULL;
|
||||
rval->evq.pending_events = 0;
|
||||
|
@ -983,7 +983,7 @@ int main(int argc, char **argv)
|
||||
char* tmp_var;
|
||||
int option_index;
|
||||
int logtofile = 0; /* Use shared memory or file */
|
||||
int syslog_enabled = 1; /** Log to syslog */
|
||||
int syslog_enabled = 0; /** Log to syslog */
|
||||
int maxscalelog_enabled = 1; /** Log with MaxScale */
|
||||
ssize_t log_flush_timeout_ms = 0;
|
||||
sigset_t sigset;
|
||||
@ -1126,26 +1126,34 @@ int main(int argc, char **argv)
|
||||
}
|
||||
break;
|
||||
case 'S':
|
||||
if(strstr(optarg,"="))
|
||||
{
|
||||
strtok(optarg,"= ");
|
||||
maxscalelog_enabled = config_truth_value(strtok(NULL,"= "));
|
||||
}
|
||||
else
|
||||
{
|
||||
maxscalelog_enabled = config_truth_value(optarg);
|
||||
}
|
||||
{
|
||||
char* tok = strstr(optarg,"=");
|
||||
if(tok)
|
||||
{
|
||||
tok++;
|
||||
if(tok)
|
||||
maxscalelog_enabled = config_truth_value(tok);
|
||||
}
|
||||
else
|
||||
{
|
||||
maxscalelog_enabled = config_truth_value(optarg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
if(strstr(optarg,"="))
|
||||
{
|
||||
strtok(optarg,"= ");
|
||||
syslog_enabled = config_truth_value(strtok(NULL,"= "));
|
||||
}
|
||||
else
|
||||
{
|
||||
syslog_enabled = config_truth_value(optarg);
|
||||
}
|
||||
{
|
||||
char* tok = strstr(optarg,"=");
|
||||
if(tok)
|
||||
{
|
||||
tok++;
|
||||
if(tok)
|
||||
syslog_enabled = config_truth_value(tok);
|
||||
}
|
||||
else
|
||||
{
|
||||
syslog_enabled = config_truth_value(optarg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'U':
|
||||
if(set_user(optarg) != 0)
|
||||
|
@ -18,9 +18,11 @@
|
||||
*
|
||||
* Copyright MariaDB Corporation Ab 2015
|
||||
*/
|
||||
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <string.h>
|
||||
/** Default file locations, configured by CMake */
|
||||
static const char* default_cnf_fname = "maxscale.cnf";
|
||||
static const char* default_configdir = "/etc/";
|
||||
|
@ -305,7 +305,9 @@ char *remote, *userName;
|
||||
sprintf(my_session->filename, "%s.%d",
|
||||
my_instance->filebase,
|
||||
my_instance->sessions);
|
||||
atomic_add(&my_instance->sessions,1);
|
||||
|
||||
// Multiple sessions can try to update my_instance->sessions simultaneously
|
||||
atomic_add(&(my_instance->sessions), 1);
|
||||
|
||||
if (my_session->active)
|
||||
{
|
||||
|
@ -323,6 +323,8 @@ char *server_string;
|
||||
int read_timeout = mon->read_timeout;
|
||||
int write_timeout = mon->write_timeout;
|
||||
|
||||
if(database->con)
|
||||
mysql_close(database->con);
|
||||
database->con = mysql_init(NULL);
|
||||
|
||||
mysql_options(database->con, MYSQL_OPT_CONNECT_TIMEOUT, (void *)&connect_timeout);
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include <modinfo.h>
|
||||
#include <sys/stat.h>
|
||||
#include <modutil.h>
|
||||
#include <netinet/tcp.h>
|
||||
|
||||
MODULE_INFO info = {
|
||||
MODULE_API_PROTOCOL,
|
||||
@ -1369,6 +1370,9 @@ int gw_MySQLListener(
|
||||
LOGIF(LE, (skygw_log_write_flush(LOGFILE_ERROR,"Error: Failed to set socket options. Error %d: %s",errno,strerror(errno))));
|
||||
}
|
||||
|
||||
if((syseno = setsockopt(l_so, IPPROTO_TCP, TCP_NODELAY, (char *)&one, sizeof(one))) != 0){
|
||||
LOGIF(LE, (skygw_log_write_flush(LOGFILE_ERROR,"Error: Failed to set socket options. Error %d: %s",errno,strerror(errno))));
|
||||
}
|
||||
|
||||
// set NONBLOCKING mode
|
||||
setnonblocking(l_so);
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <skygw_types.h>
|
||||
#include <skygw_utils.h>
|
||||
#include <log_manager.h>
|
||||
#include <netinet/tcp.h>
|
||||
|
||||
/** Defined in log_manager.cc */
|
||||
extern int lm_enabled_logfiles_bitmask;
|
||||
@ -812,6 +813,23 @@ int gw_do_connect_to_backend(
|
||||
goto close_so;
|
||||
}
|
||||
|
||||
int one = 1;
|
||||
if(setsockopt(so, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)) != 0)
|
||||
{
|
||||
LOGIF(LE, (skygw_log_write_flush(
|
||||
LOGFILE_ERROR,
|
||||
"Error: Failed to set socket options "
|
||||
"%s:%d failed.\n\t\t Socket configuration failed "
|
||||
"due %d, %s.",
|
||||
host,
|
||||
port,
|
||||
errno,
|
||||
strerror(errno))));
|
||||
rv = -1;
|
||||
/** Close socket */
|
||||
goto close_so;
|
||||
}
|
||||
|
||||
/* set socket to as non-blocking here */
|
||||
setnonblocking(so);
|
||||
rv = connect(so, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
|
||||
|
Loading…
x
Reference in New Issue
Block a user