diff options
author | Stelios Fragkakis <52996999+stelfrag@users.noreply.github.com> | 2024-02-05 18:14:51 +0200 |
---|---|---|
committer | Tasos Katsoulas <12612986+tkatsoulas@users.noreply.github.com> | 2024-02-12 16:48:25 +0200 |
commit | a167af13365f9b2bc8e875731bd85a564318102f (patch) | |
tree | d66050d2267607b7bf839aa90a1135f92238475c | |
parent | cef5e2c3a906f1ab7178cb174d2b57301ea58cd2 (diff) |
Check for agent already running (#16937)
* Check for server socket listen setup and exit normally instead of fatal()
Move ML initialization until after socket listen is successful
* Switch to error level
(cherry picked from commit 8920bcbfc18cdeec4b8fd91c3756032e00ccc32b)
-rw-r--r-- | daemon/main.c | 24 | ||||
-rw-r--r-- | web/server/web_server.c | 6 | ||||
-rw-r--r-- | web/server/web_server.h | 2 |
3 files changed, 21 insertions, 11 deletions
diff --git a/daemon/main.c b/daemon/main.c index a74e1e1984..3e1fda963b 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -2008,11 +2008,11 @@ int main(int argc, char **argv) { set_silencers_filename(); health_initialize_global_silencers(); - // -------------------------------------------------------------------- - // Initialize ML configuration - - delta_startup_time("initialize ML"); - ml_init(); +// // -------------------------------------------------------------------- +// // Initialize ML configuration +// +// delta_startup_time("initialize ML"); +// ml_init(); // -------------------------------------------------------------------- // setup process signals @@ -2065,8 +2065,18 @@ int main(int argc, char **argv) { web_client_api_v1_init(); web_server_threading_selection(); - if(web_server_mode != WEB_SERVER_MODE_NONE) - api_listen_sockets_setup(); + if(web_server_mode != WEB_SERVER_MODE_NONE) { + if (!api_listen_sockets_setup()) { + netdata_log_error("Cannot setup listen port(s). Is Netdata already running?"); + exit(1); + } + } + + // -------------------------------------------------------------------- + // Initialize ML configuration + + delta_startup_time("initialize ML"); + ml_init(); #ifdef ENABLE_H2O delta_startup_time("initialize h2o server"); diff --git a/web/server/web_server.c b/web/server/web_server.c index 8ac0c6595f..86c5dccf03 100644 --- a/web/server/web_server.c +++ b/web/server/web_server.c @@ -57,16 +57,16 @@ void debug_sockets() { buffer_free(wb); } -void api_listen_sockets_setup(void) { +bool api_listen_sockets_setup(void) { int socks = listen_sockets_setup(&api_sockets); if(!socks) - fatal("LISTENER: Cannot listen on any API socket. Exiting..."); + return false; if(unlikely(debug_flags & D_WEB_CLIENT)) debug_sockets(); - return; + return true; } diff --git a/web/server/web_server.h b/web/server/web_server.h index 3b88d1a22c..a31938c8d9 100644 --- a/web/server/web_server.h +++ b/web/server/web_server.h @@ -39,7 +39,7 @@ extern WEB_SERVER_MODE web_server_mode; WEB_SERVER_MODE web_server_mode_id(const char *mode); const char *web_server_mode_name(WEB_SERVER_MODE id); -void api_listen_sockets_setup(void); +bool api_listen_sockets_setup(void); #define DEFAULT_TIMEOUT_TO_RECEIVE_FIRST_WEB_REQUEST 60 #define DEFAULT_DISCONNECT_IDLE_WEB_CLIENTS_AFTER_SECONDS 60 |