From 69aba6efc517512bbf408a4975583d73ed21a057 Mon Sep 17 00:00:00 2001 From: kck540 <kyle.klenk@usask.ca> Date: Tue, 26 Apr 2022 14:27:31 -0400 Subject: [PATCH] added graceful failing for file_access_actor initialization --- build/source/actors/FileAccessActor.h | 23 ++++++++++++++++++++--- build/source/actors/JobActor.h | 7 +++++++ build/source/actors/SummaActor.h | 5 +++++ build/source/actors/messageAtoms.h | 2 ++ config/fileManager.txt | 22 ---------------------- {config => utils}/fileManager_example.txt | 0 6 files changed, 34 insertions(+), 25 deletions(-) delete mode 100644 config/fileManager.txt rename {config => utils}/fileManager_example.txt (100%) diff --git a/build/source/actors/FileAccessActor.h b/build/source/actors/FileAccessActor.h index 4750f5a..c8d51e6 100644 --- a/build/source/actors/FileAccessActor.h +++ b/build/source/actors/FileAccessActor.h @@ -155,30 +155,47 @@ void initalizeFileAccessActor(stateful_actor<file_access_state>* self) { // aout(self) << "Set Up the forcing file" << std::endl; ffile_info_C(&indx, self->state.handle_forcFileInfo, &self->state.numFiles, &err); if (err != 0) { - aout(self) << "Error: ffile_info_C - HRU = " << indx << - " - indxGRU = " << indx << " - refGRU = " << std::endl; + aout(self) << "Error: ffile_info_C - File_Access_Actor \n"; + std::string function = "ffile_info_C"; + self->send(self->state.parent, file_access_actor_err_v, function); self->quit(); + return; } mDecisions_C(&self->state.num_steps, &err); if (err != 0) { - aout(self) << "Error: mDecisions - FileAccess Actor " << std::endl; + aout(self) << "Error: mDecisions - FileAccess Actor \n"; + std::string function = "mDecisions_C"; + self->send(self->state.parent, file_access_actor_err_v, function); self->quit(); + return; } read_pinit_C(&err); if (err != 0) { aout(self) << "ERROR: read_pinit_C\n"; + std::string function = "read_pinit_C"; + self->send(self->state.parent, file_access_actor_err_v, function); + self->quit(); + return; } read_vegitationTables(&err); if (err != 0) { aout(self) << "ERROR: read_vegitationTables\n"; + std::string function = "read_vegitationTables"; + self->send(self->state.parent, file_access_actor_err_v, function); + self->quit(); + return; } Create_Output_File(self->state.handle_ncid, &self->state.numGRU, &self->state.startGRU, &err); if (err != 0) { aout(self) << "ERROR: Create_OutputFile\n"; + std::string function = "Create_Output_File"; + self->send(self->state.parent, file_access_actor_err_v, function); + self->quit(); + return; } diff --git a/build/source/actors/JobActor.h b/build/source/actors/JobActor.h index aa7c1db..63abb30 100644 --- a/build/source/actors/JobActor.h +++ b/build/source/actors/JobActor.h @@ -165,6 +165,13 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, self->send(self->state.parent, done_job_v, self->state.numGRUFailed); self->quit(); }, + + [=](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(); + } // ******************************************************************************************* // ************************** END INTERFACE WITH FileAccessActor ***************************** // ******************************************************************************************* diff --git a/build/source/actors/SummaActor.h b/build/source/actors/SummaActor.h index bdad565..4bfe0e9 100644 --- a/build/source/actors/SummaActor.h +++ b/build/source/actors/SummaActor.h @@ -49,6 +49,11 @@ behavior summa_actor(stateful_actor<summa_manager>* self, int startGRU, int numG spawnJob(self); } }, + + [=](err) { + aout(self) << "Unrecoverable Error: Attempting To Fail Gracefully\n"; + self->quit(); + } }; } diff --git a/build/source/actors/messageAtoms.h b/build/source/actors/messageAtoms.h index 9f38386..d845c79 100644 --- a/build/source/actors/messageAtoms.h +++ b/build/source/actors/messageAtoms.h @@ -5,6 +5,7 @@ CAF_BEGIN_TYPE_ID_BLOCK(summa, first_custom_type_id) // Summa Actor CAF_ADD_ATOM(summa, start_summa) CAF_ADD_ATOM(summa, done_job) + CAF_ADD_ATOM(summa, err) // Job Actor CAF_ADD_ATOM(summa, done_reading_forcingFile) CAF_ADD_ATOM(summa, done_reading_first_forcing_file) @@ -17,6 +18,7 @@ CAF_BEGIN_TYPE_ID_BLOCK(summa, first_custom_type_id) CAF_ADD_ATOM(summa, run_failure) CAF_ADD_ATOM(summa, done_file_access_actor_init) CAF_ADD_ATOM(summa, file_access_actor_done) + CAF_ADD_ATOM(summa, file_access_actor_err) // FileAccess Actor CAF_ADD_ATOM(summa, initalize_outputStructure) CAF_ADD_ATOM(summa, access_forcing) diff --git a/config/fileManager.txt b/config/fileManager.txt deleted file mode 100644 index 3a5a89d..0000000 --- a/config/fileManager.txt +++ /dev/null @@ -1,22 +0,0 @@ -controlVersion 'SUMMA_FILE_MANAGER_V3.0.0' -simStartTime '1979-01-01 00:00' -simEndTime '2019-12-31 23:00' -tmZoneInfo 'utcTime' -settingsPath '/project/gwf/gwf_cmt/kck540/domain_NorthAmerica/settings/SUMMA/' -forcingPath '/project/gwf/gwf_cmt/kck540/domain_NorthAmerica/forcing/SummaChunkedData/' -outputPath '/scratch/gwf/gwf_cmt/kck540/SummaOutput/SummaActors/Apr-26-2022/netcdf/' -forcingFreq 'month' -forcingStart '1979-01-01' -decisionsFile 'modelDecisions.txt' -outputControlFile 'outputControl.txt' -globalHruParamFile 'localParamInfo.txt' -globalGruParamFile 'basinParamInfo.txt' -attributeFile 'attributes.nc' -trialParamFile 'trialParams.nc' -forcingListFile 'forcingFileList.txt' -initConditionFile 'coldState.nc' -outFilePrefix 'SummaActors' -vegTableFile 'TBL_VEGPARM.TBL' -soilTableFile 'TBL_SOILPARM.TBL' -generalTableFile 'TBL_GENPARM.TBL' -noahmpTableFile 'TBL_MPTABLE.TBL' diff --git a/config/fileManager_example.txt b/utils/fileManager_example.txt similarity index 100% rename from config/fileManager_example.txt rename to utils/fileManager_example.txt -- GitLab