Commit Graph

11797 Commits

Author SHA1 Message Date
31f6d49ddb Add symbolic VERSION file
The VERSION.cmake file defines which VERSION.cmake file is included. By
changing the file that it points to, the version can be changed without it
affecting other parts of the code that use it.
2018-09-10 15:11:18 +03:00
8896b0275f Recreate 2.2.14 release notes
Generated the release notes with the release note generation script.
2018-09-10 15:02:15 +03:00
64177276be Automatically generate relese notes
As most of the release notes are "boilerplate text", the changing parts
can be easily scripted.
2018-09-10 15:01:41 +03:00
eed2628cff Rewrite issue listing script
Rewrote the script in python and leveraged the dictionary CSV processor to
prevent field number mismatches. Combined the two scripts into one so that
all user-facing issues that are fixed can be easily shown in the release
notes.
2018-09-10 15:01:29 +03:00
73405c8ff9 Stabilize bug676
The test should now be stabler as it waits for a monitor interval instead
of a set amount of seconds.
2018-09-10 15:01:29 +03:00
6938df0d62 Use default member initializers in WORKER_STATISTICS
Makes the class simpler and removes the need for an explicit
constructor. Also switched to std::array to enable easy iteration over the
array.
2018-09-10 14:15:10 +03:00
94a567f4ca Remove redundant Worker method
The Worker::get_local_statistics was a duplicate of Worker::statistics.
2018-09-10 14:14:21 +03:00
1e7d088aed Make combination of rworker_local values easier
The `values` helper method provides a convenient way to access all of the
internal values as a vector.
2018-09-10 14:14:21 +03:00
58c0b4f5f4 MXS-1632: Remove the unused statistics code
The statistics code was almost completely unused.
2018-09-10 14:14:20 +03:00
108638b0cf Format with Uncrustify 0.67 2018-09-10 13:31:39 +03:00
d11c78ad80 Format all sources with Uncrustify
Formatted all sources and manually tuned some files to make the code look
neater.
2018-09-10 13:22:49 +03:00
edd5ddcc88 Merge branch '2.2' into develop 2018-09-10 12:29:00 +03:00
03017c6aad Fix develop build failures
The macro in testrules.cc needed to be chagned to use string literals to
work correctly with uncrustify. Also change <cmath> to <math.h> in C
headers.
2018-09-10 11:34:09 +03:00
d16fbd4cdf Expand list users output in maxctrl
The output now lists the type and privileges of each user.
2018-09-10 11:21:06 +03:00
8c03b626c4 Make users diagnostic deterministic
The output from Users::diagnostic is now ordered by first inserting the
usernames into a std::set.
2018-09-10 11:21:06 +03:00
c81173e320 Move C++ code out of C headers
The additions into the server.h header used C++ language which caused C
programs to fail to compile. Moved the implementation of the EMAverage
class into the private Server class in the server.hh header and exposed it
via functions in the server.h header. Also temporarily moved
almost_equal_server_scores into the public server.hh as there is no
service.hh header.
2018-09-10 11:21:06 +03:00
4f6990f90d Fix build failures
Changes to the ChangeMasterOptions made it non-trivial so it cannot be
safely memset anymore. The maxavrocheck was missing the linkage to the
maxscale-common library.
2018-09-10 11:05:43 +03:00
6279ab350c Rename TestConnections::assert() to TestConnections::expect()
Allows the including of <assert.h>.
2018-09-10 10:24:46 +03:00
c447e5cf15 Uncrustify maxscale
See script directory for method. The script to run in the top level
MaxScale directory is called maxscale-uncrustify.sh, which uses
another script, list-src, from the same directory (so you need to set
your PATH). The uncrustify version was 0.66.
2018-09-09 22:26:19 +03:00
fa7ec95069 MXS-1777 Tune code for cases with slow, or new servers.
Changes that allow slow or new servers to quickly apply samples towards the
server average. The most important changes are to not ignore the first N samples,
and apply an average to the server as soon as there is one available.
The new ResponseStat::make_valid() will use filter samples to add an average,
if no averages have yet been added, even if the number of  filter samples is less
than the filter limit.
2018-09-09 14:17:40 +03:00
0e5d827f7a Merge branch '2.2' into develop 2018-09-08 18:58:57 +03:00
91acbc0994 MXS-1777 Turn server weights to their inverses, and make them doubles.
The math becomes simpler when the weight is inverted, i.e. a simple multiplication
to get the (inverse) score. Inverse weights are normalized to the range [0..1] where a lower
number is a higher weight,
The enum select_criteria_t is used to provide a std::function that takes the backends
as vector  (rather than the prior pairwise compares) and returns the best backend.
2018-09-05 17:45:28 +03:00
105bd7195f MXS-1777 remove dead code
Dead code.
2018-09-05 17:12:54 +03:00
de6ad542c4 MXS-1777 Refactor selection.
This commit refactors slave selection. The compare is still pair-wise but isolated into a small run_comparison() function. The function get_slave_candidate() is used when new connections are created, which I both moved and modified (had to move due to scoping), so diff is off.
The slave selection for routing:  get_slave_backend() now has the filtering logic from old get_slave_backend() and compare_backends(), the latter of which is removed.

