-
Notifications
You must be signed in to change notification settings - Fork 86
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
Chain DB: handle and test clock changes #759
Comments
Possible approach: start a thread that "watches" the current time and when it rolls back, shut down the node (and restart). |
TODO: do we deal correctly with blocks (on-disk) from the future? |
Moving this to |
Marked as high priority because this is totally untested. |
An NTP client will be running and notify the wallet when it is out of sync. Think about what we should do. |
Current plan:
Note that we (the node) don't have to run an NTP client for this. We are using |
The implementation was completed in #1554. We have created a new ticket for testing it: IntersectMBO/ouroboros-consensus#675. |
Re-opening as this isn't merged yet due to dependency on #1539 . Since it's only the tests that depend on that, though, will submit two separate PRs. |
Mind that it does come with tests, it just doesn't do consensus-level tests. |
1554: Detect clock changes r=edsko a=edsko Closes #759. Code is tested using mock time; result of the test labelling: ``` # cabal run test-consensus -- -p delayClockShift --quickcheck-replay=680184 --quickcheck-tests 10000 Up to date ouroboros-consensus WallClock delayClockShift: OK (18.51s) +++ OK, passed 10000 tests. schedule goes back (10000 in total): 63.07% False 36.93% True schedule length (10000 in total): 81.03% R_Gt 20 9.26% R_Btwn (10,20) 4.08% R_Btwn (5,10) 1.04% R_Btwn (4,5) 1.03% R_Eq 1 0.96% R_Eq 2 0.94% R_Eq 4 0.87% R_Eq 0 0.79% R_Eq 3 schedule skips (10000 in total): 38.66% R_Btwn (10,20) 24.96% R_Btwn (5,10) 5.59% R_Eq 0 5.43% R_Eq 2 5.27% R_Btwn (4,5) 5.12% R_Eq 1 5.08% R_Eq 3 4.99% R_Eq 4 4.90% R_Gt 20 All 1 tests passed (18.52s) ``` I also verified that the exception bubbles up to the node. Ran the latest node with this PR, set my clock back an hour, and got ``` cardano-node: ExceptionInLinkedThread "ThreadId 20" (SystemClockMovedBack 2020-01-31 11:15:31.00184141 UTC (SlotNo {unSlotNo = 3713312}) (SlotNo {unSlotNo = 3713132})) ``` There is no need to define a custom error policy for this due to #1553 , nor a custom exit failure due to #1551 (comment) . Co-authored-by: Edsko de Vries <[email protected]>
Closed as of #1554 . |
See https://github.com/input-output-hk/ouroboros-network/blob/master/ouroboros-consensus/docs/ChainDB.md#clock-changes
The text was updated successfully, but these errors were encountered: