I’m not good with statistics but what are the chances?
I had a service that ran fine for years if not decades on Java. One day, a minor update came in to the GNU core utils, which were not at all used by the service itself, and this somehow triggered the race every time in less than 5 minutes, taking down our production cluster. The same update didn't do anything to preproduction, even under much higher load than prod had.
There was a clear bug to fix and a clear root cause. Even so, I never understood what exactly pushed it over the edge.
Here's what this postmortem actually says :
* There was an undeniable, user observable issue between 10:04 and 11:28 PT as the customers could not change configuration.
* There was some root cause issue that we will say ran between time X and time Y, we do not acknowledge that your specific service was impacted in that window, unless specified separately.
* At some point we worked around/fixed the underlying issue.
* At 11:28 we fixed the user observable issue.
* The following is the number of minutes we acknowledge to be down for SLA purposes. Remember to pay your bill.
i would ask how the engineer found the race condition, and whether that doesn’t imply a much greater risk.
An alert may have fired that lead to someone debugging the issue in detail.
I can totally imagine a slow creeping Metric Of Death that has slowly slowly slowly been creeping up for ages and then suddenly breaches some threshold and then becomes a problem.
You can live with something for a long time, but once you hit a critical mass or trigger a particular condition, failures cascade.
If service B returns before Service A an error occurs. Service A is lightening fast, and Service B is a slug. Service A incurs an unexpected performance penalty for every new user added to the system. This incremental slight performance degradation adds up, eventually additional system load such as a periodic Virus Scan on System A has a chance to push it over the edge.
It's the same as me seeing apt on my machine is 88% done installing some package and deciding that's probably enough to make it runnable in a new tab...
This line suggested it could be triggered from a customer. Is this inaccurate?
Please allow me to reassure you: No. Absolutely not in this case. Not even slightly.
Any engineer can tell you customer configuration contents can cause bugs in configuration pipelines, but that's multiple layers away from this issue in our particular case.
Inflict an off by one error? Joke.