-
Notifications
You must be signed in to change notification settings - Fork 36.7k
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
Give a better error message if system clock is bad #6489
Conversation
You do need cs_main for that. |
LOCK(cs_main); | ||
CBlockIndex* tip = chainActive.Tip(); | ||
CBlock block; | ||
if (tip && ReadBlockFromDisk(block, tip)) { |
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.
Any specific reason to read the block from disk here? Reminder: tip
itself, a CBlockIndex
, also has nTime
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.
Ahh, okay. Fixed.
Concept ACK |
Updated the commit to use chainActive.Tip()->nTime directly |
LOCK(cs_main); | ||
CBlockIndex* tip = chainActive.Tip(); | ||
if (tip && tip->nTime > GetAdjustedTime() + 2 * 60 * 60) { | ||
strLoadError = _("The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct"); |
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.
Is there no styleguide for the bitcoin codebase that says ">250 character lines are just TOO LONG @casey"?!
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.
This string is going to be translated via gettext (that's what the "_" is for) so it's better than it appear in the source as one line, as opposed to being broken up.
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.
@bensussman To answer your question: no, there is no such rule. See https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md
@casey Using multiple "line" "line2" line3" does not affect translation IIRC if you specify only one _
, eg:
strLoadError = _("The block database contains a block which appears to be from the future. "
"This may be due to your computer's date and time being set incorrectly. "
"Only rebuild the block database if you are sure that your computer's date and time are correct");
Fixes #2007 This checks to see if the system clock appears to be bad and gives a helpful error message. If the user's clock is set incorrectly, hopefully they'll abort, fix it, and then save themselves a fruitless resync.
Changed to use less ridiculously long strings. |
utACK |
1 similar comment
utACK |
utACK On Tuesday, August 4, 2015, Pieter Wuille notifications@github.com wrote:
|
f261f19 Give a better error message if system clock is bad (Casey Rodarmor)
CBlockIndex* tip = chainActive.Tip(); | ||
if (tip && tip->nTime > GetAdjustedTime() + 2 * 60 * 60) { | ||
strLoadError = _("The block database contains a block which appears to be from the future. " | ||
"This may be due to your computer's date and time being set incorrectly. " |
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.
computer's
is some weird grammar, no?
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.
Not really. It indicates that the computer is the owner of the date & time, which in this case it is.
Misc upstream PRs Cherry-picked from the following upstream PRs: - bitcoin/bitcoin#6077 - Second commit only (first was already applied to 0.11.X and then reverted) - bitcoin/bitcoin#6284 - bitcoin/bitcoin#6489 - bitcoin/bitcoin#6462 - bitcoin/bitcoin#6647 - bitcoin/bitcoin#6235 - bitcoin/bitcoin#6905 - bitcoin/bitcoin#6780 - Excluding second commit (QT) and third commit (requires bitcoin/bitcoin#6993) - bitcoin/bitcoin#6961 - Excluding QT parts, and a small `src/policy/policy.cpp` change which depends on a bunch of other PRs, which we'll have to remember to come back to. - bitcoin/bitcoin#7044 - bitcoin/bitcoin#8856 - bitcoin/bitcoin#9002 Part of #2074 and #2132.
Misc upstream PRs Cherry-picked from the following upstream PRs: - bitcoin/bitcoin#6077 - Second commit only (first was already applied to 0.11.X and then reverted) - bitcoin/bitcoin#6284 - bitcoin/bitcoin#6489 - bitcoin/bitcoin#6235 - bitcoin/bitcoin#6905 - bitcoin/bitcoin#6780 - Excluding second commit (QT) and third commit (requires bitcoin/bitcoin#6993) - bitcoin/bitcoin#6961 - Excluding QT parts, and a small `src/policy/policy.cpp` change which depends on a bunch of other PRs, which we'll have to remember to come back to. - bitcoin/bitcoin#7044 - bitcoin/bitcoin#8856 - bitcoin/bitcoin#9002 Part of #2074 and #2132.
Fixes #2007
This checks to see if the system clock appears to be bad and gives a
helpful error message. If the user's clock is set incorrectly, hopefully
they'll abort, fix it, and then save themselves a fruitless resync.
I wasn't sure if I needed to grab cs_main before accessing chainActive.Tip(), is that correct?