5690 Commits

Author SHA1 Message Date
MassimilianoPinto
01f3b35fad MXS-961: error in replication stream and checksum calculation
When checksum is in use and there is an error in replication stream
master connection the blr_terminate_master_replication has no effect.

MXS-961: The checksum detection calls
blr_master_delayed_connect(router); and connection is scheduled again.

The fix will break the main loop as soon as the error indicator byte is
seen and no other computation will be done (such as checksum)
2016-10-31 10:18:22 +02:00
MassimilianoPinto
0f68fa6028 Removing error messages while executing RESET SLAVE
Removing error messages while executing RESET SLAVE
2016-10-28 18:40:18 +03:00
Markus Makela
1388686fb7 MXS-957: Fix temporary table detection
Temporary tables which were created from joins with other temporary tables
weren't properly detected as CREATE TEMPORARY TABLE statements.
2016-10-26 17:36:48 +03:00
Markus Makela
367d4407db Fix build failures when using C++11
Some parts of the code weren't C++11 compatible and the build would fail
with newer compilers.
2016-10-24 12:47:05 +03:00
Markus Makela
d53a6d2899 MXS-942: Don't return information_schema as the parsed database
When a DESCRIBE <table> or a SHOW COLUMNS IN <table> query is done, the
actual query is performed on tables in the information_schema
database. This might be what actually happens on the backend server but
this information is not really useful when we need to know which database
the query targets.

By passing the actual table names instead of the underlying table names,
the schemarouter is able to detect where these statements should be
routed.
2016-10-24 12:31:44 +03:00
Markus Makela
8e9012f514 Add missing declaration to maxadmin
A variable was not declared before it was used.
2016-10-24 11:17:51 +03:00
Johan Wikman
7a988df5a0 MXS-955: Put back proper .maxadmin handling
Now MaxScale again supports having 'hostname', 'user', 'port' and 'passwd'
in the .maxadmin file in addition to 'socket'.
2016-10-21 12:26:13 +03:00
Markus Makela
f1acc1f451 Use the backend server charset
The default character set should be copied from the server so that
MaxScale appears to be the same. This fixes problems where utf8mb4
couldn't be taken into use because MaxScale would always send latin1 as
the server charset.
2016-10-19 15:40:50 +03:00
Markus Makela
b50e794be7 MXS-917: Only log an error if the master is in use
When the readwritesplit can't locate the master server when it's checking
the list of available servers, it logs an error if the original master
reference isn't in a valid state. This error should only be logged if the
server is in use but in an unexpected state.
2016-10-17 06:54:37 +03:00
Markus Makela
c470813762 MXS-831: Detect new_master events
The new_master events were mistakenly detected as lost_slave events.
2016-09-30 00:01:53 +03:00
Johan Wikman
fa2a667195 qc_sqlite: Handle a name like ``a. 2016-09-29 23:48:21 +03:00
Johan Wikman
ca76cb1576 qc_sqlite: Recognize backslash as escape character
Without this change, e.g.

    insert into t1 values('\'');

causes a buffer overflow and crash.
2016-09-29 22:50:18 +03:00
Markus Makela
4658a28965 Fix out of bounds read in avro_client_process_command
When the last transaction was queried, it caused an out of bounds read
when strstr was used on the raw data of a GWBUF.
2016-09-29 15:28:57 +03:00
Markus Makela
dcf55d4099 Fix possible out of bounds read in CDCPlainAuth
When the authentication string was decoded from hexadecimal to binary, it
was possible that an out of bounds read was done if the length of the data
was not an even number.
2016-09-29 14:57:44 +03:00
Johan Wikman
3d5cfee348 housekeeper: Copy data to prevent access of freed data 2016-09-29 09:34:54 +03:00
Johan Wikman
4df5431572 qc_sqlite: Reduce logging when query cannot be parsed
If a query could not be parsed and details about the query are
asked, we log an info level message instead of an error.
2016-09-28 17:49:27 +03:00
Johan Wikman
8f233d32cf Always update state of bref behind lock 2016-09-28 09:29:56 +03:00
Johan Wikman
8fc6f52eea Update ChangeLog 2016-09-26 18:18:02 +03:00
Markus Makela
997fe6b90b Add a fail-safe for active operation counters
If a backend is not in use but it is waiting for a result, the state
should anyways be cleared to keep the operation counters correct.
2016-09-26 09:29:44 +03:00
Markus Makela
dd65062531 Fix broken link lists and clean up tutorials
Some of the tutorials didn't follow proper Markdown formatting rules.
2016-09-26 09:23:11 +03:00
Markus Makela
649efb91b5 Fix broken upgrades on CentOS 7
The upgrade process removed the /var/lib/maxscale directory as the newer
version didn't use it. This can be fixed by installing an empty directory
into /var/lib/maxscale.
2016-09-23 16:40:03 +03:00
Markus Makela
e618370cdb MXS-875: Fix regexfilter matching
The return values of pcre2_match are now properly handled. A positive
match is a return value which is greater than or equal to zero. This fix
should give a small performance boost to as memory is no longer needlessly
allocated.
2016-09-23 14:43:03 +03:00
Johan Wikman
542666ed16 qc_sqlite: Remove leak
Previously a query like e.g.

    delete t11.*, t12.* from t11,t12 where t11.a = t12.a;

would cause a leak. The code for freeing that memory was present
but commented out because it used to cause a crash.

Now no crash appears, so it would seem that the crash was caused
by something else that no longer is present.
2016-09-23 11:26:48 +03:00
Johan Wikman
049f823d37 Update tag information 2016-09-22 13:50:57 +03:00
Markus Makela
97858c164d Update library dependencies
Libcurl was not listed in the list of required packages.

