From 708fd642965410f359b8a171e7dc8d01d6238230 Mon Sep 17 00:00:00 2001
From: Kyle <kyle.c.klenk@gmail.com>
Date: Wed, 20 Mar 2024 17:54:29 +0000
Subject: [PATCH] Fixed exit before write was finished

---
 build/includes/job_actor/node_actor.hpp          |  3 +++
 build/source/job_actor/distributed_job_actor.cpp |  2 --
 build/source/job_actor/node_actor.cpp            | 15 +++++++++++++++
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/build/includes/job_actor/node_actor.hpp b/build/includes/job_actor/node_actor.hpp
index 7481827..6bfa7f7 100644
--- a/build/includes/job_actor/node_actor.hpp
+++ b/build/includes/job_actor/node_actor.hpp
@@ -7,12 +7,15 @@
 #include "hru_batch_actor.hpp"
 #include "file_access_actor.hpp"
 #include "job_actor.hpp"
+#include "timing_info.hpp"
 
 namespace caf {
 
 struct node_state {
   actor current_server;
   std::string hostname;
+  
+  TimingInfo node_timing;
 
   int start_gru;
   int num_gru;
diff --git a/build/source/job_actor/distributed_job_actor.cpp b/build/source/job_actor/distributed_job_actor.cpp
index c27b5ee..c62cddf 100644
--- a/build/source/job_actor/distributed_job_actor.cpp
+++ b/build/source/job_actor/distributed_job_actor.cpp
@@ -182,8 +182,6 @@ behavior distributed_job_actor(stateful_actor<distributed_job_state>* self,
                  << "Total Duration = " << total_dur_min << " Minutes\n"
                  << "Total Duration = " << total_dur_hr << " Hours\n"
                  << "___________________Program Finished__________________\n";
-
-      std::exit(0);
     }
 
 
diff --git a/build/source/job_actor/node_actor.cpp b/build/source/job_actor/node_actor.cpp
index de9d466..cc85e67 100644
--- a/build/source/job_actor/node_actor.cpp
+++ b/build/source/job_actor/node_actor.cpp
@@ -9,7 +9,12 @@ behavior node_actor(stateful_actor<node_state>* self,
                     File_Access_Actor_Settings file_access_actor_settings,
                     Job_Actor_Settings job_actor_settings, 
                     HRU_Actor_Settings hru_actor_settings) {
+
   aout(self) << "Starting Node Actor\n";
+  self->state.node_timing = TimingInfo();
+  self->state.node_timing.addTimePoint("total_duration");
+  self->state.node_timing.updateStartPoint("total_duration");
+
   self->set_down_handler([=](const down_msg& dm){
     aout(self) << "Received Down Message\n";
   });
@@ -154,6 +159,16 @@ behavior node_actor(stateful_actor<node_state>* self,
 
     [=](finalize) {
       aout(self) << "Done Simulation\n";
+      self->state.node_timing.updateEndPoint("total_duration");
+      double total_duration = self->state.node_timing.getDuration(
+          "total_duration").value_or(-1.0);
+      double total_dur_min = total_duration / 60;
+      double total_dur_hr = total_dur_min / 60;
+      aout(self) << "Total Duration: " << total_duration << " seconds\n"
+                 << "Total Duration: " << total_dur_min << " minutes\n"
+                 << "Total Duration: " << total_dur_hr << " hours\n"
+                 << "___________________Node Finished__________________\n";
+    
       std::exit(0);
     }
   };
-- 
GitLab