Esa Korhonen
f2e0bf3caa
Factor out functions
...
The topology update is now in a method. Also, the m_master-field
is only written inside a method so that the cycle info is always
updated.
2018-07-16 15:58:16 +03:00
Esa Korhonen
936bcde135
Remove old "detect_standalone_master"-feature, update documentation
...
The auto_failover is a more reliable solution and should be used instead. Several
unused parameters were removed, although they can still be defined in the config
file. Updated documentation on the relevant parts.
2018-07-16 15:58:16 +03:00
Esa Korhonen
34f61bc4f2
Close connections before starting loop
...
The connections should be closed after the check queries.
2018-07-03 10:32:06 +03:00
Esa Korhonen
fd31c9cced
MXS-1905 Set slaves with low disk space to maintenance
...
Also, servers in maintenance are updated just as other servers.
2018-07-02 14:24:57 +03:00
Esa Korhonen
9525d3507b
Run manual commands without stopping the monitor
...
The command is saved in a function object which is read by the monitor
thread. This way, manual and automatic cluster modification commands are
ran in the same step of a monitor cycle.
This update required several modifications in related code.
2018-06-28 16:56:41 +03:00
Esa Korhonen
6bf10904d7
MXS-1845 Only rebuild topology when required
...
The monitor now detects when a server has changed such that a replication
graph rebuild is needed and only then rebuilds the graph and detects
cycles and master.
Also, some old code is no longer called in the monitor cycle. It will be
removed in later commits. Refactored some of the related functions.
2018-06-28 16:56:41 +03:00
Johan Wikman
cc0299aee6
Update change date of 2.3
2018-06-25 10:07:52 +03:00
Esa Korhonen
8bd9e1d473
Check monitor permissions when reconnecting to server
...
Previously, the permissions would only be checked at monitor start.
Now, the permissions are checked if [Auth Error] is on or server
was reconnected.
2018-06-20 17:54:46 +03:00
Esa Korhonen
019d62bbb8
MXS-1886 Better auto-rejoin error description and tolerance
...
Contains changes from commit 09df01752812444c6e7c409a8957d292f7de63cf
adapted to the 2.3 branch.
2018-06-18 16:35:28 +03:00
Esa Korhonen
d3e9cc9a4f
MXS-1886 Auto-failover error tolerance
...
Contains changes from commit 9e68d8ec3ddf1621f533067021c4b3042f695e80
adapted to the 2.3 branch.
2018-06-18 16:35:28 +03:00
Esa Korhonen
2f987d0b10
MXS-1845 Only select a master if current master is no longer usable
...
The purpose is to make the selected master server sticky. The master is reselected only
if the current master is no longer a valid master.
2018-06-18 11:06:58 +03:00
Esa Korhonen
5324a1bdaa
MXS-1845 Assign server roles
...
Assign server roles (master, slave, relay master, slave of external master)
for a graph with possibly multiple paths to a slave server.
2018-06-13 17:38:53 +03:00
Johan Wikman
8afa8c2c5a
MXS-1775 Add MonitorInstanceSimple class
...
MonitorInstanceSimple is intended for simple monitors that
probe servers in a straightforward fashion. More complex monitors
can be derived directly from MonitorInstance.
2018-06-07 15:13:26 +03:00
Esa Korhonen
2481de260f
Move monitor-dependent code in MariaDBServer to MariaDBMonitor
...
Removes Monitor-dependency from the MariaDBServer-class.
2018-06-06 22:28:38 +03:00
Johan Wikman
b2a190c2b8
MXS-1775 Add switchover_on_low_disk_space parameter
2018-06-06 15:25:57 +03:00
Johan Wikman
dc47835ef6
MXS-1775 Add documentation for new monitor parameter
2018-06-06 15:25:57 +03:00
Johan Wikman
af717426d5
MXS-1775 Load server journal unconditionally
...
The server journal is unconditionally loaded and need not be
done in @c pre_loop.
2018-06-06 15:25:57 +03:00
Johan Wikman
f600b3a769
MXS-1775 Check disk space in MariaDBMonitor
2018-06-06 15:25:57 +03:00
Johan Wikman
18ece193bb
MXS-1775 MariaDBMonitor::main() removed
...
Now uses MonitorInstance::main() as all other monitors.
2018-06-06 15:25:57 +03:00
Johan Wikman
44b1e805a3
MXS-1775 Move MariaDBMonitor functionality to tick
...
Now all is set for moving MariaDBMonitor on top of
MonitorInstance::main.
2018-06-06 15:25:57 +03:00
Johan Wikman
329a6df662
MXS-1775 Factor out post-processing
...
Further adjustments for being able to move MariaDBMonitor on
top of MonitorInstance::main().
2018-06-06 15:25:57 +03:00
Johan Wikman
71194d83d3
MXS-1775 Rearrange for moving main loop to MonitorInstance
...
This is another step in the process for moving the main loop
from MariaDBMonitor to MonitorInstance.
2018-06-06 15:25:57 +03:00
Markus Mäkelä
70fdd0fc17
Merge branch '2.2' into develop
2018-06-06 08:56:31 +03:00
Markus Mäkelä
f2b2951c99
Track the number of performed monitoring intervals
...
Tracking how many times the monitor has performed its monitoring allows
the test framework to consistently wait for an event instead of waiting
for a hard-coded time period. The MaxCtrl `api get` command can be used to
easily extract the numeric value.
2018-06-06 08:46:46 +03:00
Esa Korhonen
7cd19a12a2
MXS-1883 Remove locking during monitor loop
...
Since the admin cannot modify server states any more, the locks are not
required.
2018-06-01 15:03:07 +03:00
Esa Korhonen
37841183b3
Cleanup server.h
...
Renamed, rearranged and clarified status bits. Removed unused macros.
2018-06-01 14:29:51 +03:00
Esa Korhonen
4d7aff4ab9
MXS-1845 Find strongly connected components with multiple slave connections
...
Rewrote the algorithm for clarity.
2018-06-01 14:04:50 +03:00
Johan Wikman
32c7ae2f9f
MXS-1775 Inherit MariaDBMonitor from mxs::MonitorInstance
...
Start/stop now provided by MonitorInstance. The thread main
function is now virtual and overriden by MariaDBMonitor. Some
additional refactoring is necessary in order to be able to allow
MonitorInstance to handle the main loop.
2018-06-01 13:48:15 +03:00
Johan Wikman
5219245a04
MXS-1775 Reset server info in MariaDBMonitor::configure()
...
That way, MariaDBMonitor no longer needs a custome start() function.
2018-06-01 13:48:15 +03:00
Johan Wikman
be3bdc7bc9
MXS-1775 Rename MariaDBMonitor::main_loop() to main()
...
To make it compatible with mxs::MonitorInstance.
2018-06-01 13:48:15 +03:00
Johan Wikman
a82c5911e5
MXS-1775 Rename m_monitor_base to m_monitor
...
To make it compatible with how the variable is named
in maxscale::MonitorInstance.
2018-06-01 13:48:15 +03:00
Johan Wikman
f862939dd7
MXS-1775 Make MariaDBMon non-dependent on stop() return value
...
To align it with the behavour or MonitorInstance::stop()
2018-06-01 13:48:15 +03:00
Johan Wikman
62f3e89ae7
MXS-1775 Tilt MariaDbMon towards maxscale::MonitorInstance
...
- m_status -> m_state
- m_keep_running -> m_shutdown
- load_config_params() -> configure()
2018-06-01 13:48:15 +03:00
Johan Wikman
b439857a84
MXS-1775 Remove destroy()
...
Now the instance is deleted simply by deleting it.
2018-06-01 13:48:15 +03:00
Esa Korhonen
c039821467
MXS-1883 Maintenance is now the only user-modifiable bit for a monitored server
...
The request to turn maintenance off/on is a separate flag, although the actual
status is still contained in the status bitfield.
2018-05-30 10:09:15 +03:00
Esa Korhonen
3ec449339f
Only write to SERVER->status at the end of a monitoring loop
...
This makes the code clearer and reduces race conditions, as the monitor
could be writing SERVER->status while a router is reading it. Also,
the time during which the SERVER struct is locked drops to a fraction.
2018-05-23 16:19:08 +03:00
Esa Korhonen
4788c4947d
Merge branch 'read_only' into develop
...
develop was updated before a merge was pushed, requiring a second merge.
2018-05-18 16:51:38 +03:00
Esa Korhonen
709c076000
Merge branch '2.2' into develop
2018-05-18 16:31:49 +03:00
Johan Wikman
d5871e48ae
MXS-1775 Change assumption of Monitor::destroy() function
...
Used to be assumed to be a static member function, now assumed
to be a regular member function.
2018-05-18 16:00:05 +03:00
Esa Korhonen
fb56de641a
MXS-1859 Add options for enforcing read_only on slaves
...
If the feature is enabled (default off), at the end of a monitor loop
(once server states are known), read_only is enabled on slaves servers
without it.
2018-05-18 15:29:56 +03:00
Esa Korhonen
45da5a08d9
MXS-1845 Cleanup monitor backend updating
...
Now detects errors and prints them.
2018-05-18 13:48:08 +03:00
Esa Korhonen
654b5f1958
MXS-1865 Wrong permissions on backends no longer cause monitor start to fail
...
The logic was weird, as the permission checking function assumes a disconnected
server as fine. The checking is now done when starting the main loop and lacking
grants print errors but does not stop the monitor.
2018-05-16 13:55:45 +03:00
Esa Korhonen
b71710e066
MXS-1865 Combine server version and type
...
Binlog server is now handled better.
2018-05-16 13:55:45 +03:00
Esa Korhonen
df4454027a
Clean up monitor initialization and destruction
...
Since monitors are now freed at MaxScale exit, the server data should be freed. Also,
gtid domain variables are now initialized with a common constant.
2018-05-14 11:32:02 +03:00
Esa Korhonen
97328a61f0
Use MonitorApi in MariaDBMonitor
2018-05-14 11:11:08 +03:00
Esa Korhonen
b92284afc4
Move server querying to MariaDBServer
...
The query functions still require the base monitor struct because of
mon_ping_or_connect_to_db().
2018-05-14 11:11:08 +03:00
Esa Korhonen
38647a0c69
Increase monitor sleep accuracy
...
Now the last sleep of a monitor loop is of correct duration.
2018-05-14 11:11:08 +03:00
Esa Korhonen
0b459c0496
Always check monitor permissions when starting monitor
...
Servers could have been added while monitor was down so better be on the safe side.
2018-05-14 11:11:08 +03:00
Esa Korhonen
39789c19d3
MXS-1856 Do not set read_only OFF if join_cluster() fails
...
This could in some cases leave read_only OFF even if the target slave
begins replication.
2018-05-08 13:56:57 +03:00
Johan Wikman
44fa2a4be2
MXS-1848 Change prototype of startMonitor
...
StartMonitor() now takes a MXS_MONITOR_INSTANCE and returns
true, if the monitor could be started and false otherwise.
So, the setup is such that in createInstance(), the instance
data is created and then using startMonitor() and stopMonitor()
the monitor is started/stopped. Finally in destroyInstance(),
the actual instance data is deleted.
2018-05-07 14:08:36 +03:00