Merge branch '2.3' into 2.4
This commit is contained in:
commit
caedf79464
@ -771,6 +771,19 @@ long-running sessions might cause MariaDB MaxScale to consume a growing amount
|
||||
of memory unless the sessions are closed. This can be solved by adjusting the
|
||||
value of `max_sescmd_history`.
|
||||
|
||||
### Routing to previous target
|
||||
|
||||
In the following cases, a query is routed to the same server where the previous
|
||||
query was executed. If no previous target is found, the query is routed to the
|
||||
current master.
|
||||
|
||||
* If a query uses the `FOUND_ROWS()` function, it will be routed to the server
|
||||
where the last query was executed. This is done with the assumption that a
|
||||
query with `SQL_CALC_FOUND_ROWS` was previously executed.
|
||||
|
||||
* COM_STMT_FETCH_ROWS will always be routed to the same server where the
|
||||
COM_STMT_EXECUTE was routed.
|
||||
|
||||
## Limitations
|
||||
|
||||
Read queries are routed to the master server in the following situations:
|
||||
|
@ -208,6 +208,11 @@ const session_fields = [
|
||||
path: 'attributes.idle',
|
||||
description: 'How long the session has been idle, in seconds'
|
||||
},
|
||||
{
|
||||
name: 'Client TLS Cipher',
|
||||
path: 'attributes.client.cipher',
|
||||
description: 'Client TLS cipher'
|
||||
},
|
||||
{
|
||||
name: 'Connections',
|
||||
path: 'attributes.connections[].server',
|
||||
|
@ -3256,7 +3256,16 @@ json_t* dcb_to_json(DCB* dcb)
|
||||
char buf[25];
|
||||
snprintf(buf, sizeof(buf), "%p", dcb);
|
||||
json_object_set_new(obj, "id", json_string(buf));
|
||||
json_object_set_new(obj, "server", json_string(dcb->server->name()));
|
||||
|
||||
if (dcb->server)
|
||||
{
|
||||
json_object_set_new(obj, "server", json_string(dcb->server->name()));
|
||||
}
|
||||
|
||||
if (dcb->ssl)
|
||||
{
|
||||
json_object_set_new(obj, "cipher", json_string(SSL_get_cipher_name(dcb->ssl)));
|
||||
}
|
||||
|
||||
if (dcb->func.diagnostics_json)
|
||||
{
|
||||
|
@ -1108,6 +1108,21 @@ QueryClassifier::RouteInfo QueryClassifier::update_route_info(
|
||||
|
||||
process_routing_hints(pBuffer->hint, &route_target);
|
||||
|
||||
if (route_target == TARGET_SLAVE)
|
||||
{
|
||||
const QC_FUNCTION_INFO* infos = nullptr;
|
||||
size_t n_infos = 0;
|
||||
qc_get_function_info(pBuffer, &infos, &n_infos);
|
||||
|
||||
for (size_t i = 0; i < n_infos; ++i)
|
||||
{
|
||||
if (strcasecmp(infos[i].name, "FOUND_ROWS") == 0)
|
||||
{
|
||||
route_target = TARGET_LAST_USED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (session_trx_is_ending(m_pSession)
|
||||
|| qc_query_is_type(type_mask, QUERY_TYPE_BEGIN_TRX))
|
||||
{
|
||||
|
@ -770,6 +770,7 @@ json_t* session_json_data(const Session* session, const char* host, bool rdns)
|
||||
}
|
||||
|
||||
json_object_set_new(attr, "connections", dcb_arr);
|
||||
json_object_set_new(attr, "client", dcb_to_json(session->client_dcb));
|
||||
|
||||
json_t* queries = session->queries_as_json();
|
||||
json_object_set_new(attr, "queries", queries);
|
||||
|
Loading…
x
Reference in New Issue
Block a user