don't reuse random

pull/6/head
Kouhei Ueno 2014-07-15 19:47:40 +09:00
parent a28e900d46
commit 938d9e811b
1 changed files with 3 additions and 7 deletions

View File

@ -37,10 +37,7 @@ type Master struct {
controllerRegistry registry.ControllerRegistry controllerRegistry registry.ControllerRegistry
serviceRegistry registry.ServiceRegistry serviceRegistry registry.ServiceRegistry
minionRegistry registry.MinionRegistry minionRegistry registry.MinionRegistry
storage map[string]apiserver.RESTStorage
// TODO: don't reuse non-threadsafe objects.
random *rand.Rand
storage map[string]apiserver.RESTStorage
} }
// NewMemoryServer returns a new instance of Master backed with memory (not etcd). // NewMemoryServer returns a new instance of Master backed with memory (not etcd).
@ -81,17 +78,16 @@ func minionRegistryMaker(minions []string, cloud cloudprovider.Interface, minion
} }
func (m *Master) init(cloud cloudprovider.Interface, podInfoGetter client.PodInfoGetter) { func (m *Master) init(cloud cloudprovider.Interface, podInfoGetter client.PodInfoGetter) {
m.random = rand.New(rand.NewSource(int64(time.Now().Nanosecond())))
podCache := NewPodCache(podInfoGetter, m.podRegistry, time.Second*30) podCache := NewPodCache(podInfoGetter, m.podRegistry, time.Second*30)
go podCache.Loop() go podCache.Loop()
s := scheduler.NewRandomFitScheduler(m.podRegistry, m.random) random := rand.New(rand.NewSource(int64(time.Now().Nanosecond())))
s := scheduler.NewRandomFitScheduler(m.podRegistry, random)
m.storage = map[string]apiserver.RESTStorage{ m.storage = map[string]apiserver.RESTStorage{
"pods": registry.MakePodRegistryStorage(m.podRegistry, podInfoGetter, s, m.minionRegistry, cloud, podCache), "pods": registry.MakePodRegistryStorage(m.podRegistry, podInfoGetter, s, m.minionRegistry, cloud, podCache),
"replicationControllers": registry.NewControllerRegistryStorage(m.controllerRegistry, m.podRegistry), "replicationControllers": registry.NewControllerRegistryStorage(m.controllerRegistry, m.podRegistry),
"services": registry.MakeServiceRegistryStorage(m.serviceRegistry, cloud, m.minionRegistry), "services": registry.MakeServiceRegistryStorage(m.serviceRegistry, cloud, m.minionRegistry),
"minions": registry.MakeMinionRegistryStorage(m.minionRegistry), "minions": registry.MakeMinionRegistryStorage(m.minionRegistry),
} }
} }
// Run begins serving the Kubernetes API. It never returns. // Run begins serving the Kubernetes API. It never returns.