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.
Lowering max_connections to 10 prevented the test system itself from
connecting to it. The replication slaves count towards max_connections and
with up to 15 connections in the test, the limit should be higher.
To avouid failures caused by default MariaDB configuration files
containing entries incompatible with mysqltest, mysqltest is
invoked with the glah --no-defaults, which will cause it *not* to
read any configuration files.
Now MDBCI is responsible for Clustrix installation
as well as license processing.
Clustrix version is hardcoded now
(until MDBCI fix for finding latest version)
- Rename files
- Change Clustrix -> Xpand in files
- Update links
- Add warning that the monitor is intended for use with a native
Xpand cluster, not with the Xpand storage engine.
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.