return error when create etcdNR fails

This commit is contained in:
yangzhouhan
2015-08-10 11:17:24 -07:00
parent 15755ea692
commit 22561bcdfc

View File

@ -73,12 +73,11 @@ type etcdNR struct {
cancel context.CancelFunc cancel context.CancelFunc
} }
// NewETCDNR creates an etcd NameResolver // NewETCDNR creates an etcd NameResolver.
func NewETCDNR(cfg etcdcl.Config) naming.Resolver { func NewETCDNR(cfg etcdcl.Config) (naming.Resolver, error) {
c, err := etcdcl.New(cfg) c, err := etcdcl.New(cfg)
if err != nil { if err != nil {
log.Fatalf("NewETCDNR(_) failed: %v", err) return nil, err
return nil
} }
kAPI := etcdcl.NewKeysAPI(c) kAPI := etcdcl.NewKeysAPI(c)
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
@ -87,10 +86,10 @@ func NewETCDNR(cfg etcdcl.Config) naming.Resolver {
recv: newRecvBuffer(), recv: newRecvBuffer(),
ctx: ctx, ctx: ctx,
cancel: cancel, cancel: cancel,
} }, nil
} }
// getNode builds the resulting key-value map starting from node recursively // getNode builds the resulting key-value map starting from node recursively.
func getNode(node *etcdcl.Node, res map[string]string) { func getNode(node *etcdcl.Node, res map[string]string) {
if !node.Dir { if !node.Dir {
res[node.Key] = node.Value res[node.Key] = node.Value