Commit Graph

7642 Commits

Author SHA1 Message Date
36b666898c Fix connection merging
The conditional was inverted.
2018-10-16 16:09:38 +03:00
e0c46a9c9a Initialize server version string
Could read uninitialized data.
2018-10-16 16:09:38 +03:00
f518b38364 Initialize disk_space_checked
Was reading an uninitialized value.
2018-10-16 16:09:38 +03:00
2d61b78439 Fix low disk space maintenance
The setting didn't work because the code updated a status flag which
would be overwritten before being read. Also, promotion code now checks
that the server is not in maintenance.
2018-10-16 16:09:38 +03:00
0c203fa02d Don't redirect duplicate connections
The redirection method checks if a slave connection to the redirection
target already exists. If so, the connection is not modified. Also, failover
better detects duplicate connections during promotion.
2018-10-16 16:09:38 +03:00
e930270b9c Use copy when checking removed connections
The function modifies the reference parameter contents indirectly.
2018-10-16 16:09:38 +03:00
f554ef770b Allow switchover for arbitrary topologies
The demoted server no longer needs to be the master.
2018-10-16 16:09:38 +03:00
0cf8ea43f7 Redirect slaves of promotion target
This affects situations where the promoted server is a relay or multimaster
group member.
2018-10-16 16:09:38 +03:00
20af9afb49 Merge branch '2.2' into 2.3 2018-10-16 11:10:48 +03:00
92057f6ff9 Add more logging to readwritesplit
When a read-only transaction fails due to a connection error, no message
would be logged. Also added an info level message for the case when a
backend connection would get closed before the session is in the correct
state and a debug assertion that the router session should never be closed
when the handleError method is called.
2018-10-16 11:04:57 +03:00
2f76c48b06 Clarify server version error message
The required server version is now printed.
2018-10-11 11:41:46 +03:00
c0945020ee Only running slave connections are checked for non-gtid replication
This prevents auto-failover from being disabled due to recently generated or
non-functional slave connections.
2018-10-11 11:41:46 +03:00
f2067fcf7c Monitor cleanup
Removes unused code, compacts lines, moves code.
No functional changes.
2018-10-11 11:39:05 +03:00
d0444ff054 SlaveStatus::to_short_string() uses member field
The owner server name is now stored in a field.
2018-10-10 17:26:48 +03:00
2f1512a22d Cleanup slave connection removal during promotion/demotion
The removing and slave status updating is now separated to a function.
As the MariaDBServer object now contains the updated slave connections,
keeping track of removed connections is no longer required.
2018-10-09 14:29:49 +03:00
c10fab977d Cleanup slave connection copy & merge
The two cases are now separated. In switchover, the promotion and
demotion targets can swap connections between each other without worry.
In failover, the two connection lists must be merged semi-intelligently.

