Commit Graph

6167 Commits

Author SHA1 Message Date
a651eff633 Serialize repurposed servers
When a destroyed server is taken into use, it needs to be serialized. This
will allow the server to be created on restart.
2016-11-14 22:58:26 +02:00
8b692b0754 Add SSL support for created servers
Servers created at runtime can now be configured to use SSL. The
configuration is only possible if the server is not in use.

The `alter server` command in maxadmin now takes a list of `key=value`
strings. This allows the user to define multiple alter operations with one
command.
2016-11-14 22:58:26 +02:00
b893ca7ba8 Move configuration context processing into subfunctions
The functions allow simple operations on configuration context
objects. This makes it easier to understand what the code does and allows
reuse of the configuration processing code.
2016-11-14 22:58:26 +02:00
11bee30f61 Fix backend SSL
The backend SSL connections weren't authenticated due to an inverted
check. This caused all SSL connections to fail.
2016-11-14 22:58:26 +02:00
deda1c844e Develop branch update
Develop branch update
2016-11-14 17:44:39 +01:00
7ddb4d8e5a Treat connection_timeout as an integer for reload_config
The connection_timeout parameter was treated as a boolean which caused
errors when the configuration was reloaded.
2016-11-14 16:35:03 +02:00
da129025eb Use common backend closing function
The backend references now use a common closing function so that all
variables are reset to proper states. The stored queries weren't always
freed and they would leak memory if left open.
2016-11-14 16:14:20 +02:00
ba4ab9d35f Remove sorting of backends with qsort
The backends are no longer sorted with qsort. This removes the possibility
of stale backend references.
2016-11-14 15:01:41 +02:00
2b2d2cc679 Merge from develop
Merge from develop
2016-11-14 09:43:54 +01:00
11fc7682dd Maxrows filter documentation update
Maxrows filter documentation update
2016-11-14 09:24:28 +01:00
fbb46f72eb MXS-930: Maxrows filter documentation
MXS-930: Maxrows filter documentation
2016-11-14 09:24:28 +01:00
15e9652c46 qc: Provide information about field usage
Together with the field names, now qc_get_field_info also returns
field usage information, that is, in what context a field is used.
This allows, for instance, the cache to take action if a a particular
field is selected (SELECT a FROM ...), but not if it is used in a
GROUP BY clause (...GROUP BY a).

This caused a significant modifications of qc_mysqlembedded that
earlier did not walk the parse-tree, but instead looped over of a
list of st_select_lex instances that, the name notwithstanding,
also contain information about other things but SELECTs. The former
approach lost all contextual information, so it was not possible
to know where a particular field was used.

Now the parse tree is walked, which means that the contextual
information is known, and thus the field usage can be updated.
2016-11-14 09:35:16 +02:00
0e641108d4 Merge pull request #112 from JindongChen/save-time-on-wildcard-domain-name
Save time when domain name contains wildcard '%'
2016-11-11 18:24:30 +02:00
8edd0d3bae Save time when domain name contains wildcard '%' 2016-11-11 23:40:55 +08:00
d7c476314e Have maxadmin ask for password if none was given with -p
MXS-399 If maxadmin was started with -p and no password was given,
it printed a help message. Now it asks for password as if no -p was
given.
2016-11-11 15:05:36 +02:00
03951fff11 Remove FAKE_CODE from use
This functionality is not used in tests and parts of it didn't work. Since
it is not actively maintained or even used, it is better to remove it.
2016-11-11 12:17:22 +02:00
8a8e1a6650 Add check for NULL authenticator
The server creation was missing a check for NULL authenticator parameter.
2016-11-11 12:08:14 +02:00
0a712017a8 Add dynamic server configuration to release notes
The release notes list the new commands and point to
`maxadmin help <command>` for more details.
2016-11-11 11:35:15 +02:00
2fcfc102be Abstract server active checks
The checks for the server active status are now hidden behind a
macro. This allows for the conditions of the activity to change without
having to alter the code that uses it.
2016-11-11 11:35:13 +02:00
ae7981f147 Add warnings for string truncation in servers
Now that servers use an array for the server name, name truncation can
occur. Although this is nigh impossible, a warning message is a prudent
precaution.
2016-11-11 11:17:30 +02:00
08ebb88aec Make server creation simpler
Server creation and allocation are now the same apart from the fact that
allocation only adds the server to the running configuration where as the
creation of a server also persist it to disk.

