Commit Graph

6048 Commits

Author SHA1 Message Date
968d43799f MXS-3273: Ignore unexpected responses
Unlike readwritesplit, schemarouter will process all responses from
backends as if they are expected. There are cases where errors are
generated that aren't sent as a response to a query. These queries must be
ignored and not routed to the client. Copying the code as-is from
readwritesplit isn't the cleanest solution but it avoids refactoring code
in a patch release.

The custom error number (2003) used by the backend protocol code was not
an actual error number that the server would send. The error code in
question was for an error that only the C connector returns:
CR_CONN_HOST_ERROR. Using ER_CONNECTION_KILLED as the error number better
conveys the fact that the connection was killed due to a reason not
related to any ongoing query.

By using a known error number that is correctly handled, we also avoid
writing errors to the client in the middle of a resultset or as the
initial response to a result. This explains why the problem described in
MXS-3267 happened in the first place: an unrelated connection was lost in
the middle of a resultset and the error was interpreted as the end of a
resultset. As a result of there being more data to be read, the unexpected
result state messages were logged.
2020-11-04 16:44:46 +02:00
87f97a16c3 Log server name in error message
This makes it clear which server failed.
2020-10-29 15:33:48 +02:00
dad5e09e5e Merge branch '2.3' into 2.4 2020-10-19 15:08:22 +03:00
9bc7887728 MXS-3239 Rename [c|C]clustrix names to [x|X]pand names 2020-10-19 13:56:36 +03:00
192ad2289f MXS-3239 Rename clustrix* to xpand*
Typenames still Clustrix.
2020-10-19 13:40:54 +03:00
48ef9754df MXS-3241: Check buffer length
The `is_set` call assumes that at least three characters are present.
2020-10-16 12:22:06 +03:00
faaf7f483e 2.4.13 Update Change Date 2020-10-14 09:15:46 +03:00
933ce0c86a MXS-3220: Fix crash on failed master history replay
This could happen if a session command triggers a master reconnection and
the connection fails while the history replay is ongoing. The code assumed
that history replay would only happen when a query was in the query queue.
2020-10-13 14:31:49 +03:00
ab4ac8e588 MXS-3200 Log mapping error as it will lead to session close 2020-10-12 08:31:36 +03:00
147ed8ef22 MXS-3200 Ensure that passed in p to buffer remains valid
The pointer to pointer to GWBUF must in all cases be updated.
Otherwise it will lead to
1) access to free data, and
2) a double delete.
2020-10-12 08:31:36 +03:00
9304230212 MXS-3149 Properly remove master-status from server during demotion
Removing it from the pending status field has not effect as the
pending changes have all ready been written to real status.
2020-09-02 15:13:23 +03:00
babcda3eca 2.4.12 Update Change Date 2020-08-24 09:42:48 +03:00
c5b47389df MXS-3106: Always write the final COM_QUIT
This seems to help with a regression that was introduced in 2.4.11.
2020-08-21 14:38:37 +03:00
b90d42b999 Merge branch '2.3' into 2.4 2020-08-21 10:27:43 +03:00
e105f06ea3 Log latest session command on unexpected result 2020-08-21 09:50:29 +03:00
759c63c8bb Merge branch '2.3' into 2.4 2020-08-20 17:44:09 +03:00
87540f0ea0 MXS-3101 Improve proxy protocol header generation
Client connection file descriptor no longer read. The header now
contains the server's address instead of MaxScale's address.
2020-08-20 15:03:19 +03:00
49ea5da9e2 MXS-3100 Fix memory leak in top-filter 2020-08-10 15:36:19 +03:00
63e4a63b62 MXS-3101 Log actual error for getpeername/getsockname 2020-08-07 12:47:15 +03:00
5c76d3d906 Merge branch '2.3' into 2.4 2020-07-24 08:01:53 +03:00
aaec73a8c8 MXS-3089: Close backend on failed session command
This correctly triggers the session command response processing to accept
results from other servers than the current master backend if the session
can continue. If the session cannot continue, it will be stopped
immediately.
2020-07-23 09:26:53 +03:00
cf1d1178d7 MXS-3087: Fix diagnostic memory leaks
Fixed leak in load_utils.cc and the cache filter. Also changed all
instances of json_object_set with json_object_set_new to make sure it's
only used when the references are to be stolen.
2020-07-22 13:27:36 +03:00
f2a837e2f1 Fix memory leak in throttlefilter
The filter would leak the buffer when it disconnects a client. This fixes
the throttlefilter test if it's run with ASAN or valgrind.
2020-07-15 15:35:12 +03:00
fc9c9fcd77 2.4.11 Update change date 2020-07-07 10:01:38 +03:00
32fa7b6800 MXS-3069: Fix plugin name comparison
Connectors that wouldn't send the plugin name even when the plugin
authentication capability was enabled would have to do an extra step in
the authentication.
2020-07-07 09:23:23 +03:00
4fe71b41ed MXS-3038: Don't connect to lagging slaves
There's no use connecting to a lagging slave if a replication lag limit
has been set.
2020-07-07 09:23:22 +03:00
7520efd218 MXS-3059: Don't use STL containers concurrently
The diagnostics_json call could access the std::unordered_map at the same
time it was being updated by the monitoring thread. This leads to
undefined behavior which in the case of MXS-3059 manifested as a segfault.
2020-07-07 09:23:22 +03:00
ad4bd26ff0 MXS-2585: Check for failed allocations
Since nothrow was used, the return value should be checked. By moving the
null-check after the node allocation part, we'll detect it.
2020-07-07 09:23:22 +03:00
ba289dc589 Fix debug assertion in cache
The call to gwbuf_length will fail if the pointed to buffer isn't the head
of the chain. To prevent this, the length is calculated before the buffer
is appended.

