4840 Commits

Author SHA1 Message Date
Markus Makela
784166ad0b Added missing check for fopen return value
This would have led to a crash when a NULL pointer would have been used as
a valid FILE handle.
2016-02-25 20:10:37 +02:00
Markus Makela
2c28d8c5de Removed unused functions and variables from dbfwfilter
Removed the old parsing functions which are no longer used.
2016-02-25 20:09:10 +02:00
Markus Makela
f8d74dd7e2 Cleaned up error logging for session creation failures
The old message logged the function name and thread ID which are not useful
to the end user. The thread ID should only be printed for debugging purposes,
not general error messages.
2016-02-25 18:52:22 +02:00
Markus Makela
18526c28f6 MXS-589: Separated persistent and temporary data directories
Both the passwords and temporary files of the embedded library were stored
in the same directory. Now the directories are separated and the embedded
library uses the temporary directory. The datadir cleanup also now only
cleans up the temporary data directory.
2016-02-25 11:24:20 +02:00
Markus Makela
7b8200eec0 Fixed build failures with older versions of Bison
Older versions of Bison don't include the yyparse function in the generated
header and use deprecated options.
2016-02-25 09:32:04 +02:00
Markus Makela
13387485f6 Added 'auth_all_servers' to service parameters if it is defined
The schemarouter checks if the service has this parameter and if it
is not there, it is automatically enabled. The parameter was not
added as a qualified service parameter so the router couldn't see
the parameter as defined even if it was.
2016-02-25 09:32:04 +02:00
Markus Makela
57af3e3e24 Added support for older Bison versions
The older versions of Bison use the deprecated versions of various options.
The automatic prefixing of tokens is not present in older versions so to
accommodate for this, all tokens were manually prefixed.
2016-02-25 09:32:04 +02:00
Markus Makela
cb2e3b898e Cleaned up qlafilter, topfilter and namedserverfilter instance creation
The change fixes a crash when no filebase parameter is given for the filter.

The instance creation functions of these filters had spossible memory leaks in
case errors in the configuration occurred. In addition to these, they would be
successfully created even if unexpected parameters were given.
2016-02-23 21:45:31 +02:00
Markus Makela
aec1310c52 MXS-580: Added more options for filters
The tee, qlafilter, namedserverfilter and topfilter now support the same filter
options: case, ignorecase and extended. The extended filter option enables
the Extended Regular Expression syntax for the filters which is used when
matching queries.
2016-02-23 20:52:53 +02:00
Markus Makela
19356be848 Updated documentation about Bison and Flex dependency
The dbfwfilter now requires Bison and Flex to be built
2016-02-23 20:52:52 +02:00
Markus Makela
ac3adf820b Fixed internal test failures
The tests failed due old style initialization of the embedded server. This is
fixed by using the new qc_init and qc_thread_init functions.
2016-02-23 14:54:02 +02:00
Markus Makela
417380ab83 Added missing use_priority to list of valid parameters
This caused Galera node priority usage to always fail.
2016-02-23 14:48:55 +02:00
Markus Makela
1adbe3b23a No user definitions in dbfwfilter rules is treated as an error again
The lack of user definition lines in the dbfwfilter rule file was ignored
previously but this change makes the lack of users an error again. Also
added function documentation to some of the functions.
2016-02-23 10:34:12 +02:00
Markus Makela
8e010d2367 Fixed wrong comparison being made when setting readwritesplit parameters
The comparison was done with strcmp but it was expected to return true on
success when in reality it returns 0 on success.
2016-02-22 11:05:34 +02:00
Markus Makela
28bd7c2202 Merge branch '1.2.1-binlog_router_trx' into develop 2016-02-19 18:51:59 +02:00
Markus Makela
fec1ebe925 Removed restrictions on monitor timeouts
The monitor timeouts can now be larger than the monitor interval. This will
allow the combination of low monitoring intervals and large network timeouts.
If a network experiences some periodic lag, it is desirable to allow large
timeout values.
2016-02-19 09:57:15 +02:00
Markus Makela
a947b33769 MXS-585: Fixed buffer length instead of packet length being used in a calculation
The usage of the buffer length in the authentication success checks causes
the authentication to fail with routers that don't require statement input.
2016-02-18 18:03:21 +02:00
Markus Makela
c25ef2f72a Added missing 5.5.5- prefix to MaxScale MySQL version
The handshake was sending "MaxScale 1.3.0" as the server version which causes
some connectors to think that the version is not valid.
2016-02-18 18:03:21 +02:00
Johan Wikman
52ae676fa4 Add cast when converting to size_t from double. 2016-02-18 13:19:08 +02:00
Johan Wikman
5cfe352a8a Remove inline from function definition. 2016-02-18 11:44:59 +02:00
Markus Makela
4c3f7e320e Added configurable connector repo and tags
This allows different versions and repositories to be used when building
the MariaDB connector.
2016-02-17 20:42:11 +02:00
Markus Makela
effa2dbdae Set dbfwfilter maturity to GA and set the version to 1.1.0
The module has been GA for a while and it has also changed so the version
should be updated.
2016-02-17 10:59:26 +02:00
Markus Makela
497a72d42f Added extra logging to dbfwfilter output
The real username and host is now logged in addition to the user definition
that it matched. The messages also have the service name to distinct
connections to two different services which both use the same filter.
2016-02-17 10:45:21 +02:00
Markus Makela
59f5880898 Added missing OK byte to payload size calculation
The OK byte was not taken into notice when the total size of all the payloads
in all the packets was calculated.
2016-02-17 08:30:50 +02:00
Markus Makela
47281d1c55 MXS-582: Moved to crypt_r
Replaced all calls to crypt with crypt_r.
2016-02-16 16:04:50 +02:00
Markus Makela
63ce9fe6bc Fixed formatting and added more error checks
Added log messages when ftruncate fails and cleaned up formatting.
2016-02-16 13:06:25 +02:00
Markus Makela
cd2af6ffef Cleaned up the code based on the code review
Added missing error condition checks and cleaned up code.
2016-02-16 13:06:25 +02:00
Markus Makela
a55f017c75 Fixed packets with a length of one being ignored
The packets were not written into the binlogs which caused binlog corruption.
2016-02-16 13:06:25 +02:00
Markus Makela
9306b9d68c Added detection of checksums split across two packets
The checksums should now be processed properly event if the event is in more than
one packet.
2016-02-16 13:06:25 +02:00
Markus Makela
36896afcbd Fixed missing NULL check when reading records
If the binlog record was not found, a NULL pointer is returned. There was no
check for the return value and it assumed that it was always non-NULL.
2016-02-16 13:06:25 +02:00
Markus Makela
74c8b5e296 Fixed events larger than 2^24 failing without transaction safety
If transaction safety was disabled and a large event sent in multiple SQL
packets was received, the distribution of that event to the slaves would fail.
2016-02-16 13:06:25 +02:00
Markus Makela
2b7e2d3043 Added checksum calculations for events larger than 2^24 bytes
The checksums are now properly calculated for large events that span multiple
SQL packets.
2016-02-16 13:06:25 +02:00
Markus Makela
3609f97ba0 Fixed events which are exactly 0x00fffffe bytes long failing to replicate
The empty packet sent after a large event which fits into exactly one packet
was written to disk and the writing of no bytes caused it to be treated as
an error.
2016-02-16 13:06:25 +02:00
MassimilianoPinto
476691eda1 Removed log message for event larger than 16MB
The log message used during tests is now removed
2016-02-16 13:06:25 +02:00
Markus Makela
3e04a36ac3 Added support for distribution of packets larger than 2^24 bytes
Moved the the sending of the replication events to a different function
and added support for events that span multiple MySQL packets.
2016-02-16 13:06:25 +02:00
Markus Makela
12ee568978 Fixed last_written being set to the size of the event
The addition used =+ instead of += which caused it to be an assignment.
2016-02-16 13:06:25 +02:00
Markus Makela
d2b4713d27 Added missing condition to else clause
This fixes all packets being considered as large packets.
2016-02-16 13:06:25 +02:00
Markus Makela
ae33df3cbc Large events are now processed in chuncks
The router->last_written is used to store the position where the last event was
written. The replication header is also stored in a separate structure in
the router which is used later when the last packet of a multi-packet event
arrives.
2016-02-16 13:06:24 +02:00
MassimilianoPinto
d3e1d4dd2f First fix for 16MB handling in the master part
First fix for 16MB handling in the master part.

