This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
pow: add Version for quick-check of metadata state and refactor lock handling #9698
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
sorpaas
added
A0-please_review
Pull request needs code review.
B3-apinoteworthy
C1-low
PR touches the given topic and has a low impact on builders.
labels
Sep 5, 2021
@sorpaas anyway to get this merged quickly, It works and I kinda need it urgently |
This was referenced Oct 7, 2021
andresilva
approved these changes
Oct 8, 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.
Didn't understand where the version will be used though.
bkchr
approved these changes
Oct 11, 2021
I added an example here kulupu/kulupu#168. Properly using it can avoid unnecessary data fetch in the mining lifecycle (checking if metadata is updated, computing the pre-mining information, etc) because we know for sure nothing has changed. |
bot merge |
Trying merge. |
This pull request was closed.
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
A0-please_review
Pull request needs code review.
C1-low
PR touches the given topic and has a low impact on builders.
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.
This PR adds a
Version
field into the mining worker, an atomic value that is incremented every time the metadata is changed. It acts as a quick check for mining threads to determine if they need to fetch the metadata again.The code is also refactored that now it handles all locking internally -- the
MiningHandle
interface is mostly same as the previousMiningWorker
, but it handles locks itself instead of exposing anMutex
.We keep using an
Mutex
forbuild
(instead of aRwLock
). While this is a one writer, multiple reader case, write priority is much more important than read, because we have to immediately notify miners of a metadata change, otherwise any work done is invalid anyway.