FIRST-Tech-Challenge / fmltc

FIRST Machine Learning Toolchain
Other
39 stars 14 forks source link

Fixed problem where the training monitor cloud function dies if it can't update the job state in the model entity #142

Closed lizlooney closed 2 years ago

lizlooney commented 2 years ago

In model_trainer.__update_model_entity_job_state, put try catch around storage.update_model_entity_job_state so that monitor training cloud function doesn't die if it can't update the job states in the model entity.

Fixed model_trainer.maybe_restart_monitor_training which was incorrectly returning false if the triggered time was non-zero.

Added code to ListModels.onModelEntityUpdated to send /maybeRestartMonitorTraining if necessary.

Fixed ListModels.prototype.updateButtons which was incorrectly disabling the More Training and Download Model buttons.

github-actions[bot] commented 2 years ago

Terraform plan Succeeded for Workspace: default

Show Output ```diff An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: ! update in-place -/+ destroy and then create replacement Terraform will perform the following actions: # module.dev.google_app_engine_standard_app_version.fmltc-app-v1 will be updated in-place ! resource "google_app_engine_standard_app_version" "fmltc-app-v1" { id = "apps/ftc-ml-firstinspires-dev/services/default/versions/v1" name = "apps/ftc-ml-firstinspires-dev/services/default/versions/v1" # (9 unchanged attributes hidden) ! deployment { ! zip { ! source_url = "https://storage.googleapis.com/ftc-ml-firstinspires-dev-gae-source/a456a773d063f0cc4ee62d3c2d62d4a5.zip" -> "https://storage.googleapis.com/ftc-ml-firstinspires-dev-gae-source/93f051185137318f8323c021847650a8.zip" # (1 unchanged attribute hidden) } } - handlers { - auth_fail_action = "AUTH_FAIL_ACTION_REDIRECT" -> null - login = "LOGIN_OPTIONAL" -> null - security_level = "SECURE_OPTIONAL" -> null - url_regex = ".*" -> null - script { - script_path = "auto" -> null } } # (8 unchanged blocks hidden) } # module.dev.google_cloudfunctions_function.perform-action will be updated in-place ! resource "google_cloudfunctions_function" "perform-action" { id = "projects/ftc-ml-firstinspires-dev/locations/us-central1/functions/perform_action" name = "perform_action" ! source_archive_object = "1d161ccc7265b965e257b468a1429d3e.zip" -> "c754dc50c5035b8a532a785cee066874.zip" # (13 unchanged attributes hidden) # (2 unchanged blocks hidden) } # module.dev.google_storage_bucket_object.app-server-archive must be replaced -/+ resource "google_storage_bucket_object" "app-server-archive" { ! content_type = "application/zip" -> (known after apply) ! crc32c = "qmjD2Q==" -> (known after apply) ! detect_md5hash = "pFanc9Bj8MxO5i08LWLUpQ==" -> "different hash" # forces replacement - event_based_hold = false -> null ! id = "ftc-ml-firstinspires-dev-gae-source-a456a773d063f0cc4ee62d3c2d62d4a5.zip" -> (known after apply) + kms_key_name = (known after apply) ! md5hash = "pFanc9Bj8MxO5i08LWLUpQ==" -> (known after apply) ! media_link = "https://storage.googleapis.com/download/storage/v1/b/ftc-ml-firstinspires-dev-gae-source/o/a456a773d063f0cc4ee62d3c2d62d4a5.zip?generation=1634138798163007&alt=media" -> (known after apply) - metadata = {} -> null ! name = "a456a773d063f0cc4ee62d3c2d62d4a5.zip" -> "93f051185137318f8323c021847650a8.zip" # forces replacement ! output_name = "a456a773d063f0cc4ee62d3c2d62d4a5.zip" -> (known after apply) ! self_link = "https://www.googleapis.com/storage/v1/b/ftc-ml-firstinspires-dev-gae-source/o/a456a773d063f0cc4ee62d3c2d62d4a5.zip" -> (known after apply) ! storage_class = "STANDARD" -> (known after apply) - temporary_hold = false -> null # (2 unchanged attributes hidden) } # module.dev.google_storage_bucket_object.closure_js must be replaced -/+ resource "google_storage_bucket_object" "closure_js" { ! crc32c = "rMcyrQ==" -> (known after apply) ! detect_md5hash = "ddYEpuyDTzuaV/saDBWWIw==" -> "different hash" # forces replacement - event_based_hold = false -> null ! id = "ftc-ml-firstinspires-dev-compiled/js/fmltc.js" -> (known after apply) + kms_key_name = (known after apply) ! md5hash = "ddYEpuyDTzuaV/saDBWWIw==" -> (known after apply) ! media_link = "https://storage.googleapis.com/download/storage/v1/b/ftc-ml-firstinspires-dev/o/compiled%2Fjs%2Ffmltc.js?generation=1634096816813805&alt=media" -> (known after apply) - metadata = {} -> null name = "compiled/js/fmltc.js" ! output_name = "compiled/js/fmltc.js" -> (known after apply) ! self_link = "https://www.googleapis.com/storage/v1/b/ftc-ml-firstinspires-dev/o/compiled%2Fjs%2Ffmltc.js" -> (known after apply) ! storage_class = "STANDARD" -> (known after apply) - temporary_hold = false -> null # (3 unchanged attributes hidden) } # module.dev.google_storage_bucket_object.cloud-function-archive must be replaced -/+ resource "google_storage_bucket_object" "cloud-function-archive" { ! content_type = "application/zip" -> (known after apply) ! crc32c = "8HGBZw==" -> (known after apply) ! detect_md5hash = "HRYczHJluWXiV7RooUKdPg==" -> "different hash" # forces replacement - event_based_hold = false -> null ! id = "ftc-ml-firstinspires-dev-gcf-source-1d161ccc7265b965e257b468a1429d3e.zip" -> (known after apply) + kms_key_name = (known after apply) ! md5hash = "HRYczHJluWXiV7RooUKdPg==" -> (known after apply) ! media_link = "https://storage.googleapis.com/download/storage/v1/b/ftc-ml-firstinspires-dev-gcf-source/o/1d161ccc7265b965e257b468a1429d3e.zip?generation=1634138798129119&alt=media" -> (known after apply) - metadata = {} -> null ! name = "1d161ccc7265b965e257b468a1429d3e.zip" -> "c754dc50c5035b8a532a785cee066874.zip" # forces replacement ! output_name = "1d161ccc7265b965e257b468a1429d3e.zip" -> (known after apply) ! self_link = "https://www.googleapis.com/storage/v1/b/ftc-ml-firstinspires-dev-gcf-source/o/1d161ccc7265b965e257b468a1429d3e.zip" -> (known after apply) ! storage_class = "STANDARD" -> (known after apply) - temporary_hold = false -> null # (2 unchanged attributes hidden) } Plan: 3 to add, 2 to change, 3 to destroy. ```