-
-
Notifications
You must be signed in to change notification settings - Fork 33.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
fix(scheduler): getNow detection can randomly fail (fix #9632) #9647
fix(scheduler): getNow detection can randomly fail (fix #9632) #9647
Conversation
The previous detection code compared time stamps based on Date.now() which are not monotonic, so the check could fail due to clock skew or adjustments. This fix changes the check to compare against performance.now() if it is supported, because it is monotonic (strictly increasing).
The check would lose the point if we compare the event timeStamp against a hi-res timeStamp. I think it should be good enough to only use |
No, the point of the check is to see if the event timeStamp uses hi-res (like performance.now()) or lo-res (like Date.now()). So comparing if the event timeStamp is smaller or equal to performance.now() will work, because if it is lo-res it will be a lot bigger than performance.now(). Comparing to performance.now() fixes the problem, because it is not affected clock inaccuracies.
No, it also affects IE 10/11 and any other browser that uses Unix timestamps (lo-res) for events. |
You are right. Reviewing PRs with a jetlag is a bad idea. |
The previous detection code compared time stamps based on Date.now()
which are not monotonic, so the check could fail due to clock skew or
adjustments.
This fix changes the check to compare against performance.now() if it is
supported, because it is monotonic (strictly increasing).
What kind of change does this PR introduce? (check at least one)
Does this PR introduce a breaking change? (check one)
If yes, please describe the impact and migration path for existing applications:
The PR fulfills these requirements:
dev
branch for v2.x (or to a previous version branch), not themaster
branchfix #xxx[,#xxx]
, where "xxx" is the issue number)If adding a new feature, the PR's description includes:
Other information:
See the discussion in #9632 for additional info.
This needs to be backported to the 2.6 branch.