New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pi: Cache proposal statuses. #1586
Merged
Merged
Conversation
This file contains 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
amass01
commented
Nov 27, 2021
amass01
changed the title
[wip] pi: cache proposal statuses.
pi: cache proposal statuses.
Nov 28, 2021
amass01
commented
Nov 28, 2021
lukebp
requested changes
Nov 28, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs work.
Capitalize the cache
in the commit message title please.
amass01
commented
Nov 29, 2021
lukebp
requested changes
Nov 29, 2021
amass01
commented
Dec 2, 2021
lukebp
requested changes
Dec 2, 2021
lukebp
requested changes
Dec 3, 2021
lukebp
approved these changes
Dec 3, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tACK
lukebp
added
91cfcc8
performance-impovement
pi-not-deployed
This item has been merged into master, but has not been deployed to production yet.
labels
Dec 3, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
performance-impovement
pi-not-deployed
This item has been merged into master, but has not been deployed to production yet.
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.
Background:
This diff aims to improve a performance issue where the pi summary
command for proposals in the "Approved" politeiagui tab required two
different calls to be made to the tstore backend in order to determine
their status. The first call retrieves record metadata and the second
call retrieves billing status metadata. Each of these calls result in
the tlog tree being retrieved. A ticketvote vote summary request is
also needed to get the current vote status of the proposals.
Implementation:
This commit adds an in-memory cache which is used to cache proposal data
required to determine the proposal status at runtime such as record
metadata, vote metadata, the vote status and the proposal billing status
changes. The cache is necessary to improve the performance of
determining a status of a proposal at runtime by reducing the number of
expensive backend calls that result in the tlog tree be retrieved, which
gets very expensive when a tree contains tens of thousands of ticket
vote leaves. This is helpful when the cached data is not expected to
change, which means that once we store the data in cache we don't need
to fetch it again. The cache entries are lazy loaded and it's capacity
is limited to 1000 entries.
Benchmark:
We have tested this with 5 proposals that have an active proposal status
and with ~1000 tlog leaves each. The pi summaries call took ~675ms
without the proposal status cache and ~200ms with the proposal status
cache. A ~70% improvement.
Part of #1582.