Merge branch 'develop' into MXS-329-develop-20151111

This commit is contained in:
Markus Makela
2015-11-13 07:44:23 +02:00
66 changed files with 4807 additions and 4056 deletions

View File

@ -74,7 +74,7 @@ SERVER *server;
server->server_chk_top = CHK_NUM_SERVER;
server->server_chk_tail = CHK_NUM_SERVER;
#endif
server->name = strdup(servname);
server->name = strndup(servname, MAX_SERVER_NAME_LEN);
server->protocol = strdup(protocol);
server->port = port;
server->status = SERVER_RUNNING;
@ -82,6 +82,7 @@ SERVER *server;
server->rlag = -2;
server->master_id = -1;
server->depth = -1;
spinlock_init(&server->lock);
server->persistent = NULL;
server->persistmax = 0;
spinlock_init(&server->persistlock);
@ -666,6 +667,7 @@ char *status = NULL;
void
server_set_status(SERVER *server, int bit)
{
spinlock_acquire(&server->lock);
server->status |= bit;
/** clear error logged flag before the next failure */
@ -673,6 +675,7 @@ server_set_status(SERVER *server, int bit)
{
server->master_err_is_logged = false;
}
spinlock_release(&server->lock);
}
/**
@ -684,7 +687,9 @@ server_set_status(SERVER *server, int bit)
void
server_clear_status(SERVER *server, int bit)
{
spinlock_acquire(&server->lock);
server->status &= ~bit;
spinlock_release(&server->lock);
}
/**
@ -910,3 +915,54 @@ server_update_port(SERVER *server, unsigned short port)
spinlock_release(&server_spin);
}
static struct {
char *str;
unsigned int bit;
} ServerBits[] = {
{ "running", SERVER_RUNNING },
{ "master", SERVER_MASTER },
{ "slave", SERVER_SLAVE },
{ "synced", SERVER_JOINED },
{ "ndb", SERVER_NDB },
{ "maintenance", SERVER_MAINT },
{ "maint", SERVER_MAINT },
{ NULL, 0 }
};
/**
* Map the server status bit
*
* @param str String representation
* @return bit value or 0 on error
*/
unsigned int
server_map_status(char *str)
{
int i;
for (i = 0; ServerBits[i].str; i++)
if (!strcasecmp(str, ServerBits[i].str))
return ServerBits[i].bit;
return 0;
}
/**
* Set the version string of the server.
* @param server Server to update
* @param string Version string
* @return True if the assignment of the version string was successful, false if
* memory allocation failed.
*/
bool server_set_version_string(SERVER* server, const char* string)
{
bool rval = true;
spinlock_acquire(&server->lock);
free(server->server_string);
if ((server->server_string = strdup(string)) == NULL)
{
MXS_ERROR("Memory allocation failed.");
rval = false;
}
spinlock_release(&server->lock);
return rval;
}