error processing

This commit is contained in:
Sander Land committed 2020-07-17 12:23:03 +02:00
1 parent 15c9a94e47
commit 3b05d022af
1 file changed
+10 -8
+10 -8
View File
@@ -5,15 +5,15 @@ import subprocess
import threading import threading
import time import time
import traceback 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.constants import OUTPUT_DEBUG, OUTPUT_ERROR, OUTPUT_EXTRA_DEBUG, OUTPUT_KATAGO_STDERR
from katrain.core.game_node import GameNode from katrain.core.game_node import GameNode
from katrain.core.lang import i18n from katrain.core.lang import i18n
from katrain.core.utils import find_package_resource from katrain.core.utils import find_package_resource
from kivy.utils import platform
class EngineDiedException(Exception): class EngineDiedException(Exception):
pass pass
@@ -164,13 +164,15 @@ class KataGoEngine:
continue continue
try: try:
analysis = json.loads(line) 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: if analysis["id"] not in self.queries:
self.katrain.log(f"Query result {analysis['id']} discarded -- recent new game?", OUTPUT_DEBUG) self.katrain.log(f"Query result {analysis['id']} discarded -- recent new game?", OUTPUT_DEBUG)
continue continue
query_id = analysis["id"] callback, error_callback, start_time, next_move = self.queries[analysis["id"]]
callback, error_callback, start_time, next_move = self.queries[query_id]
if "error" in analysis: if "error" in analysis:
del self.queries[query_id] del self.queries[analysis["id"]]
if error_callback: if error_callback:
error_callback(analysis) error_callback(analysis)
elif not (next_move and "Illegal move" in analysis["error"]): # sweep elif not (next_move and "Illegal move" in analysis["error"]): # sweep
@@ -178,7 +180,7 @@ class KataGoEngine:
elif "warning" in analysis: elif "warning" in analysis:
self.katrain.log(f"{analysis} received from KataGo", OUTPUT_DEBUG) self.katrain.log(f"{analysis} received from KataGo", OUTPUT_DEBUG)
else: else:
del self.queries[query_id] del self.queries[analysis["id"]]
time_taken = time.time() - start_time time_taken = time.time() - start_time
self.katrain.log( self.katrain.log(
f"[{time_taken:.1f}][{analysis['id']}] KataGo Analysis Received: {analysis.keys()}", f"[{time_taken:.1f}][{analysis['id']}] KataGo Analysis Received: {analysis.keys()}",
@@ -188,7 +190,7 @@ class KataGoEngine:
try: try:
callback(analysis) callback(analysis)
except Exception as e: 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 if getattr(self.katrain, "update_state", None): # easier mocking etc
self.katrain.update_state() self.katrain.update_state()
except Exception as e: except Exception as e: