Closed quchen closed 10 years ago
Revisiting this issue, in 269cb0eb67fb6041349aa1e7d5dc74326df8fe28 it can't livelock (and I assume this whole ticket was a brain fart).
A livelock would be possible only if the transaction itself called retry
on some condition, but it is actually re-run as a whole each time the loop is executed.
If the DB sizes don't change and the transaction in
ClientPool.balanceEdges
is retrying, the function might lock. This could be avoided by having a periodically changed nonsense TVar in the transaction, but that seems a bit hacky.