Address code review comment from Tan
This commit is contained in:
parent
933d36fae3
commit
63cdb96c7a
1 changed files with 17 additions and 28 deletions
45
zk.go
45
zk.go
|
@ -288,12 +288,11 @@ func MesosFromZKOpts(options ...ZKOpt) (string, error) {
|
|||
}
|
||||
|
||||
// Retrieves current Mesos master nodes/leader from ZK with a custom configuration.
|
||||
func MasterNodesFromZKOpts(options ...ZKOpt) (map[string]string, error) {
|
||||
result := make(map[string]string)
|
||||
func MasterNodesFromZKOpts(options ...ZKOpt) (map[string][]string, error) {
|
||||
result := make(map[string][]string)
|
||||
|
||||
// Load the default configuration for Zookeeper followed by overriding values with those provided by the caller.
|
||||
// 10s timeout is not enough. Use 100s
|
||||
config := &zkConfig{backoff: defaultBackoff, timeout: time.Second * 100, logger: NoopLogger{}}
|
||||
config := &zkConfig{backoff: defaultBackoff, timeout: time.Second * 10, logger: NoopLogger{}}
|
||||
for _, opt := range options {
|
||||
opt(config)
|
||||
}
|
||||
|
@ -331,7 +330,7 @@ func MasterNodesFromZKOpts(options ...ZKOpt) (map[string]string, error) {
|
|||
|
||||
// Get all the master nodes through all the children in the given path
|
||||
serviceInst := new(ServiceInstance)
|
||||
var host string
|
||||
var host []string
|
||||
for _, child := range children {
|
||||
childPath := config.path + "/" + child
|
||||
data, _, err := c.Get(childPath)
|
||||
|
@ -359,23 +358,17 @@ func MasterNodesFromZKOpts(options ...ZKOpt) (map[string]string, error) {
|
|||
}
|
||||
|
||||
for _, v := range serviceInst.AdditionalEndpoints {
|
||||
result["leader"] = v.Host
|
||||
result["leader"] = append(result["leader"], v.Host)
|
||||
}
|
||||
} else {
|
||||
// data is not in a json format
|
||||
hostname := string(data)
|
||||
// Combine all master nodes into comma-separated
|
||||
if len(host) > 0 {
|
||||
host += ","
|
||||
}
|
||||
host += hostname
|
||||
result["masterNodes"] = host
|
||||
host = append(host, string(data))
|
||||
}
|
||||
|
||||
}
|
||||
result["masterNodes"] = host
|
||||
|
||||
// Master nodes data might not be available yet, try to fetch again.
|
||||
if len(result["leader"]) == 0 || len(result["masterNodes"]) == 0 {
|
||||
if len(result["masterNodes"]) == 0 {
|
||||
return false, NewTemporaryError(errors.New("no master nodes found"))
|
||||
}
|
||||
return true, nil
|
||||
|
@ -390,12 +383,11 @@ func MasterNodesFromZKOpts(options ...ZKOpt) (map[string]string, error) {
|
|||
}
|
||||
|
||||
// Retrieves current mesos master nodes/leader from ZK with a custom configuration.
|
||||
func MesosMasterNodesFromZKOpts(options ...ZKOpt) (map[string]string, error) {
|
||||
result := make(map[string]string)
|
||||
func MesosMasterNodesFromZKOpts(options ...ZKOpt) (map[string][]string, error) {
|
||||
result := make(map[string][]string)
|
||||
|
||||
// Load the default configuration for Zookeeper followed by overriding values with those provided by the caller.
|
||||
// 10s timeout is not enough. Use 100s
|
||||
config := &zkConfig{backoff: defaultBackoff, timeout: time.Second * 100, logger: NoopLogger{}}
|
||||
// Load the default configuration for Zookeeper followed by overriding values with those provided by the caller.]
|
||||
config := &zkConfig{backoff: defaultBackoff, timeout: time.Second * 10, logger: NoopLogger{}}
|
||||
for _, opt := range options {
|
||||
opt(config)
|
||||
}
|
||||
|
@ -434,7 +426,7 @@ func MesosMasterNodesFromZKOpts(options ...ZKOpt) (map[string]string, error) {
|
|||
// Get all the master nodes through all the children in the given path
|
||||
minScore := math.MaxInt64
|
||||
var mesosInstance MesosInstance
|
||||
var host string
|
||||
var host []string
|
||||
for _, child := range children {
|
||||
// Only the master nodes will start with json.info_
|
||||
if strings.HasPrefix(child, "json.info_") {
|
||||
|
@ -466,20 +458,17 @@ func MesosMasterNodesFromZKOpts(options ...ZKOpt) (map[string]string, error) {
|
|||
}
|
||||
// Combine all master nodes into comma-separated
|
||||
// Return hostname instead of ip to be consistent with aurora master nodes
|
||||
if len(host) > 0 {
|
||||
host += ","
|
||||
}
|
||||
host += mesosInstance.Address.Hostname
|
||||
result["masterNodes"] = host
|
||||
host = append(host, mesosInstance.Address.Hostname)
|
||||
// get the leader from the child with the smallest score.
|
||||
if score < minScore {
|
||||
minScore = score
|
||||
result["leader"] = mesosInstance.Address.Hostname
|
||||
result["leader"] = append(result["leader"], mesosInstance.Address.Hostname)
|
||||
}
|
||||
}
|
||||
}
|
||||
result["masterNodes"] = host
|
||||
// Master nodes data might not be available yet, try to fetch again.
|
||||
if len(result["leader"]) == 0 || len(result["masterNodes"]) == 0 {
|
||||
if len(result["masterNodes"]) == 0 {
|
||||
return false, NewTemporaryError(errors.New("no mesos master nodes found"))
|
||||
}
|
||||
return true, nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue