Reindent server/core/server.c
This commit is contained in:
@ -66,10 +66,12 @@ static void spin_reporter(void *, char *, int);
|
||||
SERVER *
|
||||
server_alloc(char *servname, char *protocol, unsigned short port)
|
||||
{
|
||||
SERVER *server;
|
||||
SERVER *server;
|
||||
|
||||
if ((server = (SERVER *)calloc(1, sizeof(SERVER))) == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#if defined(SS_DEBUG)
|
||||
server->server_chk_top = CHK_NUM_SERVER;
|
||||
server->server_chk_tail = CHK_NUM_SERVER;
|
||||
@ -105,7 +107,7 @@ SERVER *server;
|
||||
int
|
||||
server_free(SERVER *tofreeserver)
|
||||
{
|
||||
SERVER *server;
|
||||
SERVER *server;
|
||||
|
||||
/* First of all remove from the linked list */
|
||||
spinlock_acquire(&server_spin);
|
||||
@ -121,19 +123,27 @@ SERVER *server;
|
||||
server = server->next;
|
||||
}
|
||||
if (server)
|
||||
{
|
||||
server->next = tofreeserver->next;
|
||||
}
|
||||
}
|
||||
spinlock_release(&server_spin);
|
||||
|
||||
/* Clean up session and free the memory */
|
||||
free(tofreeserver->name);
|
||||
free(tofreeserver->protocol);
|
||||
if (tofreeserver->unique_name)
|
||||
{
|
||||
free(tofreeserver->unique_name);
|
||||
}
|
||||
if (tofreeserver->server_string)
|
||||
{
|
||||
free(tofreeserver->server_string);
|
||||
}
|
||||
if (tofreeserver->persistent)
|
||||
{
|
||||
dcb_persistent_clean_count(tofreeserver->persistent, true);
|
||||
}
|
||||
free(tofreeserver);
|
||||
return 1;
|
||||
}
|
||||
@ -157,7 +167,8 @@ server_get_persistent(SERVER *server, char *user, const char *protocol)
|
||||
{
|
||||
spinlock_acquire(&server->persistlock);
|
||||
dcb = server->persistent;
|
||||
while (dcb) {
|
||||
while (dcb)
|
||||
{
|
||||
if (dcb->user
|
||||
&& dcb->protoname
|
||||
&& !dcb-> dcb_errhandle_called
|
||||
@ -225,14 +236,16 @@ server_set_unique_name(SERVER *server, char *name)
|
||||
SERVER *
|
||||
server_find_by_unique_name(char *name)
|
||||
{
|
||||
SERVER *server;
|
||||
SERVER *server;
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
server = allServers;
|
||||
while (server)
|
||||
{
|
||||
if (server->unique_name && strcmp(server->unique_name, name) == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
server = server->next;
|
||||
}
|
||||
spinlock_release(&server_spin);
|
||||
@ -249,14 +262,16 @@ SERVER *server;
|
||||
SERVER *
|
||||
server_find(char *servname, unsigned short port)
|
||||
{
|
||||
SERVER *server;
|
||||
SERVER *server;
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
server = allServers;
|
||||
while (server)
|
||||
{
|
||||
if (strcmp(server->name, servname) == 0 && server->port == port)
|
||||
{
|
||||
break;
|
||||
}
|
||||
server = server->next;
|
||||
}
|
||||
spinlock_release(&server_spin);
|
||||
@ -290,7 +305,7 @@ printServer(SERVER *server)
|
||||
void
|
||||
printAllServers()
|
||||
{
|
||||
SERVER *server;
|
||||
SERVER *server;
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
server = allServers;
|
||||
@ -311,8 +326,8 @@ SERVER *server;
|
||||
void
|
||||
dprintAllServers(DCB *dcb)
|
||||
{
|
||||
SERVER *server;
|
||||
char *stat;
|
||||
SERVER *server;
|
||||
char *stat;
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
server = allServers;
|
||||
@ -336,26 +351,34 @@ char *stat;
|
||||
server->node_id);
|
||||
dcb_printf(dcb, "\tMaster Id: %d\n",
|
||||
server->master_id);
|
||||
if (server->slaves) {
|
||||
if (server->slaves)
|
||||
{
|
||||
int i;
|
||||
dcb_printf(dcb, "\tSlave Ids: ");
|
||||
for (i = 0; server->slaves[i]; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
dcb_printf(dcb, "%li", server->slaves[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
dcb_printf(dcb, ", %li ", server->slaves[i]);
|
||||
}
|
||||
}
|
||||
dcb_printf(dcb, "\n");
|
||||
}
|
||||
dcb_printf(dcb, "\tRepl Depth: %d\n",
|
||||
server->depth);
|
||||
if (SERVER_IS_SLAVE(server) || SERVER_IS_RELAY_SERVER(server)) {
|
||||
if (server->rlag >= 0) {
|
||||
if (SERVER_IS_SLAVE(server) || SERVER_IS_RELAY_SERVER(server))
|
||||
{
|
||||
if (server->rlag >= 0)
|
||||
{
|
||||
dcb_printf(dcb, "\tSlave delay:\t\t%d\n", server->rlag);
|
||||
}
|
||||
}
|
||||
if (server->node_ts > 0) {
|
||||
if (server->node_ts > 0)
|
||||
{
|
||||
dcb_printf(dcb, "\tLast Repl Heartbeat:\t%lu\n", server->node_ts);
|
||||
}
|
||||
dcb_printf(dcb, "\tNumber of connections: %d\n",
|
||||
@ -391,10 +414,10 @@ char *stat;
|
||||
void
|
||||
dprintAllServersJson(DCB *dcb)
|
||||
{
|
||||
SERVER *server;
|
||||
char *stat;
|
||||
int len = 0;
|
||||
int el = 1;
|
||||
SERVER *server;
|
||||
char *stat;
|
||||
int len = 0;
|
||||
int el = 1;
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
server = allServers;
|
||||
@ -418,32 +441,42 @@ int el = 1;
|
||||
dcb_printf(dcb, " \"port\": \"%d\",\n",
|
||||
server->port);
|
||||
if (server->server_string)
|
||||
{
|
||||
dcb_printf(dcb, " \"version\": \"%s\",\n",
|
||||
server->server_string);
|
||||
}
|
||||
dcb_printf(dcb, " \"nodeId\": \"%d\",\n",
|
||||
server->node_id);
|
||||
dcb_printf(dcb, " \"masterId\": \"%d\",\n",
|
||||
server->master_id);
|
||||
if (server->slaves) {
|
||||
if (server->slaves)
|
||||
{
|
||||
int i;
|
||||
dcb_printf(dcb, " \"slaveIds\": [ ");
|
||||
for (i = 0; server->slaves[i]; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
dcb_printf(dcb, "%li", server->slaves[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
dcb_printf(dcb, ", %li ", server->slaves[i]);
|
||||
}
|
||||
}
|
||||
dcb_printf(dcb, "],\n");
|
||||
}
|
||||
dcb_printf(dcb, " \"replDepth\": \"%d\",\n",
|
||||
server->depth);
|
||||
if (SERVER_IS_SLAVE(server) || SERVER_IS_RELAY_SERVER(server)) {
|
||||
if (server->rlag >= 0) {
|
||||
if (SERVER_IS_SLAVE(server) || SERVER_IS_RELAY_SERVER(server))
|
||||
{
|
||||
if (server->rlag >= 0)
|
||||
{
|
||||
dcb_printf(dcb, " \"slaveDelay\": \"%d\",\n", server->rlag);
|
||||
}
|
||||
}
|
||||
if (server->node_ts > 0) {
|
||||
if (server->node_ts > 0)
|
||||
{
|
||||
dcb_printf(dcb, " \"lastReplHeartbeat\": \"%lu\",\n", server->node_ts);
|
||||
}
|
||||
dcb_printf(dcb, " \"totalConnections\": \"%d\",\n",
|
||||
@ -452,10 +485,12 @@ int el = 1;
|
||||
server->stats.n_current);
|
||||
dcb_printf(dcb, " \"currentOps\": \"%d\"\n",
|
||||
server->stats.n_current_ops);
|
||||
if (el < len) {
|
||||
if (el < len)
|
||||
{
|
||||
dcb_printf(dcb, " },\n");
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
dcb_printf(dcb, " }\n");
|
||||
}
|
||||
server = server->next;
|
||||
@ -475,8 +510,8 @@ int el = 1;
|
||||
void
|
||||
dprintServer(DCB *dcb, SERVER *server)
|
||||
{
|
||||
char *stat;
|
||||
SERVER_PARAM *param;
|
||||
char *stat;
|
||||
SERVER_PARAM *param;
|
||||
|
||||
dcb_printf(dcb, "Server %p (%s)\n", server, server->unique_name);
|
||||
dcb_printf(dcb, "\tServer: %s\n", server->name);
|
||||
@ -486,28 +521,38 @@ SERVER_PARAM *param;
|
||||
dcb_printf(dcb, "\tProtocol: %s\n", server->protocol);
|
||||
dcb_printf(dcb, "\tPort: %d\n", server->port);
|
||||
if (server->server_string)
|
||||
{
|
||||
dcb_printf(dcb, "\tServer Version:\t\t\t%s\n", server->server_string);
|
||||
}
|
||||
dcb_printf(dcb, "\tNode Id: %d\n", server->node_id);
|
||||
dcb_printf(dcb, "\tMaster Id: %d\n", server->master_id);
|
||||
if (server->slaves) {
|
||||
if (server->slaves)
|
||||
{
|
||||
int i;
|
||||
dcb_printf(dcb, "\tSlave Ids: ");
|
||||
for (i = 0; server->slaves[i]; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
dcb_printf(dcb, "%li", server->slaves[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
dcb_printf(dcb, ", %li ", server->slaves[i]);
|
||||
}
|
||||
}
|
||||
dcb_printf(dcb, "\n");
|
||||
}
|
||||
dcb_printf(dcb, "\tRepl Depth: %d\n", server->depth);
|
||||
if (SERVER_IS_SLAVE(server) || SERVER_IS_RELAY_SERVER(server)) {
|
||||
if (server->rlag >= 0) {
|
||||
if (SERVER_IS_SLAVE(server) || SERVER_IS_RELAY_SERVER(server))
|
||||
{
|
||||
if (server->rlag >= 0)
|
||||
{
|
||||
dcb_printf(dcb, "\tSlave delay:\t\t%d\n", server->rlag);
|
||||
}
|
||||
}
|
||||
if (server->node_ts > 0) {
|
||||
if (server->node_ts > 0)
|
||||
{
|
||||
struct tm result;
|
||||
char buf[40];
|
||||
dcb_printf(dcb, "\tLast Repl Heartbeat:\t%s",
|
||||
@ -565,7 +610,7 @@ spin_reporter(void *dcb, char *desc, int value)
|
||||
void
|
||||
dprintPersistentDCBs(DCB *pdcb, SERVER *server)
|
||||
{
|
||||
DCB *dcb;
|
||||
DCB *dcb;
|
||||
|
||||
spinlock_acquire(&server->persistlock);
|
||||
#if SPINLOCK_PROFILE
|
||||
@ -588,8 +633,8 @@ DCB *dcb;
|
||||
void
|
||||
dListServers(DCB *dcb)
|
||||
{
|
||||
SERVER *server;
|
||||
char *stat;
|
||||
SERVER *server;
|
||||
char *stat;
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
server = allServers;
|
||||
@ -612,7 +657,9 @@ char *stat;
|
||||
server = server->next;
|
||||
}
|
||||
if (allServers)
|
||||
{
|
||||
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
||||
}
|
||||
spinlock_release(&server_spin);
|
||||
}
|
||||
|
||||
@ -626,33 +673,57 @@ char *stat;
|
||||
char *
|
||||
server_status(SERVER *server)
|
||||
{
|
||||
char *status = NULL;
|
||||
char *status = NULL;
|
||||
|
||||
if (NULL == server || (status = (char *)malloc(256)) == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
status[0] = 0;
|
||||
if (server->status & SERVER_MAINT)
|
||||
{
|
||||
strcat(status, "Maintenance, ");
|
||||
}
|
||||
if (server->status & SERVER_MASTER)
|
||||
{
|
||||
strcat(status, "Master, ");
|
||||
}
|
||||
if (server->status & SERVER_SLAVE)
|
||||
{
|
||||
strcat(status, "Slave, ");
|
||||
}
|
||||
if (server->status & SERVER_JOINED)
|
||||
{
|
||||
strcat(status, "Synced, ");
|
||||
}
|
||||
if (server->status & SERVER_NDB)
|
||||
{
|
||||
strcat(status, "NDB, ");
|
||||
}
|
||||
if (server->status & SERVER_SLAVE_OF_EXTERNAL_MASTER)
|
||||
{
|
||||
strcat(status, "Slave of External Server, ");
|
||||
}
|
||||
if (server->status & SERVER_STALE_STATUS)
|
||||
{
|
||||
strcat(status, "Stale Status, ");
|
||||
}
|
||||
if (server->status & SERVER_MASTER_STICKINESS)
|
||||
{
|
||||
strcat(status, "Master Stickiness, ");
|
||||
}
|
||||
if (server->status & SERVER_AUTH_ERROR)
|
||||
{
|
||||
strcat(status, "Auth Error, ");
|
||||
}
|
||||
if (server->status & SERVER_RUNNING)
|
||||
{
|
||||
strcat(status, "Running");
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat(status, "Down");
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -760,7 +831,8 @@ server_update(SERVER *server, char *protocol, char *user, char *passwd)
|
||||
server->protocol = strdup(protocol);
|
||||
}
|
||||
|
||||
if (user != NULL && passwd != NULL) {
|
||||
if (user != NULL && passwd != NULL)
|
||||
{
|
||||
if (strcmp(server->monuser, user) == 0 ||
|
||||
strcmp(server->monpw, passwd) == 0)
|
||||
{
|
||||
@ -787,7 +859,7 @@ server_update(SERVER *server, char *protocol, char *user, char *passwd)
|
||||
void
|
||||
serverAddParameter(SERVER *server, char *name, char *value)
|
||||
{
|
||||
SERVER_PARAM *param;
|
||||
SERVER_PARAM *param;
|
||||
|
||||
if ((param = (SERVER_PARAM *)malloc(sizeof(SERVER_PARAM))) == NULL)
|
||||
{
|
||||
@ -819,12 +891,14 @@ SERVER_PARAM *param;
|
||||
char *
|
||||
serverGetParameter(SERVER *server, char *name)
|
||||
{
|
||||
SERVER_PARAM *param = server->parameters;
|
||||
SERVER_PARAM *param = server->parameters;
|
||||
|
||||
while (param)
|
||||
{
|
||||
if (strcmp(param->name, name) == 0)
|
||||
{
|
||||
return param->value;
|
||||
}
|
||||
param = param->next;
|
||||
}
|
||||
return NULL;
|
||||
@ -840,11 +914,11 @@ SERVER_PARAM *param = server->parameters;
|
||||
static RESULT_ROW *
|
||||
serverRowCallback(RESULTSET *set, void *data)
|
||||
{
|
||||
int *rowno = (int *)data;
|
||||
int i = 0;;
|
||||
char *stat, buf[20];
|
||||
RESULT_ROW *row;
|
||||
SERVER *server;
|
||||
int *rowno = (int *)data;
|
||||
int i = 0;
|
||||
char *stat, buf[20];
|
||||
RESULT_ROW *row;
|
||||
SERVER *server;
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
server = allServers;
|
||||
@ -882,11 +956,13 @@ SERVER *server;
|
||||
RESULTSET *
|
||||
serverGetList()
|
||||
{
|
||||
RESULTSET *set;
|
||||
int *data;
|
||||
RESULTSET *set;
|
||||
int *data;
|
||||
|
||||
if ((data = (int *)malloc(sizeof(int))) == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
*data = 0;
|
||||
if ((set = resultset_create(serverRowCallback, data)) == NULL)
|
||||
{
|
||||
@ -913,8 +989,10 @@ void
|
||||
server_update_address(SERVER *server, char *address)
|
||||
{
|
||||
spinlock_acquire(&server_spin);
|
||||
if (server && address) {
|
||||
if (server->name) {
|
||||
if (server && address)
|
||||
{
|
||||
if (server->name)
|
||||
{
|
||||
free(server->name);
|
||||
}
|
||||
server->name = strdup(address);
|
||||
@ -933,13 +1011,15 @@ void
|
||||
server_update_port(SERVER *server, unsigned short port)
|
||||
{
|
||||
spinlock_acquire(&server_spin);
|
||||
if (server && port > 0) {
|
||||
if (server && port > 0)
|
||||
{
|
||||
server->port = port;
|
||||
}
|
||||
spinlock_release(&server_spin);
|
||||
}
|
||||
|
||||
static struct {
|
||||
static struct
|
||||
{
|
||||
char *str;
|
||||
unsigned int bit;
|
||||
} ServerBits[] = {
|
||||
@ -962,11 +1042,15 @@ static struct {
|
||||
unsigned int
|
||||
server_map_status(char *str)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for (i = 0; ServerBits[i].str; i++)
|
||||
{
|
||||
if (!strcasecmp(str, ServerBits[i].str))
|
||||
{
|
||||
return ServerBits[i].bit;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -55,18 +55,19 @@
|
||||
* The server parameters used for weighting routing decissions
|
||||
*
|
||||
*/
|
||||
typedef struct server_params {
|
||||
typedef struct server_params
|
||||
{
|
||||
char *name; /**< Parameter name */
|
||||
char *value; /**< Parameter value */
|
||||
struct server_params
|
||||
*next; /**< Next Paramter in the linked list */
|
||||
struct server_params *next; /**< Next Paramter in the linked list */
|
||||
} SERVER_PARAM;
|
||||
|
||||
/**
|
||||
* The server statistics structure
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
typedef struct
|
||||
{
|
||||
int n_connections; /**< Number of connections */
|
||||
int n_current; /**< Current connections */
|
||||
int n_current_ops; /**< Current active operations */
|
||||
@ -124,7 +125,8 @@ typedef struct server {
|
||||
#define SERVER_JOINED 0x0008 /**<< The server is joined in a Galera cluster */
|
||||
#define SERVER_NDB 0x0010 /**<< The server is part of a MySQL cluster setup */
|
||||
#define SERVER_MAINT 0x0020 /**<< Server is in maintenance mode */
|
||||
#define SERVER_SLAVE_OF_EXTERNAL_MASTER 0x0040 /**<< Server is slave of a Master outside the provided replication topology */
|
||||
#define SERVER_SLAVE_OF_EXTERNAL_MASTER 0x0040 /**<< Server is slave of a Master outside
|
||||
the provided replication topology */
|
||||
#define SERVER_STALE_STATUS 0x0080 /**<< Server stale status, monitor didn't update it */
|
||||
#define SERVER_MASTER_STICKINESS 0x0100 /**<< Server Master stickiness */
|
||||
#define SERVER_AUTH_ERROR 0x1000 /**<< Authentication erorr from monitor */
|
||||
@ -154,14 +156,15 @@ typedef struct server {
|
||||
* marked as master and not have maintenance bit set.
|
||||
*/
|
||||
#define SERVER_IS_ROOT_MASTER(server) \
|
||||
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_MAINT)) == (SERVER_RUNNING|SERVER_MASTER))
|
||||
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_MAINT)) == (SERVER_RUNNING|SERVER_MASTER))
|
||||
|
||||
/**
|
||||
/**
|
||||
* Is the server a slave? The server must be both running and marked as a slave
|
||||
* in order for the macro to return true
|
||||
*/
|
||||
#define SERVER_IS_SLAVE(server) \
|
||||
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE|SERVER_MAINT)) == (SERVER_RUNNING|SERVER_SLAVE))
|
||||
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE|SERVER_MAINT)) == \
|
||||
(SERVER_RUNNING|SERVER_SLAVE))
|
||||
|
||||
/**
|
||||
* Is the server joined Galera node? The server must be running and joined.
|
||||
@ -186,7 +189,8 @@ typedef struct server {
|
||||
#define SERVER_IS_IN_CLUSTER(s) (((s)->status & (SERVER_MASTER|SERVER_SLAVE|SERVER_JOINED|SERVER_NDB)) != 0)
|
||||
|
||||
#define SERVER_IS_RELAY_SERVER(server) \
|
||||
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE|SERVER_MAINT)) == (SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE))
|
||||
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE|SERVER_MAINT)) == \
|
||||
(SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE))
|
||||
|
||||
extern SERVER *server_alloc(char *, char *, unsigned short);
|
||||
extern int server_free(SERVER *);
|
||||
@ -215,4 +219,5 @@ extern void server_update_port(SERVER *, unsigned short);
|
||||
extern RESULTSET *serverGetList();
|
||||
extern unsigned int server_map_status(char *str);
|
||||
extern bool server_set_version_string(SERVER* server, const char* string);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user