From 3b05d022af435d6fb1b0e8acb791e005972a9f66 Mon Sep 17 00:00:00 2001 From: Sander Land Date: Fri, 17 Jul 2020 12:23:03 +0200 Subject: [PATCH] error processing --- katrain/core/engine.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/katrain/core/engine.py b/katrain/core/engine.py index c4a5ce0..204bb32 100644 --- a/katrain/core/engine.py +++ b/katrain/core/engine.py @@ -5,15 +5,15 @@ import subprocess import threading import time import traceback -from typing import Callable, Optional, Dict +from typing import Callable, Dict, Optional + +from kivy.utils import platform from katrain.core.constants import OUTPUT_DEBUG, OUTPUT_ERROR, OUTPUT_EXTRA_DEBUG, OUTPUT_KATAGO_STDERR from katrain.core.game_node import GameNode from katrain.core.lang import i18n from katrain.core.utils import find_package_resource -from kivy.utils import platform - class EngineDiedException(Exception): pass @@ -164,13 +164,15 @@ class KataGoEngine: continue try: analysis = json.loads(line) + if "id" not in analysis: + self.katrain.log(f"Error without ID {analysis} received from KataGo", OUTPUT_ERROR) + continue if analysis["id"] not in self.queries: self.katrain.log(f"Query result {analysis['id']} discarded -- recent new game?", OUTPUT_DEBUG) continue - query_id = analysis["id"] - callback, error_callback, start_time, next_move = self.queries[query_id] + callback, error_callback, start_time, next_move = self.queries[analysis["id"]] if "error" in analysis: - del self.queries[query_id] + del self.queries[analysis["id"]] if error_callback: error_callback(analysis) elif not (next_move and "Illegal move" in analysis["error"]): # sweep @@ -178,7 +180,7 @@ class KataGoEngine: elif "warning" in analysis: self.katrain.log(f"{analysis} received from KataGo", OUTPUT_DEBUG) else: - del self.queries[query_id] + del self.queries[analysis["id"]] time_taken = time.time() - start_time self.katrain.log( f"[{time_taken:.1f}][{analysis['id']}] KataGo Analysis Received: {analysis.keys()}", @@ -188,7 +190,7 @@ class KataGoEngine: try: callback(analysis) except Exception as e: - self.katrain.log(f"Error in engine callback for query {query_id}: {e}", OUTPUT_ERROR) + self.katrain.log(f"Error in engine callback for query {analysis['id']}: {e}", OUTPUT_ERROR) if getattr(self.katrain, "update_state", None): # easier mocking etc self.katrain.update_state() except Exception as e: