From 180728dde6ceebe57ee896dd7e2600b88ce8a169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 19 Dec 2016 18:13:36 +0200 Subject: [PATCH] Only serialize created servers Any changes to servers that aren't created online need to be manually added to the configuration file in order for them to take effect after the restart. --- include/maxscale/server.h | 1 + server/core/config_runtime.c | 8 +++++++- server/core/server.c | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/maxscale/server.h b/include/maxscale/server.h index 1117cd167..9a71f9209 100644 --- a/include/maxscale/server.h +++ b/include/maxscale/server.h @@ -117,6 +117,7 @@ typedef struct server int persistmax; /**< Maximum pool size actually achieved since startup */ uint8_t charset; /**< Default server character set */ bool is_active; /**< Server is active and has not been "destroyed" */ + bool created_online; /**< Whether this server was created after startup */ #if defined(SS_DEBUG) skygw_chk_t server_chk_tail; #endif diff --git a/server/core/config_runtime.c b/server/core/config_runtime.c index acb03877e..17216a3a9 100644 --- a/server/core/config_runtime.c +++ b/server/core/config_runtime.c @@ -139,6 +139,9 @@ bool runtime_create_server(const char *name, const char *address, const char *po if (server && server_serialize(server)) { + /** Mark that the server was created after startup */ + server->created_online = true; + MXS_NOTICE("Created server '%s' at %s:%u", server->unique_name, server->name, server->port); rval = true; @@ -288,7 +291,10 @@ bool runtime_alter_server(SERVER *server, char *key, char *value) if (valid) { - server_serialize(server); + if (server->created_online) + { + server_serialize(server); + } MXS_NOTICE("Updated server '%s': %s=%s", server->unique_name, key, value); } diff --git a/server/core/server.c b/server/core/server.c index 4ea174223..7565b583f 100644 --- a/server/core/server.c +++ b/server/core/server.c @@ -136,6 +136,7 @@ SERVER* server_alloc(const char *name, const char *address, unsigned short port, server->monuser[0] = '\0'; server->monpw[0] = '\0'; server->is_active = true; + server->created_online = false; server->charset = SERVER_DEFAULT_CHARSET; spinlock_acquire(&server_spin);