The slave connections of the two servers are now saved to the operation
descriptor object at the start of the operation. This allows slave status
updating during the operation.
2018-10-09 14:29:49 +03:00
4d6f961695 Cleanup mariadbserver.hh 2018-10-09 14:29:49 +03:00
5cc4eb08ee Clean up mariadbmon.hh 2018-10-09 14:29:49 +03:00
68d65682b5 Reorganize MariaDBServer code
The server-class keeps growing, so the additional classes are moved out of
the main class file.
2018-10-09 14:29:49 +03:00
9c52ba5c07 Update release notes and documentation for the Throttle Filter
and Adaptive Routing
2018-10-05 13:52:42 +03:00
c10f56bea1 Fix binlogfilter build failure
The macros weren't apparently included so swapped them to explicit format
strings.
2018-10-05 11:00:08 +03:00
75ea1b6ea1 Fix formatting of new(std::nothrow)
The code previously formatted everything as `new( std::nothrow)`.
2018-10-04 21:50:44 +03:00
a398da58a4 Add sleep to execute_cmd_time_limit
If the query fails instantly, the retries end up busy-looping. Now
each try is at least one second.
2018-10-04 20:19:57 +03:00
707506feae A slave must have running slaves to be a relay master
This prevents some questionable status assignments, but also means that
the Relay Master status can be lost if a slave goes down. This is
contrary to Master status which is not lost if slaves go down. Fixes
mxs1961_standalone_rejoin.
2018-10-04 20:16:29 +03:00
374ae2fc9b Only redirect usable slaves
Prevents pointless retrying/waiting when redirecting slaves.
2018-10-04 20:11:12 +03:00
3b1b63d939 MXS-1777 Change LOWEST_RESPONSE_TIME to ADAPTIVE_ROUTING
LOWEST_RESPONSE_TIME is not quite correct, and marketing material
will call it Adaptive Routing, so better match that.
2018-10-04 19:26:16 +03:00
ef948042f0 Fix race in housekeeper
Could and indeed did lead to housekeeper exiting immediately.
2018-10-04 18:06:12 +03:00
e56492c23f MXS-1777 Make "Sample Max" of the server EMAverage adaptive
A rather simple but very effective method as testing shows.
2018-10-04 17:53:57 +03:00
19f8e1697b Make the Server's EMAverage a member
The combined effort of all workers of updating EMAverage is needed for precision,
statistics and making parts of it adaptive (rather than hardcoded or configured).
2018-10-04 17:53:57 +03:00
ada91f2d53 MXS-1777 Make sure slower servers are sampled sufficiently 2018-10-04 17:53:57 +03:00
415c7fa2d7 MXS-1777 MXS-1777 ResponseStat improvements (take 2).
Fix comments.
Fix a bug in make_valid().
Change sync time (when the average should be pushed to the server EMA)
to only depend on time, not use sample_max. This decreases the amount of
sync calls, and allows for a much shorter sync time. Testing shows this to be
more stabel and allows to make sample_max adaptive .
2018-10-04 17:53:57 +03:00
80c731f02a Fix verify_master_failure
The log message had changed, changed test to match. Also, the remaining
delay is now printed.
2018-10-04 13:38:10 +03:00
86ae0c3e4d MXS-1845 Remove unneeded code & cleanup 2018-10-04 13:38:10 +03:00
a1b3a005dd MXS-1845 Relax cluster operation support requirements
Support for more complicated topologies is quite close to completion and
in any case the function was too aggressive.
2018-10-04 13:09:28 +03:00
661bdd5b82 Work around debug assertions in binlogrouter
The binlogrouter uses buffers across worker threads which is no longer OK
in 2.3. The correct solution would be to store data in something other
than a GWBUF (e.g. std::vector) and protect the sharing with a mutex. The
current solution simply works around the assertions by using macros
instead of functions.
2018-10-04 12:48:27 +03:00
30eb21914f MXS-1845 Switchover cleanup
Several small changes:
Binlog is flushed at the end of old master demotion.
Only new master is required to catch up to old master.
Use the same replication check method as failover.
2018-10-04 11:45:33 +03:00
49e85d9a28 MXS-1845 Add demotion code
The master demotion in switchover now uses query retrying with
the switchover time limit.
2018-10-04 11:45:33 +03:00
a4747f5b03 Revert the last commit, and an additional fix to the
"Fix code for warnings:" commit.
2018-10-03 17:22:10 +03:00
5892ef18af MXS-1777 ResponseStat improvements
Fix comments.
Fix a bug in make_valid().
Change sync time (when the average should be pushed to the server EMA)
to only depend on time, not use sample_max. This decreases the amount of
sync calls, and allows for a much shorter sync time. Testing shows this to be
more stabel and allow better control of the sample_max.
2018-10-03 16:35:06 +03:00
268e689dc5 Fix code for warnings: unused-but-set-variable and warn_unused_result. 2018-10-03 16:33:24 +03:00
b33b888b07 Remove atomic operations from buffers
As buffers are meant to be used only within a particular session, the
atomic operations are no longer necessary and can thus be removed. This
removes the extra overhead that the atomic operations add.
2018-10-03 12:12:59 +03:00
a645467827 Clean up buffer.cc
Cleaned up the code by removing gotos and initializing variables when they
are declared. Also added some space to some functions that felt cramped.
2018-10-03 12:12:59 +03:00
8ad045c019 Remove extra header
The curl header isn't needed nor is it present when building.
2018-10-03 11:58:02 +03:00
8b9fdaa0cb Remove HTTP functionality
It wasn't used so it can be removed.
2018-10-03 08:41:45 +03:00
d866cb3a21 Add bias value to server score calculations
By biasing the values of all counter type scores to positive integers, the
server weights are always taken into use.

This fixes the case when weights were ignored until all score base values
were larger than zero (the mxs922_server test).
2018-10-03 08:41:44 +03:00
ea971a664e Fix readconnroute debug assertion
If the DCB is closed in handleError, it would be NULL in closeSession. To
only close the DCB in one place, the handleError can be reduced to writing
an error to the client and marking the failure as a fatal one.
2018-10-03 08:41:44 +03:00
4216ffa384 Use std:🧵:hardware_concurrency
Using a standard-defined value is better than a system specific one.
2018-10-03 08:41:43 +03:00
e10f34d6aa Remove size restrictions from network reads
The reads now read as much of the data as is available to reduce the
number of distinct malloc calls that need to be made. The SSL_read also
now allocates the buffer before reading into it so that the amount of
copying is reduced.

Also removed some of the not quite helpful debug messages.
2018-10-03 08:41:43 +03:00
1ed708559d Assert that buffers are thread-local
Cross-thread usage of buffers should not happen and the debug assertions
help verify it.
2018-10-03 08:41:43 +03:00
304286e5fa Remove unused code
The BUFFER_TRACE code was not in use and did not work as the HASHTABLE was
removed.
2018-10-03 08:41:42 +03:00