Commit Graph

326 Commits

Author SHA1 Message Date
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
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
8f1d807f1b MXS-2011 Remove "CHANGE MASTER" when testing
The blr_handle_change_master() will receive the string without
"CHANGE MASTER" when running BLR.
2018-09-04 15:54:21 +03:00
1aad1ae7d7 MXS-2011 Introduce blr_apply_change_master()
This function applies a change master config. Currently is
used from blr_handle_change_master(), and subsequently will
be used when BLR switches to an alternative master.
2018-09-04 15:54:21 +03:00
8f26e3cbaf MXS-2011 Take ChangeMasterConfig into use 2018-09-04 15:54:21 +03:00
2ba0b4dda9 MXS-2011 Declare variables at the point where they are needed
Also change explicit allocation into vector.
2018-09-04 15:54:21 +03:00
883a3a6fe1 MXS-2010 Introduce ChangeMasterConfig
This type will be used for storing the configuration
specified with CHANGE MASTER at a point where it has been
verified, to the extent possible, that the provided options
are valid.
2018-09-04 15:54:21 +03:00
adb7bb8e8a MXS-2011 Lock router only when needed 2018-09-04 15:54:21 +03:00
0e1d2ec1ec MXS-2011 First check, then change
By slightly re-arranging things, we do not need to revert
the situation if some parameters are not acceptable, but
can simply return.
2018-09-04 15:54:21 +03:00
41e467d543 MXS-2011 Rename types
In order to make it visible that the types contain C++
members, the following types were renamed:

CHANGE_MASTER_OPTIONS -> ChangeMasterOptions
MASTER_SERVER_CNF -> MasterServerConfig

Functions where also changed to take const refs were appropriate.
2018-09-04 15:54:21 +03:00
1d059f26eb MXS-2011 Use std::string in MASTER_SERVER_CFG
Makes things simpler if you do not need to worry about string
lifetime management.
2018-09-04 15:54:21 +03:00
0c59516e24 MXS-2011 Do not "free" CONFIG_MASTER_OPTIONS
Its members are std::string, so they do not need to be
explicitly freed.
2018-09-04 15:54:21 +03:00
e85c4387c7 MXS-2011 Store CHANGE MASTER options as std::strings
In order support the possiblity for having multiple alternative
masters for the binlog server, we need to have multiple configs
around.

Originally the config values were stored as 'char *':s, which
would have made the lifetime management of the strings laborious
and error prone.

Now, the options are stored as std::string:s, which makes the
lifetime management a non-issue.
2018-09-04 15:54:21 +03:00
51fffedf7d MXS-2011 Assume argument values have been dequoted
Functions setting particular values no longer de-quote strings,
but assume the de-quoting already has been made.
2018-09-04 15:54:21 +03:00
f946272af1 MXS-2011 Immediately de-quote strings
When receiving a command, such as

    CHANGE MASTER TO MASTER_HOST = '127.0.0.1' ...

when the value is extracted, the quotes are removed before the value
is returned.

Firstly, BLR does not anyway anywhere enforce that quotes are present
where they should be and, secondly, BLR currently does de-quoting all
over the place and with this change, all those places can be simplified.
2018-09-04 15:54:21 +03:00
a13e95951b Merge branch '2.2' into develop 2018-08-30 11:37:49 +03:00
4c5e18b4f0 MXS-2033: Require only MASTER_SSL_CA
MASTER_SSL_CERT and MASTER_SSL_KEY are optional and should not be
required.
2018-08-30 00:30:46 +03:00
178d31af27 Fix binlogrouter deadlock on reconnect
The master reconnection in the binlogrouter used the housekeeper
recursively. This is no longer supported and the delayed worker call
mechanism should be used in its stead.
2018-08-29 11:23:00 +03:00
b2047aaa80 Fix heap buffer overflow in blr
The name printing wrote past the end of the buffer.
2018-08-29 11:06:12 +03:00
a29851a42c MXS-2026 Use qc_init(...)/qc_end()
Use qc_init(...)/qc_end() for initializing QC in test-programs.
2018-08-29 09:47:13 +03:00
3f53eddbde MXS-2020 Replace ss[_info]_dassert with mxb_assert[_message] 2018-08-22 11:34:59 +03:00
b1e405442f MXS-2020 Replace ss_debug with MXB_AT_DEBUG 2018-08-22 11:34:06 +03:00
e0cb11151f MXS-2008 Move maxscale/worker.h to maxbase/worker.h 2018-08-20 11:15:14 +03:00
81853d8d6b Fix binlogrouter unit test
The test called mxs_log_finish multiple times.
2018-08-17 14:29:28 +03:00
cf0aeed516 MXS-2014 Rename log_manager.h to log.h
There's nothing resembling a manager anymore.
2018-08-17 10:59:37 +03:00
ae43e4f0f2 MXS-2013 Remove all CHK_-macros 2018-08-15 09:28:04 +03:00
8fd1648217 MXS-2013 Remove skygw_chk_t 2018-08-15 09:28:04 +03:00
f3f802cabe MXS-2008 Move maxscale/atomic.h to maxbase/atomic.h 2018-08-15 08:44:39 +03:00
5a306aa20a MXS-2005: Use log manager only after initialization
The log manager functions must not be used before it is initialized.
2018-08-14 14:57:34 +03:00
4fdec4d1f3 MXS-2004 Replace pthread_self() with std::this_thread::get_id() 2018-08-13 13:38:39 +03:00
2dd9e3e382 MXS-2004 Remove remaining dependency on maxscale/thread.h
Replaced with explicit dependency on pthread.h. Acceptable since
this is effectively for debugging purposes and could at some point
be removed entirelly.
2018-08-13 13:38:39 +03:00
b408894f6d MXS-2004 Remove dependency of maxscale/thread.h 2018-08-13 13:38:39 +03:00
70fa300fe1 Remove unnecessary mxs_log_flush_sync calls
The calls were unnecessary in the context where they were made.
2018-08-13 10:28:02 +03:00
710f2d3c79 Unify unit test naming
The tests now all use snake_case naming.
2018-08-06 21:20:29 +03:00
b20decfe1c MXS-1929: Output const strings from serviceGetUser
The values aren't meant to be modified by the caller.
2018-08-06 21:20:29 +03:00