introduced common.Parallelizer to simplify doing things ... in parallel.
made ring.Ring#Each not handle errors
made idrafty use the new ring.Ring#Each
introduced log.Trace
greatly simplified node#Stop/Continue by using a sync.RWMutex for it ... its the natural choice! removed the Stop and Cont commands since we do this via RPC now. introduced a maintLock to avoid syncing/cleaning in parallel (since that, for some reason I cant be arsed to figure out, broke things). added log hooks all over the place to be able to turn on trace logging in a simple way.
made the test not kill all files after stopping the node, since goraft seems to KEEP wanting to open files even after stopped. silly daemon. instead removing them the next time the test starts.
moved the ring joining to a goroutine started by the raft joining to avoid stopping the leader and risking a reelection. moved the raft join call to node rpc instead of raft rpc since we are really doing our own thing here.
moved the node kicking to its own goroutine to not risk stopping the master and forcing a reelection.
added lots of logging hooks. made all get-from-bolt results copied before the transaction ends to avoid bolt reusing the memory for some nefarious purpose.
added lots of logging hooks. made all get-from-bolt results copied before the transaction ends to avoid bolt reusing the memory for some nefarious purpose.
added lots of logging hooks. made all get-from-bolt results copied before the transaction ends to avoid bolt reusing the memory for some nefarious purpose.
removed the cont and stop commands for realz
more work on transactions, and refactored the node transport