From 9332bdd34c11f2347f12387cb7d466b2680f878a Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Sun, 5 Nov 2023 19:35:03 +0500 Subject: [PATCH 1/6] show docker pull or execution time limit error in scoring_std_err when these occur during scoring --- compute_worker/compute_worker.py | 1 + src/apps/api/views/submissions.py | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/compute_worker/compute_worker.py b/compute_worker/compute_worker.py index f9b74d27b..f42b1b6dc 100644 --- a/compute_worker/compute_worker.py +++ b/compute_worker/compute_worker.py @@ -376,6 +376,7 @@ def _get_container_image(self, image_name): docker_pull_fail_data = { "type": "Docker_Image_Pull_Fail", "error_message": error_message, + "is_scoring": self.is_scoring } # Send data to be written to ingestion logs self._update_submission(docker_pull_fail_data) diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index 6ce9da84b..ac026baa1 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -68,9 +68,8 @@ def check_object_permissions(self, request, obj): # Set file name to ingestion std error as default error_file_name = "prediction_ingestion_stderr" - # Change error file name when error comes from execution time limit - # and error occured during scoring - if request.data["type"] == "Execution_Time_Limit_Exceeded" and request.data['is_scoring'] == "True": + # Change error file name to scoring_stderr when error occurs during scoring + if request.data['is_scoring'] == "True": error_file_name = "scoring_stderr" try: From 1bc1fec66f9982bb6151a5404581ec00ddfc72b9 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Thu, 18 Jan 2024 20:33:24 +0500 Subject: [PATCH 2/6] Update submissions.py --- src/apps/api/views/submissions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index ac026baa1..b61963f9b 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -69,7 +69,7 @@ def check_object_permissions(self, request, obj): error_file_name = "prediction_ingestion_stderr" # Change error file name to scoring_stderr when error occurs during scoring - if request.data['is_scoring'] == "True": + if request.data.get("is_scoring", "False") == "True": error_file_name = "scoring_stderr" try: From b16492b053735aa58d1bc63fb111737b886b2a61 Mon Sep 17 00:00:00 2001 From: didayolo Date: Thu, 18 Jan 2024 17:10:33 +0100 Subject: [PATCH 3/6] More logs when docker pull fails in compute_worker.py --- compute_worker/compute_worker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compute_worker/compute_worker.py b/compute_worker/compute_worker.py index f9b74d27b..50b854235 100644 --- a/compute_worker/compute_worker.py +++ b/compute_worker/compute_worker.py @@ -367,10 +367,10 @@ def _get_container_image(self, image_name): container_engine_pull = check_output(cmd) logger.info("Pull complete for image: {0} with output of {1}".format(image_name, container_engine_pull)) break # Break if the loop is successful - except CalledProcessError: + except CalledProcessError as pull_error: retries += 1 if retries >= max_retries: - error_message = f"Pull for image: {image_name} returned a non-zero exit code! Check if the docker image exists on docker hub." + error_message = f"Pull for image: {image_name} returned a non-zero exit code! Check if the docker image exists on docker hub. {pull_error}" logger.info(error_message) # Prepare data to be sent to submissions api docker_pull_fail_data = { From c4537025c319f44f3e16e218d627868004a3226c Mon Sep 17 00:00:00 2001 From: didayolo Date: Sat, 20 Jan 2024 05:43:47 +0100 Subject: [PATCH 4/6] Add loading animation, lazy loading, hide buttons during loading --- src/static/riot/competitions/public-list.tag | 32 +++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/static/riot/competitions/public-list.tag b/src/static/riot/competitions/public-list.tag index 8a3e09683..c37eb96cc 100644 --- a/src/static/riot/competitions/public-list.tag +++ b/src/static/riot/competitions/public-list.tag @@ -7,10 +7,13 @@ +
+
+
- +
@@ -59,6 +62,8 @@ self.update_competitions_list = function (num) { self.current_page = num + $('#loading').show() + $('.pagination-nav').hide() if (self.competitions_cache[self.current_page]){ self.competitions = self.competitions_cache[self.current_page] history.pushState("", document.title, "?page="+self.current_page) @@ -67,11 +72,15 @@ } else { return CODALAB.api.get_public_competitions({"page":self.current_page}) .fail(function (response) { + $('#loading').hide() + $('.pagination-nav').show() toastr.error("Could not load competition list") }) .done(function (response){ self.competitions = response self.competitions_cache[self.current_page.toString()] = response + $('#loading').hide() + $('.pagination-nav').show() history.pushState("", document.title, "?page="+self.current_page) $('.pagination-nav > button').prop('disabled', false) self.update() @@ -208,6 +217,27 @@ font-size 13px text-align left margin 0.35em + + .loading-indicator + display flex + align-items center + padding 20px + width 100% + margin: 0 auto; + + .spinner + border 4px solid rgba(0,0,0,.1) + width 36px + height 36px + border-radius 50% + border-top-color #3498db + animation spin 1s ease-in-out infinite + + @keyframes spin + 0% + transform rotate(0deg) + 100% + transform rotate(360deg) From 92fedf4b74565c80502e41b56339ca9c2e15612e Mon Sep 17 00:00:00 2001 From: didayolo Date: Sat, 20 Jan 2024 05:48:41 +0100 Subject: [PATCH 5/6] Rename public competitions page --- src/static/riot/competitions/public-list.tag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/static/riot/competitions/public-list.tag b/src/static/riot/competitions/public-list.tag index c37eb96cc..cc9a535bd 100644 --- a/src/static/riot/competitions/public-list.tag +++ b/src/static/riot/competitions/public-list.tag @@ -1,5 +1,5 @@ -

Public Competitions

+

Public Benchmarks and Competitions