make random.go threadsafe

This commit is contained in:
Kouhei Ueno 2014-07-12 15:06:36 +09:00
parent f84a948c9c
commit 2a03a4d502

View File

@ -18,14 +18,15 @@ package scheduler
import (
"math/rand"
"sync"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
)
// RandomScheduler chooses machines uniformly at random.
type RandomScheduler struct {
// TODO: rand.Rand is *NOT* thread safe.
random *rand.Rand
random *rand.Rand
randomLock sync.Mutex
}
func MakeRandomScheduler(random *rand.Rand) Scheduler {
@ -40,5 +41,8 @@ func (s *RandomScheduler) Schedule(pod api.Pod, minionLister MinionLister) (stri
if err != nil {
return "", err
}
s.randomLock.Lock()
defer s.randomLock.Unlock()
return machines[s.random.Int()%len(machines)], nil
}