Commit Graph

12908 Commits

Author SHA1 Message Date
e5cdefa69d MXS-2300: Add history pruning test
The test checks that the session command history pruning works as
expected.
2019-01-31 14:23:27 +02:00
260ce9b8b8 MXS-2300: Add session command pruning
This commit adds a new parameter that, when enabled, prunes the session
command history to a known length. This makes it possible to keep a
client-side pooled connection open indefinitely at the cost of making
reconnections theoretically unsafe. In practice the maximum history length
can be set to a value that encompasses a single session using the pooled
connection with no risk to session state integrity. The default history
length of 50 commands is quite likely to be adequate for the majority of
use-cases.
2019-01-31 14:23:26 +02:00
bf4aa1ab2c MXS-2295: Keep the COM_CHANGE_USER command
If the whole session command history is cleared, the COM_CHANGE_USER is
lost and the connections can end up using different users.
2019-01-31 14:23:26 +02:00
f39f27cd7b MXS-2295: Session command loop test case
Test executes various session commands in a loop and makes sure a
COM_CHANGE_USER resets the history.
2019-01-31 14:23:26 +02:00
2e809524d1 MXS-2295: Reset session commands on connection reset
When the connection state is reset by executing a COM_CHANGE_USER or
COM_RESET_CONNECTION, readwritesplit does not need to store the session
command history that was executed before it. With this, pooled connections
will effectively behave like normal connections if the pooling mechanism
is smart enough to reset the connection. This also prevents unwanted
visibility into the session states of other connections.
2019-01-31 14:23:26 +02:00
24c9b62a2f Add verbose logging for session command failures
If the routing of a session command fails due to problems with the backend
connections, a more verbose error message is logged. The added status
information in the Backend class makes tracking the original cause of the
problem a lot easier due to knowing where, when and why the connection was
closed.
2019-01-31 14:23:26 +02:00
df9335382d Fix qc cache memory usage message
A zero value would get printed as -nanYiB.
2019-01-31 14:23:16 +02:00
da07672778 Fix query_classifier_cache_size
The query_classifier_cache_size was placed in the wrong section.
2019-01-31 14:23:16 +02:00
a9f6955fc8 Revert "add systemd-dev package to the build env"
This reverts commit da6d358f9fee7cb7302f082f179c45f581e681d3.
2019-01-31 14:07:52 +02:00
abaa228987 Add extra definitions to debug build service files
The unlimited core dumps are now only enabled for debug builds.
2019-01-31 13:14:46 +02:00
b18467e17e Add direct mode to Worker::execute()
Sometimes that's what you want, but primarily for completeness'
sake and it makes AUTO more sensical as it essentially chooses
beteen DIRECT and QUEUED mode.
2019-01-31 10:04:55 +02:00
f0abe9cbdc add /bin/sh before prlimit command in service start 2019-01-30 23:31:45 +02:00
45f85a2740 add prlimit command to service start 2019-01-30 18:45:24 +02:00
556ea552aa MXS-2273 Add system test 2019-01-30 13:04:32 +02:00
8204b7d875 MXS-2273 Fix issues related to changes in Monitor 2019-01-30 12:38:36 +02:00
b650dd4f67 MXS-2273 Drop unnecessary SERVER prefix in names
MXS_MONITORED_SERVER provides enough scope.
2019-01-30 12:16:57 +02:00
bc4a52acb0 MXS-2273 Set SERVER_BEING_DRAINED properly
The maintenance and being-drained modes are now set using the same
mechanism.
2019-01-30 12:16:57 +02:00
e3d74bd18d MXS-2273 Generalise names
The maintenance flag and being-drain flags will be turned on using
the same variable, so the variable and constant names needs to be
generalized.
2019-01-30 12:16:57 +02:00
159d9ccba9 MXS-2273 Move constants to more appropriate locations
Constants now used in the context of MXS_MONITORED_SERVER or
Monitor are now moved from SERVER to MXS_MONITORED_SERVER or
Monitor, respectively.
2019-01-30 12:16:57 +02:00
57a94b417d MXS-2273 Move maint_request from SERVER to MXS_MONITORED_SERVER
The _request_ for setting the status of a server relates to the
monitor and its MXS_MONITORED_SERVER, not to the SERVER itself.
2019-01-30 12:16:57 +02:00
727d3feb3b MXS-2273 Move code for setting maintenance bit to monitor.cc
Applies to being-drained as well.

Better that this special handling is handled by Monitor that needs it.
2019-01-30 12:16:57 +02:00
05b650ed91 MXS-2273 Update release notes regarding draining
TODO: This much explanation in the release notes is a bit too
much, the beef should be moved somewhere else and the release
notes simply refer to that.
2019-01-30 12:16:57 +02:00
8e59f4efbd MXS-2273 A master is a master even if it is not connectible
When looking for a master, if it does exist it should be found
even if it is not connectible. The fact that it is not connectible
should be dealt with when a connection is created.
2019-01-30 12:16:57 +02:00
117f89a409 MXS-2273 Deal with master being drained at RWS connect
If a master is found but it is being drained, the connection attempt
is rejected if the master failure mode is fail_instantly.

