Closes #3298: Fixed unnecessary port check and logging while flushing admin variables to runtime

pull/3299/head
Javier Jaramago Fernández 5 years ago
parent e61b82a439
commit e2432bb661

@ -5835,20 +5835,29 @@ void ProxySQL_Admin::flush_admin_variables___database_to_runtime(SQLite3DB *db,
};
bool free_restapi_port = false;
int e_port_check = check_port_availability(variables.restapi_port, &free_restapi_port);
if (free_restapi_port == false) {
if (e_port_check == -1) {
proxy_error("Unable to start 'ProxySQL_RestAPI_Server', failed to set 'SO_REUSEADDR' to check port availability.\n");
} else {
proxy_error(
"Unable to start 'ProxySQL_RestAPI_Server', port '%d' already in use.\n",
variables.restapi_port
);
// Helper lambda taking a boolean reference as a parameter to check if 'restapi_port' is available.
// In case of port not being free or error, logs an error 'ProxySQL_RestAPI_Server' isn't able to be started.
const auto check_restapi_port = [&](bool& restapi_port_free) -> void {
int e_port_check = check_port_availability(variables.restapi_port, &restapi_port_free);
if (restapi_port_free == false) {
if (e_port_check == -1) {
proxy_error("Unable to start 'ProxySQL_RestAPI_Server', failed to set 'SO_REUSEADDR' to check port availability.\n");
} else {
proxy_error(
"Unable to start 'ProxySQL_RestAPI_Server', port '%d' already in use.\n",
variables.restapi_port
);
}
}
}
};
if (variables.restapi_enabled != variables.restapi_enabled_old) {
if (variables.restapi_enabled) {
check_restapi_port(free_restapi_port);
}
if (variables.restapi_enabled && free_restapi_port) {
AdminRestApiServer = new ProxySQL_RESTAPI_Server(
variables.restapi_port, {{"/metrics", prometheus_callback}}
@ -5864,6 +5873,11 @@ void ProxySQL_Admin::flush_admin_variables___database_to_runtime(SQLite3DB *db,
delete AdminRestApiServer;
AdminRestApiServer = NULL;
}
if (variables.restapi_enabled) {
check_restapi_port(free_restapi_port);
}
if (variables.restapi_enabled && free_restapi_port) {
AdminRestApiServer = new ProxySQL_RESTAPI_Server(
variables.restapi_port, {{"/metrics", prometheus_callback}}

Loading…
Cancel
Save