Ju Liu @arkh4m Elixir London Meetup
Also known as @arkh4m
At midnight UTC on New Year’s Day, deep inside Cloudflare’s custom RRDNS software, a number went negative when it should always have been, at worst, zero. A little later this negative value caused RRDNS to panic.
RRDNS is written in Go and uses Go’s time.Now() function to get the time. Unfortunately, this function does not guarantee monotonicity. Go currently doesn’t offer a monotonic time source (see issue 12914 for discussion).
The code takes the upstream time values and feeds them to Go’s rand.Int63n() function, which promptly panics if its argument is negative. That's where the RRDNS panics were coming from.
NTP is a networking protocol for clock synchronization between computer systems over packet-switched, variable-latency data networks. It is intended to synchronize all participating computers to within a few milliseconds of Coordinated Universal Time (UTC)
We have a central logger and a set of workers.
A happened-before C can be written as A→C
A→C
E→F→G