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
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.0.11
|
||||
0.0.12
|
||||
|
|
Ładowanie…
Reference in New Issue