Distribute events to up to date slave is not included yet
2016-02-16 13:06:24 +02:00
MassimilianoPinto
ab1fb90d86 Fix for 16MB transmission in the slave part
Fix for 16MB transmission in the slave part
2016-02-16 13:06:24 +02:00
Markus Makela
6da0446df0 Made function parameters constant and added debug checks
The number of written characters is now checked and should be lower than
compared bytes. The parameters to the dbusers.c query functions are now const
where possible.
2016-02-16 11:16:41 +02:00
Markus Makela
c4bcc4ce88 Table-level access to databases is now detected
Previously the users needed at least SELECT permission on the database level to
be able to connect with a default database through MaxScale. With this change,
the query that retrieves the database users has been changed to also include
table-level grants for users. This will allow users with grants to only some of
the tables in a database to be able to connect through MaxScale with a default
database.
2016-02-16 11:16:41 +02:00
Markus Makela
e468132b8b Cleaned up user data queries
The queries are now created at runtime to allow for a more varied syntax. This
removes the need to have separate query strings for the standard mysql.user
table and for the MySQL 5.7 version of it. In addition to this, the exclusion
of the root user is now done at the same time which removes the need to manually
form the query string.
2016-02-16 11:16:41 +02:00
Markus Makela
a628fdcb17 Added configurable executable file directory
This allows MaxScale to launch processes from the directory where
the `maxscale` executable is located.
2016-02-15 11:12:54 +02:00
Markus Makela
477197ff5b MXS-581: Moved to MD5 based encryption of passwords
The admin users are now encrypted with a more complex algorithm which reduces
the chance of two passwords generating the same hash by a significant amount.

Refer to the GNU libc manual for more details about the crypt function:
http://www.gnu.org/software/libc/manual/html_node/crypt.html
2016-02-12 23:31:43 +02:00
Markus Makela
2e408a17d5 Added missing schemarouter parameter documentation
The `ignore_databases` and `ignore_databases_regex` were missing from
the schemarouter documentation.
2016-02-12 21:19:38 +02:00
Markus Makela
26cbcb7365 MXS-511: Made log messages about master status coherent
The checking of the master status and the possible error logging were done
in two different steps. This led to confusing error messages when the state
of the server changed between the check and the logging of the error message.
2016-02-12 21:18:57 +02:00
Markus Makela
17234cec98 MXS-577: Either systemd files or init srcipts are installed
Systems that support systemd only use the systemd service files. For other
systems, System V style init scripts are installed. It is not recommended to
install both of them since it's possible that they will perform differently.
2016-02-12 21:18:56 +02:00
Johan Wikman
0aaba6bc5f Use getauxval for obtaining the executable path.
It appears that reading /proc/self/exe actually can return the path
of the shared library from which the reading is made.
2016-02-12 16:32:02 +02:00
Johan Wikman
d1ba050bfd Make housekeeper const correct. 2016-02-12 16:16:32 +02:00