Well, weekend of debugging, fixed three or so deep/subtle bugs in SMR.
Still have something wrong – one of the freelist tests fails. It looks like enourmous numbers of delete candidates are piling up – which should be impossible. That test sometimes permanently loops, too.
Spent an hour or two just now doing some non-debugging bits;
1. fixed up the add-only hash API so that there’s only one argument for key
2. added exponential backoff to everything which can use it
3. added a “near-tail” pointer to the add-only singly-linked list (makes new_tail() non-silly)
4. started sorting out the messed up variable names (going to finish this off next)