Also fixed the use of gwbuf_append. The return value should be assigned
and the code shouldn't reply on the value passed to the function being
correct.
2020-07-07 09:23:22 +03:00
7ad3485892 MXS-3054: Fix crash on malformed mapping reply
The code used a null GWBUF with gwbuf_append which causes a crash. The
return value of the function that used it was also not correctly handled
and would be mistaken for a different error.
2020-07-02 11:34:40 +03:00
608eb95284 MXS-3055: Prevent sending of an extra COM_QUIT
If the protocol routes a COM_QUIT packet to the backend, it must not
generate a packet when it is shutting down. This could cause unexpected
write errors if the backend server managed to close the socket before the
write was done.
2020-07-02 11:34:40 +03:00
a655c5d08c MXS-619: Allow backend authentication to complete
By deferring the closing of a DCB until the protocol tells that it's in a
stable state, we avoid closing the connection mid-authentication. This
makes sure that all connections have reached a stable state before they
are closed which in turn prevents the connections from counting towards
aborted connects (or failed authentications like it did with the old fix).
2020-07-02 11:34:39 +03:00
ae2cad9254 MXS-619: Revert the partial fix
The fix causes a lot of confusion with the failed authentication messages
and is not worth it to fix the problem.
2020-07-02 11:22:22 +03:00
a4a7a52150 Merge branch '2.4.10' into 2.4 2020-06-08 11:40:41 +03:00
098ffde13c Remove obsolete debug assert from PamAuth
Would be always hit in debug mode.
2020-06-05 19:04:44 +03:00
7781f7042a 2.4.10 Update change date 2020-06-05 10:21:37 +03:00
5ebae9be90 Merge branch '2.3' into 2.4 2020-06-05 09:36:24 +03:00
aa11c960b1 2.3.20 Update change date 2020-06-05 09:31:45 +03:00
da5af75c1c MXS-3021: Make strictness of dbfwfilter configurable
In some cases the dbfwfilter is too strict and SQL that would not match a
rule is blocked due to it not being fully parsed. To allow a more lenient
mode of operation, the requirement for full parsing must be made
configurable.
2020-06-04 08:28:23 +03:00
727aeb4a08 Merge branch '2.3' into 2.4 2020-06-02 10:53:05 +03:00
cb8b4546cb Don't use client SHA1 for fake responses
When a fake handshake response is generated for a connection that hasn't
received the server's handshake, the client's SHA1 would be used with a
static scramble. This, in theory, would weaken the authentication to some
extend so to completely prevent this, a null password is used. This
removes any possibility of the password being exposed.
2020-06-02 10:17:40 +03:00
321126660f 2.4.9 Update Change Date 2020-04-29 10:17:14 +03:00
d3d7054639 Merge branch '2.3' into 2.4 2020-04-24 16:09:20 +03:00
25b8eeb415 MXS-2972: Store servers in the cache key
This allows the set of servers used by the service to also participate in
the cache value resolution. This will prevent the most obvious of problems
but any abstractions of the servers will prevent this from working.
2020-04-23 14:34:38 +03:00
f527a8f2e6 2.3.19 Update Change Date 2020-04-23 14:23:57 +03:00
e87ad4abb9 Log USE message on info level
This tells us which server gets the USE command.
2020-04-22 09:01:27 +03:00
9efd33186d MXS-2968: Fix direct replication server_id 2020-04-22 09:01:27 +03:00
e6ee3aaff4 MXS-2943: Use correct variable 2020-03-26 06:08:56 +02:00
557a108940 MXS-2943: Add ColumnStore-as-a-plugin support
The version of the ColumnStore that is distributed as a plugin with
MariaDB is now correctly detected.
2020-03-25 15:33:15 +02:00
b98b8f9d4a MXS-2939: Fix reconnection with session commands
Session commands did not trigger a reconnection process which caused
sessions to be closed in cases where recovery was possible.

Added a test case that verifies the patch fixes the problem.
2020-03-19 15:12:31 +02:00