Disallow duplicate server parameters
By replacing server_add_parameter and server_update_parameter with a single server_set_parameter function, duplication of parameters is prevented.
This commit is contained in:
@ -390,15 +390,6 @@ extern SERVER* server_alloc(const char *name, MXS_CONFIG_PARAMETER* params);
|
|||||||
*/
|
*/
|
||||||
bool server_serialize(const SERVER *server);
|
bool server_serialize(const SERVER *server);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Add a server parameter
|
|
||||||
*
|
|
||||||
* @param server Server where the parameter is added
|
|
||||||
* @param name Parameter name
|
|
||||||
* @param value Parameter value
|
|
||||||
*/
|
|
||||||
void server_add_parameter(SERVER *server, const char *name, const char *value);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Remove a server parameter
|
* @brief Remove a server parameter
|
||||||
*
|
*
|
||||||
@ -409,13 +400,13 @@ void server_add_parameter(SERVER *server, const char *name, const char *value);
|
|||||||
bool server_remove_parameter(SERVER *server, const char *name);
|
bool server_remove_parameter(SERVER *server, const char *name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Update server parameter
|
* @brief Set server parameter
|
||||||
*
|
*
|
||||||
* @param server Server to update
|
* @param server Server to update
|
||||||
* @param name Parameter to update
|
* @param name Parameter to set
|
||||||
* @param value New value of parameter
|
* @param value Value of parameter
|
||||||
*/
|
*/
|
||||||
void server_update_parameter(SERVER *server, const char *name, const char *value);
|
void server_set_parameter(SERVER *server, const char *name, const char *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check if a server points to a local MaxScale service
|
* @brief Check if a server points to a local MaxScale service
|
||||||
|
|||||||
@ -439,7 +439,7 @@ bool runtime_alter_server(SERVER *server, const char *key, const char *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
mxs::SpinLockGuard guard(crt_lock);
|
mxs::SpinLockGuard guard(crt_lock);
|
||||||
server_update_parameter(server, key, value);
|
server_set_parameter(server, key, value);
|
||||||
|
|
||||||
if (strcmp(key, CN_ADDRESS) == 0)
|
if (strcmp(key, CN_ADDRESS) == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -183,7 +183,7 @@ SERVER* server_alloc(const char *name, MXS_CONFIG_PARAMETER* params)
|
|||||||
|
|
||||||
for (MXS_CONFIG_PARAMETER *p = params; p; p = p->next)
|
for (MXS_CONFIG_PARAMETER *p = params; p; p = p->next)
|
||||||
{
|
{
|
||||||
server_add_parameter(server, p->name, p->value);
|
server_set_parameter(server, p->name, p->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
Guard guard(server_lock);
|
Guard guard(server_lock);
|
||||||
@ -845,29 +845,6 @@ static SERVER_PARAM* allocate_parameter(const char* name, const char* value)
|
|||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a server parameter to a server.
|
|
||||||
*
|
|
||||||
* Server parameters may be used by routing to weight the load
|
|
||||||
* balancing they apply to the server.
|
|
||||||
*
|
|
||||||
* @param server The server we are adding the parameter to
|
|
||||||
* @param name The parameter name
|
|
||||||
* @param value The parameter value
|
|
||||||
*/
|
|
||||||
void server_add_parameter(SERVER *server, const char *name, const char *value)
|
|
||||||
{
|
|
||||||
SERVER_PARAM* param = allocate_parameter(name, value);
|
|
||||||
|
|
||||||
if (param)
|
|
||||||
{
|
|
||||||
spinlock_acquire(&server->lock);
|
|
||||||
param->next = server->parameters;
|
|
||||||
server->parameters = param;
|
|
||||||
spinlock_release(&server->lock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool server_remove_parameter(SERVER *server, const char *name)
|
bool server_remove_parameter(SERVER *server, const char *name)
|
||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
@ -887,7 +864,7 @@ bool server_remove_parameter(SERVER *server, const char *name)
|
|||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void server_update_parameter(SERVER *server, const char *name, const char *value)
|
void server_set_parameter(SERVER *server, const char *name, const char *value)
|
||||||
{
|
{
|
||||||
SERVER_PARAM* param = allocate_parameter(name, value);
|
SERVER_PARAM* param = allocate_parameter(name, value);
|
||||||
|
|
||||||
|
|||||||
@ -71,7 +71,7 @@ test1()
|
|||||||
char buf[120];
|
char buf[120];
|
||||||
fprintf(stderr, "\t..done\nTest Parameter for Server.");
|
fprintf(stderr, "\t..done\nTest Parameter for Server.");
|
||||||
mxb_assert_message(!server_get_parameter(server, "name", buf, sizeof(buf)), "Parameter should be null when not set");
|
mxb_assert_message(!server_get_parameter(server, "name", buf, sizeof(buf)), "Parameter should be null when not set");
|
||||||
server_add_parameter(server, "name", "value");
|
server_set_parameter(server, "name", "value");
|
||||||
mxb_assert(server_get_parameter(server, "name", buf, sizeof(buf)));
|
mxb_assert(server_get_parameter(server, "name", buf, sizeof(buf)));
|
||||||
mxb_assert_message(strcmp("value", buf) == 0, "Parameter should be returned correctly");
|
mxb_assert_message(strcmp("value", buf) == 0, "Parameter should be returned correctly");
|
||||||
fprintf(stderr, "\t..done\nTesting Unique Name for Server.");
|
fprintf(stderr, "\t..done\nTesting Unique Name for Server.");
|
||||||
|
|||||||
Reference in New Issue
Block a user