Merge branch '2.3' into 2.4

This commit is contained in:
Marko 2019-08-09 19:44:46 +03:00
commit 8ce6a679be
4 changed files with 35 additions and 0 deletions

View File

@ -974,6 +974,22 @@ Note that you need to specify with `retain_last_statements` how many statements
MaxScale should retain for each session. Unless it has been set to another value
than `0`, this configuration setting will not have an effect.
### `session_trace`
How many log entries are stored in the session specific trace log. This log is
written to disk when a session ends abnormally and can be used for debugging
purposes. It would be good to enable this if a session is disconnected and the
log is not detailed enough. In this case the info log might reveal the true
cause of why the connection was closed.
```
session_trace=20
```
Default is `0`.
The session trace log is also exposed by REST API and is shown with
`maxctrl show sessions`.
### `writeq_high_water`
High water mark for network write buffer. Controls when network traffic

View File

@ -191,6 +191,7 @@ extern const char CN_SERVICE[];
extern const char CN_SERVICES[];
extern const char CN_SESSION_TRACK_TRX_STATE[];
extern const char CN_SESSIONS[];
extern const char CN_SESSION_TRACE[];
extern const char CN_SKIP_PERMISSION_CHECKS[];
extern const char CN_SOCKET[];
extern const char CN_SSL_CA_CERT[];

View File

@ -4642,6 +4642,7 @@ json_t* config_maxscale_to_json(const char* host)
json_object_set_new(param, CN_RETAIN_LAST_STATEMENTS, json_integer(session_get_retain_last_statements()));
json_object_set_new(param, CN_DUMP_LAST_STATEMENTS, json_string(session_get_dump_statements_str()));
json_object_set_new(param, CN_SESSION_TRACE, json_integer(session_get_session_trace()));
json_object_set_new(param, CN_LOAD_PERSISTED_CONFIGS, json_boolean(cnf->load_persisted_configs));
json_object_set_new(param, CN_MAX_AUTH_ERRORS_UNTIL_BLOCK,
json_integer(cnf->max_auth_errors_until_block));

View File

@ -943,6 +943,23 @@ bool runtime_alter_maxscale(const char* name, const char* value)
config_runtime_error("Invalid value for '%s': %s", CN_MAX_AUTH_ERRORS_UNTIL_BLOCK, value);
}
}
else if (key == CN_SESSION_TRACE)
{
char* endptr;
long intval = strtol(value, &endptr, 10);
if (*endptr == '\0' && intval >= 0)
{
session_set_session_trace(intval);
mxb_log_set_session_trace(true);
rval = true;
}
else
{
rval = false;
config_runtime_error("Invalid value for '%s': %s", CN_SESSION_TRACE, value);
}
}
else if (config_can_modify_at_runtime(key.c_str()))
{
config_runtime_error("Global parameter '%s' cannot be modified at runtime", name);