The server serialization should not be seen through the server.h API. This
allows the serialization method to change without actually having to
change the interfaces.
2016-11-11 10:54:34 +02:00
16e8aa7178 Fix server usage bugs in monitors and servers
The MySQL Monitor did not reset the pointer to the root master reference
which would lead to a crash if the master was removed.

When service details were shown, it listed all servers that existed. Only
servers that haven't been removed or destroyed should be shown.
2016-11-11 10:54:34 +02:00
e67a829daf Take server destruction into use
The servers can now be destroyed with the `destroy server NAME` maxadmin
command.
2016-11-11 10:54:33 +02:00
261f5fdc36 Enable destruction of servers
The servers can now be destroyed which removes them from the list of
active servers. If the server was not created at runtime, a warning is
logged.
2016-11-11 10:54:32 +02:00
f0082256f5 Only print servers that aren't destroyed
If a server were to be destroyed, it should not show up among
non-destroyed servers. Even though the servers aren't actually destroyed,
it hides unnecessary information from the user.
2016-11-11 10:47:47 +02:00
7499630614 MXS-576 Check for negative values for config settings
Previously, negative values were allowed for persistpoolmax and
persistmaxtime. Now they cause an error. Also, monitor_interval
allowed negative (or zero) values, which were then implicitly cast to
unsigned, causing unintended behaviour. Now this causes a warning
and the default value is used.
2016-11-11 10:07:10 +02:00
2334c663e0 Merge branch 'develop' into MXS-936 2016-11-10 15:42:09 +01:00
c9218351b8 MXS-922: Serialize created servers
When a server is created via MaxAdmin, it will be serialized to disk. This
allows created servers to be retained through a restart of MaxScale.

Currently, all serialized objects are stored in one folder and there is no
structure in the created files. In the future, servers could be created
under a `servers` subdirectory so that it is easier to see what was
added. Whether there is a need for this will be seen.
2016-11-10 15:15:10 +02:00
bbd3e13a54 Only use valid server credentials
The server credentials are only used if both the monuser and monpw
parameters are defined. This is a sort of a bugfix as a monitor connection
could use a username from server but a password from the monitor.
2016-11-10 15:15:10 +02:00
c08a637564 Fix array usage with servers
The server monuser and monpw members were used with the assumption that
they could be NULL. This is no longer true since they were converted to
arrays.

The name member of the server was freed leading to a crash when the server
unit test was run.
2016-11-10 15:15:10 +02:00
aefa5c4c57 Add configurable persistdir
The persisted configuration file directory is now configurable.
2016-11-10 15:15:10 +02:00
6847ed1c37 Create and read persisted config dir
The persisted configuration directory is created and/or read when MaxScale
starts. This allows the servers created at runtime to be recreated when
MaxScale is restarted.
2016-11-10 15:15:10 +02:00
ec894f41b8 Store persisted config directory
The persisted configuration subdirectory will be used to store changes to
the configuration. The gwdirs.h header now supports setting and getting
the value for this directory.
2016-11-10 15:15:10 +02:00
4b82f83637 Enable online modification of monitors
The monitor parameters can now be changed via maxadmin. These changes are
not persisted to disk yet.
2016-11-10 15:15:10 +02:00
35d2959395 Enable online modification of servers
The address, port, monuser and monpw parameters of an existing server can
be changed at runtime. The support for enabling SSL will come in a later
commit.

