Browse Source

Always seed math/rand on consul startup

Required for jitter calcs.  This could be done in consul/agent, but this makes it clear it is done only once process-wide.
pull/1666/head
Sean Chittenden 9 years ago
parent
commit
4382c1f7aa
  1. 18
      lib/rand.go
  2. 6
      main.go

18
lib/rand.go

@ -0,0 +1,18 @@
package lib
import (
"math/rand"
"sync"
"time"
)
var (
once sync.Once
)
// SeedMathRand provides weak, but guaranteed seeding, which is better than
// running with Go's default seed of 1. A call to SeedMathRand() is expected
// to be called via init(), but never a second time.
func SeedMathRand() {
once.Do(func() { rand.Seed(time.Now().UTC().UnixNano()) })
}

6
main.go

@ -6,8 +6,14 @@ import (
"io/ioutil"
"log"
"os"
"github.com/hashicorp/consul/lib"
)
func init() {
lib.SeedMathRand()
}
func main() {
os.Exit(realMain())
}

Loading…
Cancel
Save