summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStelios Fragkakis <52996999+stelfrag@users.noreply.github.com>2024-02-05 18:14:51 +0200
committerTasos Katsoulas <12612986+tkatsoulas@users.noreply.github.com>2024-02-12 16:48:25 +0200
commita167af13365f9b2bc8e875731bd85a564318102f (patch)
treed66050d2267607b7bf839aa90a1135f92238475c
parentcef5e2c3a906f1ab7178cb174d2b57301ea58cd2 (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.c24
-rw-r--r--web/server/web_server.c6
-rw-r--r--web/server/web_server.h2
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