func createMesosClient( md detector.Master, httpClient *http.Client, tr *http.Transport, stateCacheTTL time.Duration) (*mesosClient, error) { initialMaster := make(chan struct{}) client := &mesosClient{ httpClient: httpClient, tr: tr, initialMaster: initialMaster, state: &stateCache{ ttl: stateCacheTTL, }, } client.state.refill = client.pollMasterForState first := true if err := md.Detect(detector.OnMasterChanged(func(info *mesos.MasterInfo) { host, port := extractMasterAddress(info) if len(host) > 0 { client.masterLock.Lock() defer client.masterLock.Unlock() client.master = fmt.Sprintf("%s:%d", host, port) if first { first = false close(initialMaster) } } log.Infof("cloud master changed to '%v'", client.master) })); err != nil { log.V(1).Infof("detector initialization failed: %v", err) return nil, err } return client, nil }
func createMesosClient( md detector.Master, httpClient *http.Client, tr *http.Transport, stateCacheTTL time.Duration) (*mesosClient, error) { initialMaster := make(chan struct{}) client := &mesosClient{ httpClient: httpClient, tr: tr, initialMaster: initialMaster, state: &stateCache{ ttl: stateCacheTTL, }, } client.state.refill = client.pollMasterForState first := true if err := md.Detect(detector.OnMasterChanged(func(info *mesos.MasterInfo) { client.masterLock.Lock() defer client.masterLock.Unlock() if info == nil { client.master = "" } else if host := info.GetHostname(); host != "" { client.master = host } else { client.master = unpackIPv4(info.GetIp()) } if len(client.master) > 0 { client.master = fmt.Sprintf("%s:%d", client.master, info.GetPort()) if first { first = false close(initialMaster) } } log.Infof("cloud master changed to '%v'", client.master) })); err != nil { log.V(1).Infof("detector initialization failed: %v", err) return nil, err } return client, nil }