Optimize add_daily_uptime script and fix multiplier validation#244
Open
Optimize add_daily_uptime script and fix multiplier validation#244
Conversation
Performance optimizations: - Reduced database queries from ~2N+1 to 2 constant queries - Batch fetch all validators and their creation dates (1 query) - Batch fetch max uptime date per validator (1 query) - Start from day after last uptime, eliminating need for duplicate checks - Simplified leaderboard updates using update_user_leaderboard_entries Logic improvements: - For validators with existing uptime: start from last_uptime_date + 1 day - For new validators: start from validator.created_at date - Prevents duplicate contributions by design Model change (contributions.models.py): - Changed Contribution.set_multiplier() to use default 1.0 multiplier instead of raising ValidationError - This handles cases where no multiplier exists for a contribution type/date - Consistent with --force flag behavior in management commands Note: The model change may indicate a migration issue - the previous behavior raised ValidationError when no multiplier existed, but the new behavior silently defaults to 1.0. This should be reviewed to ensure it aligns with system expectations.
Collaborator
|
everything looks fine to me 👍 + already clarified on discord why self.multiplier_at_creation is hardcoded fallback to 1.0 |
albert-mr
approved these changes
Oct 23, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Performance Optimizations
last_uptime + 1 day, making existence checks unnecessaryupdate_user_leaderboard_entries()instead of manual entry managementLogic Improvements
last_uptime_date + 1 dayto todayvalidator.created_atto todayModel Change (⚠️ Needs Review)
File:
backend/contributions/models.pyChanged
Contribution.set_multiplier()behavior:ValidationErrorwhen no multiplier exists1.0This change was needed due to an error when using the new database. It may indicate a migration issue - please review to confirm this is the correct approach rather than a missing multiplier in the database.
Testing
Added comprehensive test suite in
test_add_uptime.pycovering: