@cryptotaxi247 / netdata-1 / commits / 8920bcbfc

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

Stelios Fragkakis committed Feb 5, 2024 at 18:14 UTC 8920bcbfc18cdeec4b8fd91c3756032e00ccc32b
3 files changed +21 -11
daemon/main.c
+17 -7
@@ -2016,11 +2016,11 @@ int main(int argc, char **argv) {
2016 health_set_silencers_filename();
2017 health_initialize_global_silencers();
2018
2019 - // --------------------------------------------------------------------
2020 - // Initialize ML configuration
2021 -
2022 - delta_startup_time("initialize ML");
2023 - ml_init();
2019 +// // --------------------------------------------------------------------
2020 +// // Initialize ML configuration
2021 +//
2022 +// delta_startup_time("initialize ML");
2023 +// ml_init();
2024
2025 // --------------------------------------------------------------------
2026 // setup process signals
@@ -2073,8 +2073,18 @@ int main(int argc, char **argv) {
2073 web_client_api_v1_init();
2074 web_server_threading_selection();
2075
2076 - if(web_server_mode != WEB_SERVER_MODE_NONE)
2077 - api_listen_sockets_setup();
2076 + if(web_server_mode != WEB_SERVER_MODE_NONE) {
2077 + if (!api_listen_sockets_setup()) {
2078 + netdata_log_error("Cannot setup listen port(s). Is Netdata already running?");
2079 + exit(1);
2080 + }
2081 + }
2082 +
2083 + // --------------------------------------------------------------------
2084 + // Initialize ML configuration
2085 +
2086 + delta_startup_time("initialize ML");
2087 + ml_init();
2088
2089 #ifdef ENABLE_H2O
2090 delta_startup_time("initialize h2o server");
web/server/web_server.c
+3 -3
@@ -57,16 +57,16 @@ void debug_sockets() {
57 buffer_free(wb);
58 }
59
60 -void api_listen_sockets_setup(void) {
60 +bool api_listen_sockets_setup(void) {
61 int socks = listen_sockets_setup(&api_sockets);
62
63 if(!socks)
64 - fatal("LISTENER: Cannot listen on any API socket. Exiting...");
64 + return false;
65
66 if(unlikely(debug_flags & D_WEB_CLIENT))
67 debug_sockets();
68
69 - return;
69 + return true;
70 }
71
72
web/server/web_server.h
+1 -1
@@ -39,7 +39,7 @@ extern WEB_SERVER_MODE web_server_mode;
39 WEB_SERVER_MODE web_server_mode_id(const char *mode);
40 const char *web_server_mode_name(WEB_SERVER_MODE id);
41
42 -void api_listen_sockets_setup(void);
42 +bool api_listen_sockets_setup(void);
43
44 #define DEFAULT_TIMEOUT_TO_RECEIVE_FIRST_WEB_REQUEST 60
45 #define DEFAULT_DISCONNECT_IDLE_WEB_CLIENTS_AFTER_SECONDS 60