From 5d7c78d409f61448a104cda39916772557bf5845 Mon Sep 17 00:00:00 2001 From: KyleKlenk <kyle.c.klenk@gmail.com> Date: Fri, 8 Jul 2022 10:39:45 -0600 Subject: [PATCH] fixed issue with job actor exiting Job actor would exit after fixing issue with file_access_actor causing a corrupted_double_linked_list --- .../file_access_actor/cppwrap_fileAccess.f90 | 1 + .../file_access_actor/file_access_actor.cpp | 3 ++- build/source/actors/job_actor/job_actor.cpp | 17 +++++++++++++---- build/source/engine/mDecisions.f90 | 1 - 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/build/source/actors/file_access_actor/cppwrap_fileAccess.f90 b/build/source/actors/file_access_actor/cppwrap_fileAccess.f90 index db40b8b..7230830 100644 --- a/build/source/actors/file_access_actor/cppwrap_fileAccess.f90 +++ b/build/source/actors/file_access_actor/cppwrap_fileAccess.f90 @@ -129,6 +129,7 @@ subroutine initFailedHRUTracker(numGRU) bind(C, name="initFailedHRUTracker") implicit none integer(c_int), intent(in) :: numGRU + if (allocated(failedHRUs))then; deallocate(failedHRUs); endif; allocate(failedHRUs(numGRU)) failedHRUs(:) = .false. diff --git a/build/source/actors/file_access_actor/file_access_actor.cpp b/build/source/actors/file_access_actor/file_access_actor.cpp index b453461..166b272 100644 --- a/build/source/actors/file_access_actor/file_access_actor.cpp +++ b/build/source/actors/file_access_actor/file_access_actor.cpp @@ -18,6 +18,7 @@ namespace caf { behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU, int numGRU, int outputStrucSize, std::string configPath, actor parent) { // Set File_Access_Actor variables + aout(self) << "\n----------File_Access_Actor Started----------\n"; self->state.parent = parent; self->state.numGRU = numGRU; self->state.startGRU = startGRU; @@ -186,7 +187,7 @@ behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU void initalizeFileAccessActor(stateful_actor<file_access_state>* self) { int indx = 1; int err = 0; - // aout(self) << "Set Up the forcing file" << std::endl; + ffile_info_C(&indx, self->state.handle_forcing_file_info, &self->state.numFiles, &err); if (err != 0) { aout(self) << "Error: ffile_info_C - File_Access_Actor \n"; diff --git a/build/source/actors/job_actor/job_actor.cpp b/build/source/actors/job_actor/job_actor.cpp index 3cdef19..14dc8c3 100644 --- a/build/source/actors/job_actor/job_actor.cpp +++ b/build/source/actors/job_actor/job_actor.cpp @@ -1,6 +1,8 @@ #include "job_actor.hpp" #include "file_access_actor.hpp" #include "json.hpp" +#include <chrono> +#include <thread> #include "message_atoms.hpp" #include "global.hpp" #include "job_actor_subroutine_wrappers.hpp" @@ -188,9 +190,17 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, [=](file_access_actor_err, std::string function) { aout(self) << "Failure in File Access Actor in function" << function << "\n"; - aout(self) << "Letting Parent Know we are quitting\n"; - self->send(self->state.parent, err_v); - self->quit(); + if (function == "def_output") { + aout(self) << "Error with the output file, will try creating it agian\n"; + self->state.file_access_actor = self->spawn(file_access_actor, self->state.startGRU, self->state.numGRU, + self->state.outputStrucSize, self->state.configPath, self); + } else { + aout(self) << "Letting Parent Know we are quitting\n"; + self->send(self->state.parent, err_v); + self->quit(); + } + + } // ******************************************************************************************* // ************************** END INTERFACE WITH FileAccessActor ***************************** @@ -199,7 +209,6 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, }; } - void initJob(stateful_actor<job_state>* self) { std::string success = "Success"; // allows us to build the string if (self->state.outputCSV) { diff --git a/build/source/engine/mDecisions.f90 b/build/source/engine/mDecisions.f90 index cc885c4..f04bd56 100755 --- a/build/source/engine/mDecisions.f90 +++ b/build/source/engine/mDecisions.f90 @@ -289,7 +289,6 @@ subroutine mDecisions(numSteps,err,message) if(dJulianFinsh < dJulianStart)then; err=20; message=trim(message)//'end time of simulation occurs before start time'; return; end if ! initialize the old time vector (time from the previous time step) - ! oldTime%var(:) = startTime%var(:) ! compute the number of time steps numSteps = nint( (dJulianFinsh - dJulianStart)*secprday/data_step ) + 1 -- GitLab