kopia lustrzana https://github.com/bugout-dev/moonstream
Merge pull request #1120 from moonstream-to/improve-errors-on-push
Add erros improvments.pull/1121/head
commit
58e42f9e93
|
@ -73,6 +73,17 @@ class DuplicateLeaderboardAddressError(Exception):
|
||||||
self.duplicates = duplicates
|
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):
|
class LeaderboardIsEmpty(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -1687,15 +1698,28 @@ def add_scores(
|
||||||
|
|
||||||
raise DuplicateLeaderboardAddressError("Dublicated addresses", duplicates)
|
raise DuplicateLeaderboardAddressError("Dublicated addresses", duplicates)
|
||||||
|
|
||||||
for score in scores:
|
# Process each score and append to leaderboard_scores list
|
||||||
leaderboard_scores.append(
|
non_normalized_addresses = []
|
||||||
{
|
for index, score in enumerate(scores):
|
||||||
"leaderboard_id": leaderboard_id,
|
try:
|
||||||
"address": normalizer_fn(score.address),
|
normalized_address = normalizer_fn(score.address)
|
||||||
"score": score.score,
|
leaderboard_scores.append(
|
||||||
"points_data": score.points_data,
|
{
|
||||||
"leaderboard_version_number": version_number,
|
"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)
|
insert_statement = insert(LeaderboardScores).values(leaderboard_scores)
|
||||||
|
@ -1715,8 +1739,10 @@ def add_scores(
|
||||||
try:
|
try:
|
||||||
db_session.execute(result_stmt)
|
db_session.execute(result_stmt)
|
||||||
db_session.commit()
|
db_session.commit()
|
||||||
except:
|
except Exception as e:
|
||||||
|
logger.error(f"Error adding scores to leaderboard failed on commit: {e}")
|
||||||
db_session.rollback()
|
db_session.rollback()
|
||||||
|
raise LeaderboardPushScoreError("Error committing scores")
|
||||||
|
|
||||||
return leaderboard_scores
|
return leaderboard_scores
|
||||||
|
|
||||||
|
|
|
@ -770,14 +770,18 @@ async def leaderboard_push_scores(
|
||||||
)
|
)
|
||||||
except actions.DuplicateLeaderboardAddressError as e:
|
except actions.DuplicateLeaderboardAddressError as e:
|
||||||
raise EngineHTTPException(
|
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.",
|
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:
|
except actions.LeaderboardNormalizeScoresError as e:
|
||||||
logger.error(f"Delete scores failed with error: {e}")
|
raise EngineHTTPException(
|
||||||
|
status_code=400,
|
||||||
|
detail=f"Normalize scores failed for addresses: {e.normilize_errors}.",
|
||||||
|
)
|
||||||
|
except actions.LeaderboardPushScoreError as e:
|
||||||
raise EngineHTTPException(
|
raise EngineHTTPException(
|
||||||
status_code=500,
|
status_code=500,
|
||||||
detail=f"Delete scores failed.",
|
detail=f"Write scores to database failed",
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Score update failed with error: {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:
|
except actions.DuplicateLeaderboardAddressError as e:
|
||||||
raise EngineHTTPException(
|
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.",
|
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:
|
except Exception as e:
|
||||||
logger.error(f"Score update failed with error: {e}")
|
logger.error(f"Score update failed with error: {e}")
|
||||||
raise EngineHTTPException(status_code=500, detail="Score update failed.")
|
raise EngineHTTPException(status_code=500, detail="Score update failed.")
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0.0.11
|
0.0.12
|
||||||
|
|
Ładowanie…
Reference in New Issue