The tarball installation instruction did not list any of the required
libraries.
2016-09-22 12:38:58 +03:00
Johan Wikman
a8118b98b4 Further refine the tarball instructions 2016-09-21 14:26:15 +03:00
Markus Makela
0882541c80 Make the default directories configurable
The default directories can now be changed at build time. This allows
tarballs to look for libraries in a more sensible place.
2016-09-21 14:21:18 +03:00
Johan Wikman
4422cd87eb Update tarball installation instructions
The /var/[log|lib|run|cache]/maxscale directory must be created
manually.
2016-09-21 13:07:13 +03:00
Markus Makela
578f21e757 MXS-874: Clear closed state before reconnecting to a server
The backend reference states should be cleared when a reconnection attempt
is made. Should the creation of a new DCB succeed, the backend should no
longer be closed.
2016-09-21 11:15:57 +03:00
Markus Makela
bd60fbde7e Create dummy files in /var directories for tar.gz packages
These files allow seemingly empty directories to be installed on various
platforms. Some platforms had problems installing empty directories.
2016-09-21 11:11:24 +03:00
Markus Makela
f6888ef205 Install all /var directories
The /var/lib/maxscale directory wasn't installed and tarballs didn't have
any /var directories.
2016-09-21 09:41:00 +03:00
Johan Wikman
ba2cafc65e Update tarball instructions 2016-09-20 16:36:33 +03:00
Markus Makela
715f978051 Add TARBALL variable to CMake
The TARBALL variable controls if a special tar.gz package is built when
packages are generated. This package has a different directory structure
compared to the RPM/DEB packages.

If RPM/DEB packages are built, tar.gz packages are not built. This makes
RPM/DEB generation faster and allows tarballs to be built separately with
a proper directory structures.
2016-09-20 16:32:21 +03:00
Markus Makela
1331bf9ae8 Add CPACK_PACKAGE_FILE_NAME to CMake cache
Adding CPACK_PACKAGE_FILE_NAME to the CMake cache allows the user to
control it. With this, custom tarball names can be easily generated.
2016-09-20 16:32:21 +03:00
Markus Makela
dfec3c8552 Install maxbinlogcheck in the right place
Maxbinlogcheck was installed in the wrong place.
2016-09-20 16:32:21 +03:00
Johan Wikman
0f6d4e4cdb Fix typo in tarball documentation 2016-09-20 13:58:28 +03:00
Johan Wikman
6ec999851f Update 2.0.1 release notes 2016-09-20 13:00:39 +03:00
Johan Wikman
9a9511fc58 Update tarball instructions 2016-09-20 12:46:43 +03:00
Markus Makela
b1b2e5b770 Don't free the shared shard maps
When client sessions are closed, the shared shard maps should not be freed.
2016-09-20 11:33:09 +03:00
Johan Wikman
e4543881d2 Add instructions for installing a package 2016-09-20 10:14:26 +03:00
Markus Makela
92ef33327e MXS-870: Handle non-contiguous session command responses
Session command responses with multiple packets could be spread across
multiple, non-contiguous buffers. If a buffer contained a complete packet
and some extra data but it wasn't contiguous, the debug assertion in
gwbuf_clone_portion would fail. With release builds, it would cause
eventual out-of-bounds memory access when the response would be sent to
the client.
2016-09-19 09:58:20 +03:00
Johan Wikman
7fc7249349 Update installation instructions 2016-09-16 12:25:29 +03:00
Markus Makela
89f9f4a42f Lock writeq before inspecting it
Looking at the contents of the writeq should be done under a spinlock
otherwise it is possible that another thread grabs the queue.
2016-09-16 10:05:50 +03:00
Markus Makela
2a4addc298 Clear waiting results flag on client errors
When a backend causes an error and it should be sent to the client, the
backend reference was closed but the waiting results state was not
cleared. This caused a debug assertion to be hit.
2016-09-16 09:58:56 +03:00
Johan Wikman
7bd0b19b59 Update MaxScale version number 2016-09-15 23:13:33 +03:00
Markus Makela
029e6574da MXS-812: Always reset counters when backend is closed
The active operation counters are now closed every time a backend referece
is taken out of use. This should fix a few debug assertions that were hit
in tests.
2016-09-15 08:31:15 +03:00
Markus Makela
6dc75d4b9c MXS-860: Detect whether replication is configured
The `detect_stale_slave` functionality used to only work when MaxScale had
the knowledge that a master server has existed and that replication was
working at some point in time. This might be a "safe" way to do it in
regards to staleness of the data but in practice it is preferrable to
always allow slave to be used for reads.

This change adds the missing functionality to the monitor by assigning
slave status to all servers which are configured as replication slaves
when no master can be found.

The new member variable that was added to the SERVER should be removed in
2.1 where the server_info offers the same functionalty without "polluting"
the SERVER type.
2016-09-12 15:59:08 +03:00
Markus Makela
8be833640f Change restart type to on-abort
MaxScale should only restart if an abort is detects, i.e. MaxScale
crashes.
2016-09-12 09:35:11 +03:00
Markus Makela
e26f3795e2 Remove useless parts from CHK_LOGFILE
The CHK_LOGFILE macro first asserts that the values being checked are
valid and then proceeds to evaluate it again. The result of this
evaluation was not assigned to anything and it caused GCC 6.1.1 to produce
a warning.
2016-09-11 20:37:50 +03:00
Markus Makela
717b623587 Fix crash in server_free
server_free tried to free a char array which wasn't malloc'ed.
2016-09-09 20:39:16 +03:00