Commit Graph

111 Commits

Author SHA1 Message Date
5138032fe5 Add shutdown support
The shutdown is now performed so that a shutdown message is
sent to all workers. When the workers receive that message, they
turn on a shutdown flag, which subsequently is checked in the poll
loop.
2017-04-20 13:51:16 +03:00
ab37333ce5 MXS_WORKER passed to poll_waitevents 2017-04-20 13:51:16 +03:00
016ed89b3e Move worker thread management to worker
The worker threads are now started by the workers themselves.
2017-04-20 13:51:16 +03:00
72977128f7 Introduce private worker header 2017-04-20 13:51:16 +03:00
c3cfc86a7b Merge branch '2.1' into develop 2017-04-19 18:19:13 +03:00
27e97a546d Remove superfluous logging
Just because of a debug build you do not want the transaction
parser to log.
2017-04-19 18:15:56 +03:00
ad1c05b015 Merge branch '2.1' into develop 2017-04-05 11:35:13 +03:00
a362bd0024 Add parameter backend_connect_attempts to monitor
This number (defaults to 1) sets how many times mon_connect_to_db
will try to connect to a backend before returning an error. Every
connection attempt may take backend_connect_timeout seconds to
complete.

Also refactored code a bit. Renamed mon_connect_to_db to
mon_ping_or_connect_to_db, since it does not connect if the connection
is already alive.
2017-04-03 09:56:22 +03:00
b458b63756 Use IPv6 for created listeners
When listeners are created, use the default values of [::]:3306.
2017-03-29 17:14:39 +03:00
b5c44be4c8 Add missing MXS_[BEGIN|END]_DECLS 2017-03-24 10:59:05 +02:00
bb1b7f9755 Compile server, service and session as C++ 2017-03-24 10:52:09 +02:00
6acd58e86c Compile monitor.c as C++ 2017-03-24 09:21:20 +02:00
9a22d1cb92 Compile filter.c as C++
The contents of the existing filter.cc was copied into filter.c that
subsequently was renamed to filter.cc.

The way the session is called as the last filter in the filter chain
is really dubious and ought to be rearranged so that the blind casting
of a session to a filter and back is not needed.
2017-03-24 09:21:20 +02:00
1a8ff4b813 MXS-1198: Add configurable listener retry interval
The maximum listener retry interval is now configurable.
2017-03-22 15:52:59 +02:00
b52cc4e56b Take modutil_MySQL_bypass_whitespace into use 2017-03-17 11:54:00 +02:00
5e39268e37 Remove support for TrxBoundaryMatcher
For the general case, regex matching simply will not do. The
regex becomes so hairy so it turns write-only, i.e. unmaintainable.
Regex matching is also slower than a handwritten custom parser.
2017-03-15 10:39:26 +02:00
c51cd8858d Minor optimizations to TrxBoundaryParser 2017-03-15 10:20:35 +02:00
96f0321b7e Add program for profiling TrxBoundaryParser 2017-03-15 09:35:15 +02:00
cab176b149 Fix handling of AUTOCOMMIT=ON 2017-03-15 09:35:15 +02:00
c2add97e30 Recognise various autocommit syntaxes
set autocommit=1
set global autocommit=1
set session autocommit=1
set @@global.autocommit=1
set @@session.autocommit=1
2017-03-15 09:35:15 +02:00
470de51e22 Handle whitespace in TrxBoundaryParser
TheBoundaryMatcher is not updated as it is likely it will be removed
altogether. A regex that accepts comments in all relevant places becomes
so hairy it is unmaintainable. It seems that the only working solution
would be to first remove all comments and then perform the regex.
2017-03-15 09:35:15 +02:00
d5fc54a9de Handle WITH CONSISTENT SNAPSHOT as well
TrsBoundaryParser now capable of parsing WITH CONSISTENT
SNAPSHOT transaction statements as well.
2017-03-15 09:35:15 +02:00
faa0dea2ce Add TrxBoundaryMatcher
A class capble of detecting statements that change the transaction
state and autocommit mode. The detection is done using regexes.

There is still some expanding and optimization to be done.
2017-03-15 09:35:15 +02:00
74fe9fb911 Add class TrxBoundaryParser
A class capble of detecting statements that change the transaction
state and autocommit mode.

There are still some expansion and optimization to be done.
2017-03-15 09:35:15 +02:00
8e81941058 Enable trx boundary detection using regexes
Transaction boundaries can now be detected using regexes.
All else being equal, it gives a 10% performance improvement
compared to qc-based detection.

