diff --git a/build/includes/global/settings_functions.hpp b/build/includes/global/settings_functions.hpp index b6f1295b38304030c4a79808379e11d7a305e2c1..c0985db230b97e7073a6296285ad057306abeeb8 100644 --- a/build/includes/global/settings_functions.hpp +++ b/build/includes/global/settings_functions.hpp @@ -15,6 +15,9 @@ struct Distributed_Settings { int port; // the port number of the server actor int total_hru_count; int num_hru_per_batch; + int heartbeat_interval; // number of seconds between each heartbeat message + int lost_node_threshold; // the maximum value the lost_potentail_indicator value can be before + // we assume the node is lost }; template<class Inspector> @@ -24,7 +27,9 @@ bool inspect(Inspector& inspector, Distributed_Settings& distributed_settings) { inspector.field("hostname", distributed_settings.hostname), inspector.field("port", distributed_settings.port), inspector.field("total_hru_count", distributed_settings.total_hru_count), - inspector.field("num_hru_per_batch",distributed_settings.num_hru_per_batch)); + inspector.field("num_hru_per_batch",distributed_settings.num_hru_per_batch), + inspector.field("heartbeat_interval",distributed_settings.heartbeat_interval), + inspector.field("lost_node_threshold",distributed_settings.lost_node_threshold)); } diff --git a/build/includes/summa_actor/client.hpp b/build/includes/summa_actor/client.hpp index 3da062d621384d4eefb1401c69b0a900a570d554..5883e9835d6b6ea22a5e82445e0d6b3aa630ea51 100644 --- a/build/includes/summa_actor/client.hpp +++ b/build/includes/summa_actor/client.hpp @@ -82,7 +82,7 @@ class Client { class Client_Container { private: int num_clients = 0; - int lost_client_threshold = 3; // value to determine if client is lost + int lost_client_threshold; // value to determine if client is lost std::vector<Client> client_list; @@ -90,7 +90,7 @@ class Client_Container { /** * @brief Construct a new Client_Container object */ - Client_Container(); + Client_Container(int lost_node_threshold); // Getters /** diff --git a/build/includes/summa_actor/summa_server.hpp b/build/includes/summa_actor/summa_server.hpp index bd2f66bd6f23cd63863a8cf651b9e0c538b79e31..27fa35e4576f4096049faa1e68f946c34c4bd023 100644 --- a/build/includes/summa_actor/summa_server.hpp +++ b/build/includes/summa_actor/summa_server.hpp @@ -25,7 +25,6 @@ struct summa_server_state { Client_Container *client_container; Batch_Container *batch_container; - int heartbeat_interval = 20; caf::actor health_check_reminder_actor; Distributed_Settings distributed_settings; diff --git a/build/source/actors/global/settings_functions.cpp b/build/source/actors/global/settings_functions.cpp index 37f1270ab6bfd98395d3e5168c94cfa9483e6d83..b0656ba5cc403767195f3a11524e4c84eefa9626 100644 --- a/build/source/actors/global/settings_functions.cpp +++ b/build/source/actors/global/settings_functions.cpp @@ -26,6 +26,12 @@ int read_settings_from_json(std::string json_settings_file, distributed_settings.num_hru_per_batch = getSettings(json_settings_file, parent_key, "num_hru_per_batch", distributed_settings.num_hru_per_batch).value_or(-1); + distributed_settings.heartbeat_interval = getSettings(json_settings_file, parent_key, + "heartbeat_interval", distributed_settings.heartbeat_interval).value_or(-1); + + distributed_settings.lost_node_threshold = getSettings(json_settings_file, parent_key, + "lost_node_threshold", distributed_settings.lost_node_threshold).value_or(-1); + // read settings for summa actor parent_key = "Summa_Actor"; @@ -75,7 +81,9 @@ void check_settings_from_json(Distributed_Settings &distributed_settings, std::cout << distributed_settings.hostname << "\n"; std::cout << distributed_settings.port << "\n"; std::cout << distributed_settings.total_hru_count << "\n"; - std::cout << distributed_settings.num_hru_per_batch << "\n\n\n"; + std::cout << distributed_settings.num_hru_per_batch << "\n"; + std::cout << distributed_settings.heartbeat_interval << "\n"; + std::cout << distributed_settings.lost_node_threshold << "\n\n\n"; std::cout << "************ SUMMA_ACTOR_SETTINGS ************\n"; std::cout << summa_actor_settings.max_gru_per_job << "\n\n\n"; diff --git a/build/source/actors/main.cpp b/build/source/actors/main.cpp index 78b02269400d50b6357eeb48f706dc7c499a66e9..c4ab5caf09548143b71a58e4f0a35511febff4fc 100644 --- a/build/source/actors/main.cpp +++ b/build/source/actors/main.cpp @@ -101,8 +101,10 @@ void caf_main(actor_system& sys, const config& cfg) { aout(self) << "Printing Settings For SUMMA Simulation\n"; check_settings_from_json(distributed_settings, - summa_actor_settings, file_access_actor_settings, job_actor_settings, - hru_actor_settings); + summa_actor_settings, + file_access_actor_settings, + job_actor_settings, + hru_actor_settings); if (distributed_settings.distributed_mode) { // only command line arguments needed are config_file and server-mode diff --git a/build/source/actors/summa_actor/client.cpp b/build/source/actors/summa_actor/client.cpp index 52c36531129f68af6e34ce896de139079c85a70b..34f81cf81faeaf24b1b42f20bc20bec3268e2cb7 100644 --- a/build/source/actors/summa_actor/client.cpp +++ b/build/source/actors/summa_actor/client.cpp @@ -47,7 +47,9 @@ void Client::decrementLostPotential() { //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// -Client_Container::Client_Container() {} +Client_Container::Client_Container(int lost_node_threshold) { + this->lost_client_threshold = lost_node_threshold; +} void Client_Container::addClient(caf::actor client_actor, std::string hostname) { int client_id = this->num_clients; diff --git a/build/source/actors/summa_actor/summa_server.cpp b/build/source/actors/summa_actor/summa_server.cpp index e526d112ecfae629ac01e7399603a275cb80d767..bab058610bcb4adee52ceb9fa086a5de420de554 100644 --- a/build/source/actors/summa_actor/summa_server.cpp +++ b/build/source/actors/summa_actor/summa_server.cpp @@ -24,7 +24,7 @@ behavior summa_server(stateful_actor<summa_server_state>* self, Distributed_Sett self->state.job_actor_settings = job_actor_settings; self->state.hru_actor_settings = hru_actor_settings; - self->state.client_container = new Client_Container(); + self->state.client_container = new Client_Container(self->state.distributed_settings.lost_node_threshold); self->state.batch_container = new Batch_Container( self->state.distributed_settings.total_hru_count, self->state.distributed_settings.num_hru_per_batch); @@ -34,7 +34,7 @@ behavior summa_server(stateful_actor<summa_server_state>* self, Distributed_Sett // Start the heartbeat actor after a client has connected self->state.health_check_reminder_actor = self->spawn(cleint_health_check_reminder); self->send(self->state.health_check_reminder_actor, - start_health_check_v, self, self->state.heartbeat_interval); + start_health_check_v, self, self->state.distributed_settings.heartbeat_interval); return { /** @@ -116,7 +116,7 @@ behavior summa_server(stateful_actor<summa_server_state>* self, Distributed_Sett } } self->send(self->state.health_check_reminder_actor, - start_health_check_v, self, self->state.heartbeat_interval); + start_health_check_v, self, self->state.distributed_settings.heartbeat_interval); }, [=](heartbeat, int client_id) {