In that case the logged message makes it plain that it is the draining
that is the reason for the connection attempt to fail.
2019-01-30 12:16:57 +02:00
0e92affcc3 MXS-2273 Honour BEING_DRAINED in Backend::can_connect()
This will cause the drain bit to be honoured in RWS and Cat routers.
2019-01-30 12:16:57 +02:00
c2d3bdf7ef MXS-2273 Make schemarouter honour BEING_DRAINED bit
The schema router now deals with the being drained bit the same way
it deals with the maintenance bit, that is, a server being drained will
simply be ignored.

TODO: This behaviour needs to be document.
TODO: It seems the schema router simply ignores the maintenance bit
      once a connection has been establisdhed.
2019-01-30 12:16:57 +02:00
b564089afe MXS-2273 Take BEING_DRAINED bit into account in RCR
Also check when looking for the root master that not only the server ref
but also the referred to server is active.
2019-01-30 12:16:57 +02:00
a205c70374 MXS-2273 Allow the setting and clearing of BEING_DRAINED bit
Currently the bit is set so that is may be overwritten by the monitor
if the setting of the bit takes place while the monitor is performing
its monitor loop.
2019-01-30 12:16:57 +02:00
1f47e52c7b MXS-2273 Introduce SERVER_BEING_DRAINED bit
With this bit set, existing connections to a server should not be
closed, but no new connections should be created to the server.

The bits have also slight been rearranged.
- Bits 0 - 15 are now reserved for bits applicable to all servers
- Bits 16 - 31 are monitor specific

Further, the cases whether a server can be connected to and whether
it can be used, but be separated.
2019-01-30 12:16:57 +02:00
f94a28f033 maxscale-system-test: Inherit compiler flags
Inherit compiler flags when building maxscale-system-test from
main cmake file.
2019-01-30 12:09:16 +02:00
da6d358f9f add systemd-dev package to the build env 2019-01-29 14:14:46 +02:00
aab7ab7dee add core dump configiration line to maxscale.service 2019-01-29 12:06:33 +02:00
fcd3a6a384 Remove erroneous whitespace from config files
Some whitespace was missed.
2019-01-29 11:18:41 +02:00
16fc920d33 MXS-2299: Hints always take precedence
Hints should override all statement level routing decisions that would
otherwise be done based on the query type.
2019-01-28 18:36:52 +02:00
6d88afbf55 MXS-2038: Fix debug assertion
A query that is classified as a write but has a hint that tells to route
it to a slave is not unexpected ever since the 2.1 version of MaxScale.
2019-01-28 18:36:52 +02:00
f335dba2c0 Fix stack buffer overflow in compare
The buffer was three characters short.
2019-01-28 17:35:27 +02:00
6326172325 MXS-2271 Rename basic Monitor fields
Adds the m_-prefix.
2019-01-28 15:41:00 +02:00
cef4e836bc MXS-2271 Store monitored servers in a vector
The array is still a public member because it's used in several non-member functions.
2019-01-28 15:41:00 +02:00
6322fd37bf Merge branch '2.2' into 2.3 2019-01-28 15:34:09 +02:00
9083ea2d02 MXS-2290 Reject use of whitespace in section names
Whitespace in section names was deprecated in 2.2 and in 2.4 it
will be rejected.
2019-01-28 12:22:28 +02:00
f78df53f30 MXS-2274 Add test
Check that use of reserved names (those starting with "@@") in
configuration file is rejected.
2019-01-28 12:22:28 +02:00
b078eb2cca Add server state to routing hint log message
If a server was not chosen as the target of a routing hint, the server
status would not be logged. By logging the server state in the message, it
is easier to figure out why a server wasn't chosen as the routing target.
2019-01-28 09:27:13 +02:00
2c95119a3b Replace STRTARGET macro
The macro was extremely unwieldly to update and made the addition of debug
assertions harder. Rewriting it as an inline function makes this possible.
2019-01-28 09:27:13 +02:00
546b80de4b MXS-2271 Move monitor interval to settings container 2019-01-25 13:46:01 +02:00
10dc0f53e0 MXS-2177 Move check_monitor_permissions() into class 2019-01-25 13:46:01 +02:00
ddaba28d78 Merge branch '2.3' into develop 2019-01-25 12:45:58 +02:00
9f1619f4da MXS-2225 Provide documentation regarding default max[admin|ctrl] user 2019-01-25 12:45:25 +02:00
92b27500c7 MXS-2276 Fix things due to MXS_MONITOR -> Monitor change 2019-01-25 10:30:27 +02:00
42b3402a71 MXS-2276 Use dynamic servers also for cluster check
Once the monitor has been able to connect to a clustrix node
and obtain the clustrix nodes, it'll primarily use those nodes
when looking for a Clustrix node to be used as the "hub".
With this change it is sufficient (but perhaps unwise) to provide
a single node boostrap node in the configuration file.

Some other rearrangements and renamings of functions has also been
made.
2019-01-25 10:30:27 +02:00
0fe5b0bec9 MXS-2276 Expose lower level mon_ping_or_connect_to_db
The functionality is useful also when you do not have a
MXS_MONITORED_SERVER instance.
2019-01-25 10:28:34 +02:00