Merge pull request #1120 from moonstream-to/improve-errors-on-push

Add erros improvments.
pull/1121/head
Andrey Dolgolev 2024-08-01 17:22:06 +03:00 zatwierdzone przez GitHub
commit 58e42f9e93
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
3 zmienionych plików z 56 dodań i 16 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 = normilize_errors
class LeaderboardPushScoreError(Exception):
pass
class LeaderboardIsEmpty(Exception):
pass
@ -1687,15 +1698,28 @@ def add_scores(
raise DuplicateLeaderboardAddressError("Dublicated addresses", duplicates)
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,
}
# Process each score and append to leaderboard_scores list
non_normalized_addresses = []
for index, score in enumerate(scores):
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 + 1, score.address))
if non_normalized_addresses:
logger.error(f"Error adding scores to leaderboard failed in normalizing")
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 failed on commit: {e}")
db_session.rollback()
raise LeaderboardPushScoreError("Error committing scores")
return leaderboard_scores

Wyświetl plik

@ -770,14 +770,18 @@ async def leaderboard_push_scores(
)
except actions.DuplicateLeaderboardAddressError as e:
raise EngineHTTPException(
status_code=409,
status_code=400,
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=400,
detail=f"Normalize scores failed for addresses: {e.normilize_errors}.",
)
except actions.LeaderboardPushScoreError as e:
raise EngineHTTPException(
status_code=500,
detail=f"Delete scores failed.",
detail=f"Write scores to database failed",
)
except Exception as e:
logger.error(f"Score update failed with error: {e}")
@ -1428,9 +1432,19 @@ async def leaderboard_version_push_scores_handler(
)
except actions.DuplicateLeaderboardAddressError as e:
raise EngineHTTPException(
status_code=409,
status_code=400,
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=400,
detail=f"Normalize scores failed for addresses: {e.normilize_errors}.",
)
except actions.LeaderboardPushScoreError as e:
raise EngineHTTPException(
status_code=500,
detail=f"Write scores to database failed",
)
except Exception as e:
logger.error(f"Score update failed with error: {e}")
raise EngineHTTPException(status_code=500, detail="Score update failed.")

Wyświetl plik

@ -1 +1 @@
0.0.11
0.0.12