Merge branch '2.3' into 2.4
This commit is contained in:
@ -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
|
of memory unless the sessions are closed. This can be solved by adjusting the
|
||||||
value of `max_sescmd_history`.
|
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
|
## Limitations
|
||||||
|
|
||||||
Read queries are routed to the master server in the following situations:
|
Read queries are routed to the master server in the following situations:
|
||||||
|
@ -208,6 +208,11 @@ const session_fields = [
|
|||||||
path: 'attributes.idle',
|
path: 'attributes.idle',
|
||||||
description: 'How long the session has been idle, in seconds'
|
description: 'How long the session has been idle, in seconds'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Client TLS Cipher',
|
||||||
|
path: 'attributes.client.cipher',
|
||||||
|
description: 'Client TLS cipher'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'Connections',
|
name: 'Connections',
|
||||||
path: 'attributes.connections[].server',
|
path: 'attributes.connections[].server',
|
||||||
|
@ -3256,7 +3256,16 @@ json_t* dcb_to_json(DCB* dcb)
|
|||||||
char buf[25];
|
char buf[25];
|
||||||
snprintf(buf, sizeof(buf), "%p", dcb);
|
snprintf(buf, sizeof(buf), "%p", dcb);
|
||||||
json_object_set_new(obj, "id", json_string(buf));
|
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)
|
if (dcb->func.diagnostics_json)
|
||||||
{
|
{
|
||||||
|
@ -1108,6 +1108,21 @@ QueryClassifier::RouteInfo QueryClassifier::update_route_info(
|
|||||||
|
|
||||||
process_routing_hints(pBuffer->hint, &route_target);
|
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)
|
if (session_trx_is_ending(m_pSession)
|
||||||
|| qc_query_is_type(type_mask, QUERY_TYPE_BEGIN_TRX))
|
|| 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, "connections", dcb_arr);
|
||||||
|
json_object_set_new(attr, "client", dcb_to_json(session->client_dcb));
|
||||||
|
|
||||||
json_t* queries = session->queries_as_json();
|
json_t* queries = session->queries_as_json();
|
||||||
json_object_set_new(attr, "queries", queries);
|
json_object_set_new(attr, "queries", queries);
|
||||||
|
Reference in New Issue
Block a user