Allowing servers to be modified could also be done by destroying and
recreating them. Since the servers are never actually destroyed, it is
better to allow the alteration of the existing ones.
2016-11-10 15:15:10 +02:00
b51af51365 Allow monitors and services to start without servers
MaxScale can now start without any defined monitors. This allows the core
services to be configured beforehand. With the changes to dynamic
modifications to servers, automatic scaling of slaves is possible.
2016-11-10 15:15:10 +02:00
dbedf57c9a Add and remove servers for monitors
The `add server` command accepts a server name and either a service name
or a monitor name. It will add servers to services and monitors. Since all
monitors use the MONITOR_SERVER structures directly, the monitors need
to be stopped before new servers are added to them
2016-11-10 15:15:10 +02:00
3b465c0d41 Add online creation of servers
New servers can be created with the new `create server` command. This will
create a new server but it will not add it to any service or monitor.
2016-11-10 15:15:10 +02:00
084aacb11c Fix debugcmd parameter processing
The debugcmd parameter processing didn't actually allow the maximum number
of parameters to be passed to the function. The detailed help text was
never printed and most of them were only duplicates of the short
description.
2016-11-10 15:15:10 +02:00
65886dc386 Check whether server references are active
Before a query is routed to a backend, the status of the server reference
is checked. This allows the servers that are removed from a service to be
ejected from the list of active servers for active sessions.
2016-11-10 15:15:10 +02:00
28fc3d2b83 MXS-922: Add server serialization function
The function serializes a server to a file. This is intended to be used
with dynamically created servers. The output of the server serialization
will eventually be stored in the configuration file directory (default is
/etc/maxscale.cnf.d/) so that created servers persist even after a
restart.
2016-11-10 15:15:10 +02:00
ea0dcea5d6 Clean up instance and session lifecycle functions
The createInstace, newSession, closeSession and freeSession functions were
cleaned up and reorganized to be a bit clearer for the reader. Removed
unnecessary comments and replaced them with ones that explain what's
happening in the code.

Removed unused linked lists from both sessions and instances and replaced
them with better alternatives. This should improve performance since new
session don't have to acquire the instance level lock to put themselves
into the session list.
2016-11-10 15:15:10 +02:00
88dca05dc7 Remove unused code from readwritesplit
There was a lot of extra debug logging behind unused defines. These were
never enabled and some of the code never worked.
2016-11-10 15:15:10 +02:00
26d1986fac Remove BACKEND from schemarouter and clean up code
Removed the use of the BACKEND structure and replaced it with the use of
the SERVER_REF structure of the service. This allows dynamic changes to be
made to the list of servers.

Cleaned up parts of the code and removed obsolete or useless
functions. The schemarouter module could do with some refactoring since it
derives from readwritesplit.
2016-11-10 15:15:10 +02:00
155161a876 Remove BACKEND structure from readconnroute
The BACKEND structure in readconnroute is now replaced with the use of the
SERVER_REF structure of the service. This allows dynamic changes to the
list of servers to be made.
2016-11-10 15:15:10 +02:00
dc8c068936 Modify readwritesplit to understand changes in server references
The readwritesplit now understands that the amount of servers can change
and some of the items in the list of server references aren't in use. This
allows dynamic changes to the number of servers used by readwritesplit.
2016-11-10 15:15:10 +02:00
8982ee3db2 Allow servers to be added and removed from services
Servers can now be added and removed from services which allows routers to
use them with new sessions. The routers don't fully use the new
functionality in the server references which prevents new servers from
being taken into use.
2016-11-10 15:15:10 +02:00
12dba14c5c MXS-936: fixed compilation error with "debug" build
MXS-936: fixed compilation error with "debug" build
2016-11-10 13:22:26 +01:00
21add3a8b4 Merge branch 'develop' into MXS-936 2016-11-10 12:02:40 +01:00
77946b6adc MXS-936: destroyInstance of binlog server is now updated
MXS-936: destroyInstance of binlog server was not updated: not it takes
the ROUTER * parameter.
2016-11-10 12:01:41 +01:00