In a subsequent change, mysql_client.c will be modified to use
qc_get_trx_type_mask() instead of qc_get_type_mask().

Currently the use of regex matching is turned on using an
environment variable. That will change.
2017-03-15 09:35:15 +02:00
49cc2b52e3 Merge branch '2.1.0' into 2.1 2017-02-15 08:44:55 +02:00
5648f708af Update license to BSL 1.1 2017-02-14 21:42:28 +02:00
ce5cd69eb3 Remove unused locks and variables
Removed unused spinlocks from DCBs, sessions and the MySQL protocol
structs. They were used in a context where only one thread has access to
the structure.

Removed unused member variables from DCBs.
2017-02-08 15:31:17 +02:00
1f9b18e3bc Split secrets.h to public and core + miscellaneous cleanup
Also, changed some function names to this_style from thisStyle. More of
this in later commits.
2017-01-27 15:33:52 +02:00
6cc205dafa Remove redefinition of QUEUE_CONFIG
Causes compile to fail on Centos 7.
2017-01-27 15:22:54 +02:00
3b716bc707 Split queuemanager.h to public and core headers
Almost everything was moved to core.
2017-01-26 17:05:17 +02:00
8d07604436 Split maxscale.h to public and private parts
This header defines some general functions and maxscale main() return
values. Most of it is still public, but there were some functions
which were moved to a core header.
2017-01-26 11:17:25 +02:00
7d51864402 Clean config.h some more
Moved some typedefs to router.h and server.h, changed a few
constants to these enums. Renamed some types in config.h to
remove "Gateway".

There are still some functions in the public header which are
only used in core, but they seem to fit the theme of public functions
so were not moved.
2017-01-25 16:05:51 +02:00
fe1863bb49 Remove bitmask.h & .c, since the container is no longer used 2017-01-24 14:28:28 +02:00
b187afdcf4 Move config_runtime.h and externcmd.h to core
+ some cleanup
2017-01-24 13:05:21 +02:00
641896872e Rename GW_AUTHENTICATOR and GW_BITMASK + cleanup 2017-01-24 10:03:36 +02:00
9430da94b9 Further cleanup of monitor headers 2017-01-23 14:16:34 +02:00
7723641687 Ignore relay master and external slave state changes
When the relay master or external slave states change, they should be
ignored in the current implementation. When the relay master and slave of
external master events are added, the events can be enabled.
2017-01-23 13:38:56 +02:00
8cffa4ad58 Divide poll.h to core and public headers
Also some cleanup of other headers.
2017-01-20 17:15:27 +02:00
dbeb208a5c Remove unnecessary function from header
The function was only used in one place.

Also added a debug assertion for the monitor event detection mechanism.
2017-01-19 16:03:05 +02:00
eff34b91fb Move modules.h to core/maxscale
Also remove some unnecessary includes + cleanup
2017-01-19 15:53:25 +02:00
53c5b475ad More cleanup of monitor.h
Move some more functions into core header + miscellaneous cleanup
2017-01-19 15:32:40 +02:00
02a8f7492e Divide session.h to internal and interface headers
Definitions and function used by core are in
server/core/maxscale/session.h
Definitions and function used by plugins are in
include/maxscale/session.h
2017-01-19 15:19:40 +02:00
7ed7f972b1 Divide monitor.h to internal and interface headers similar to filter.h
Definitions and function used by core are in
server/core/maxscale/monitor.h
Definitions and function used by plugins are in
include/maxscale/monitor.h
2017-01-19 09:50:48 +02:00
fb771c8a2e Rename public types and constants in session.h
Preparing to split session.h into module and core sections.
2017-01-17 16:30:14 +02:00
0b6b9c3d81 Format core source code and headers
Formatted core source code and headers with Astyle.
2017-01-17 14:47:50 +02:00
8d2f4707a4 Remove superfluous typedef 2017-01-17 09:31:53 +02:00
d054bc9b04 Split config.h into external and internal parts
The external config.h header defined functions and structures that are
intended to be used by modules. The internal header contains functions
that are used only by the MaxScale core.
2017-01-16 11:02:34 +02:00
cbdab48237 Remove unused functions from config.h
The header is divided into two parts, an external and an internal one. The
actual splitting is done in a later commit and this commit only prepares
the header for the split.
2017-01-16 10:56:33 +02:00
c13a2eeb33 Hide definition of MXS_FILTER_DEF
MXS_FILTER_DEF is now private the MaxScale core.
2017-01-16 10:47:00 +02:00