Backend functions mostly take shared_ptr<SRWBackend> in various forms (as is, const ref, in a container). Ideally the shared_ptr would be used only to where it is really needed, and either naked ptrs or references to RWBackend would be used. This refactor does not address that issue, but compounds it by using even deeper shared_ptr structures. Fixing that in a future commit.
2018-09-05 17:12:54 +03:00
d52885d68d MXS-1777 Cosmetic changes based on code reviews. 2018-09-05 17:05:06 +03:00
6351ab9c73 MXS-1777: Initial version of routing based on query response time.
The main piece of code, slave selection (backend_cmp_response_time), uses the available
method of pair-wise comparison of slaves. This will be changed to selection using all
available slaves, along with removal of hard coded values.
2018-09-05 17:05:06 +03:00
1e6509423a MXS-1777: Add an EMAverage to the server struct, and a new slave selection criteria.
This is to support calculating the average from a session, and the slave selection criteria to be able to route based on averages. This commit, like the next one, have TODOs which you should feel free to comment on. Undecided things.
2018-09-05 17:05:06 +03:00
cdea8aa7be mxs-1777: maxutils additions
Adding classes for calculating averages. Update StopWatch to C++11.
2018-09-05 17:05:06 +03:00
f3fbb297a4 MXS-1937 Enable server events on new master during switchover and failover
Combined some of the shared code in enable/disable_events(). Also disables
events on a joining standalone server.
2018-09-05 15:54:08 +03:00
7e6ce2d13f MXS-1937 Disable server events on master during switchover
The feature is behind a config setting.
2018-09-05 15:54:08 +03:00
a0ea37b2c5 MXS-2011 Fix documentation and comments
Fix documentation and comment based upon review comments.
2018-09-04 15:54:21 +03:00
65d355c7d7 MXS-2011 Enforce gtid based replication
If secondary masters are defined, MASTER_USE_GTID=Slave_pos must
be specified for the default master.

If MASTER_USE_GTID is specified, only Slave_pos is allowed as
value.
2018-09-04 15:54:21 +03:00
f5b73cf106 MXS-2011 Fix terminology and names
The variable storing the configuration index renamed from
'current_config' to 'config_index'.

In the code the same terminology is used as in the documentation.
"Default" is is used for referring to the default connections
(earlier "primary" was used) and the secondary connections are
referred to as "secondary" (earlier "alternative" was also used).
2018-09-04 15:54:21 +03:00
b835befe0f MXS-2011 Add documentation 2018-09-04 15:54:21 +03:00
a70885a541 MXS-2011 Allow configurations to be modified
- When specifying a configuration, if it already exists use
  the existing configuration as the default, thus allowing you
  to change only a specific configuration value.
- When specifying a new alternative configuration, use the
  primary (aka first) configuration as the base.
- If MASTER_HOST is changed on the primary (first, nameless)
  configuration, then all configurations are erased.
- At "SLAVE START", always start from the first configuration.
2018-09-04 15:54:21 +03:00
d293424f11 MXS-2011 Stop passing around unneeded arguments 2018-09-04 15:54:21 +03:00
9c06a60b48 MXS-2011 Immediately validate the connection name
And convert it to an index. This is subsequently needed when
connections configs can be updated and not just added.
2018-09-04 15:54:21 +03:00
4789f3f193 MXS-2011 Change invalid asserts
With multiple configs, we can no longer assert that the config
of the primary, aka first, config is identical with the one
being used.
2018-09-04 15:54:21 +03:00
812d80e403 MXS-2011 Use alternative servers
If the replication fails using the current config, we retry
immediately using another config, without waiting anything at
all.

Only when we have unsuccessfully tried with all servers, will
we wait a while before starting again.
2018-09-04 15:54:21 +03:00
ae28f8189b MXS-2011 Change return value of blr_check_connect_retry
0 cannot be used to indicate failure as 0 will be the waiting
period if we switch to an alternative server.

Also fix some minor issues; failure to initialize all members
and inverted success-check.
2018-09-04 15:54:21 +03:00
9826458700 MXS-2011 Log complaint from master
If the replication is terminated, the error message sent by
the master is written to the log.
2018-09-04 15:54:21 +03:00
76fbe72454 MXS-2011 Fix rebase bug 2018-09-04 15:54:21 +03:00
9ff0eab539 MXS-2011 First read config, then apply it
Separating the reading of the config from the process of
applying it allows us to use configs around and later apply
them (e.g. when we decide its time to switch master server).
2018-09-04 15:54:21 +03:00
5f809e5066 MXS-2011 Store settings from config object
Also store settings of alternative configs as well.
2018-09-04 15:54:21 +03:00
dec81594c1 MXS-2011 Assert that configurations are identical
At save time, assert that the configuration as dispersed around
blr and as stored in the config object are identical.

Later its the state from the config object that will be saved.
2018-09-04 15:54:21 +03:00
0c3fcfe302 MXS-2011 Allow alternative connections to be specified
Alternative masters can now be specified like

  CHANGE MASTER TO ...
  CHANGE MASTER ":2" TO ...
  CHANGE MASTER ":3" TO ...

Now only the data is stored, but it is neither used nor
saved.
2018-09-04 15:54:21 +03:00
93dc75a011 MXS-2011 Introduce blr_file_read_master_config()
One function for writing, another for reading the config.
No code changes; just moving code around.
2018-09-04 15:54:21 +03:00
a43f2ce8fb MXS-2011 Store current CHANGE MASTER config in router 2018-09-04 15:54:21 +03:00
d036668ffa MXS-2011 Rename blr.h to blr.hh
Now contains C++ elements.
2018-09-04 15:54:21 +03:00
ce18d13133 MXS-2011 Pick out the connection name if it is provided
Yet not used for anything.
2018-09-04 15:54:21 +03:00