5 ms·
Beyond external termination services like Chaos Monkey, what are good examples of software that purposely increase internal nondeterminism or failure injection
by cpeterso 10y ago
Beyond external termination services like Chaos Monkey, what are good examples of software that purposely increase internal nondeterminism or failure injection in production?
Go has race detector mode, but it is an optional debug feature with a performance cost. The Linux kernel's jiffy clock starts counting from -5 minutes so drivers must handle clock rollover correctly because it's not a uncommon "once every 48 days" event. Firefox has a chaos debug mode that does things like randomize thread priorities and simulate short socket reads, but that has performance costs.
- dsl 10y agoGo intentionally introduces randomness when reading maps so developers don't write code dependent on order.
- cpeterso 10y agoIronically, some Go developers began depending on the randomized map ordering and were surprised when it changed! :) runtime: hashmap iterator start position not random enough #8688 https://github.com/golang/go/issues/8688 https://github.com/golang/go/issues/8688
- caf 10y agoThe Linux kernel also recently added a debugging option that when enabled, instead of just probing a device it performs a probe / remove / probe sequence to ensure that device removal works.