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:
Markus Mäkelä
2018-08-29 00:26:32 +03:00
parent b2047aaa80
commit e260d493fd
4 changed files with 8 additions and 40 deletions

View File

@ -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

View File

@ -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)
{ {

View File

@ -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);

View File

@ -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.");