ha/doozerd — pull request #61 by bernerdschaefer (2013-05-13 10:53:24+00:00)
Title: Go 1.1 compatibility, prevent hanging tests

This includes a few changes:

1. General test fixes to get everything running on go1.1 (chiefly, removing explicit allocations of `*net.UDPAddr`.

2. `server.ListenAndServe` aborts on all non-temporary network errors, not just `syscall.EINVAL`. This was a cause of randomly hanging tests with quiet logging. When the listen socket was closed from a defer() statement in the tests, it would enter an infinite failure loop, attempting to log the error message -- which, when using ioutil.Discard, was not guaranteed to trigger the scheduler, resulting in 100% CPU usage from the serve goroutine and a hanging process.

3. Change `conensensus.triggers.Less()` to consider both timestamp and sequence number. The current implementation depends on undefined behaviour in `container/heap` which differs between go1.0.3 and go1.1.

I'd appreciate feedback on 2 and 3: though all tests pass with the changes, I could imagine consequences that aren't covered by the tests.