Add erros improvments.

pull/1120/head
Andrey 2024-08-01 14:26:09 +03:00
rodzic b682fb3d42
commit 6dd068e351
2 zmienionych plików z 43 dodań i 13 usunięć

Wyświetl plik

@ -73,6 +73,17 @@ class DuplicateLeaderboardAddressError(Exception):
self.duplicates = duplicates
class LeaderboardNormalizeScoresError(Exception):
def __init__(self, message, normilize_errors):
super(LeaderboardNormalizeScoresError, self).__init__(message)
self.message = message
self.normilize_errors = errors
class LeaderboardPushScoreError(Exception):
pass
class LeaderboardIsEmpty(Exception):
pass
@ -1687,15 +1698,28 @@ def add_scores(
raise DuplicateLeaderboardAddressError("Dublicated addresses", duplicates)
# Process each score and append to leaderboard_scores list
non_normalized_addresses = []
for score in scores:
leaderboard_scores.append(
{
"leaderboard_id": leaderboard_id,
"address": normalizer_fn(score.address),
"score": score.score,
"points_data": score.points_data,
"leaderboard_version_number": version_number,
}
try:
normalized_address = normalizer_fn(score.address)
leaderboard_scores.append(
{
"leaderboard_id": leaderboard_id,
"address": normalized_address,
"score": score.score,
"points_data": score.points_data,
"leaderboard_version_number": version_number,
}
)
except Exception as e:
non_normalized_addresses.append((index, score.address))
logger.error(f"Error normalizing address {score.address}: {e}")
if non_normalized_addresses:
raise LeaderboardNormalizeScoresError(
f"Error adding scores to leaderboard. Non-normalized addresses",
non_normalized_addresses,
)
insert_statement = insert(LeaderboardScores).values(leaderboard_scores)
@ -1715,8 +1739,10 @@ def add_scores(
try:
db_session.execute(result_stmt)
db_session.commit()
except:
except Exception as e:
logger.error(f"Error adding scores to leaderboard: {e}")
db_session.rollback()
raise LeaderboardPushScoreError("Error committing scores")
return leaderboard_scores

Wyświetl plik

@ -773,11 +773,10 @@ async def leaderboard_push_scores(
status_code=409,
detail=f"Duplicates in push to database is disallowed.\n List of duplicates:{e.duplicates}.\n Please handle duplicates manualy.",
)
except actions.LeaderboardDeleteScoresError as e:
logger.error(f"Delete scores failed with error: {e}")
except actions.LeaderboardNormalizeScoresError as e:
raise EngineHTTPException(
status_code=500,
detail=f"Delete scores failed.",
status_code=409,
detail=f"Normalize scores failed for addresses: {e.normilize_errors}.",
)
except Exception as e:
logger.error(f"Score update failed with error: {e}")
@ -1431,6 +1430,11 @@ async def leaderboard_version_push_scores_handler(
status_code=409,
detail=f"Duplicates in push to database is disallowed.\n List of duplicates:{e.duplicates}.\n Please handle duplicates manualy.",
)
except actions.LeaderboardNormalizeScoresError as e:
raise EngineHTTPException(
status_code=409,
detail=f"Normalize scores failed for addresses: {e.normilize_errors}.",
)
except Exception as e:
logger.error(f"Score update failed with error: {e}")
raise EngineHTTPException(status_code=500, detail="Score update failed.")