fix some closing issues

This commit is contained in:
iamqizhao
2016-09-20 18:53:56 -07:00
parent 766825a8b4
commit 3f1de24002

View File

@ -271,22 +271,23 @@ func (b *balancer) Start(target string, config grpc.BalancerConfig) error {
var err error var err error
creds := config.DialCreds creds := config.DialCreds
if creds == nil { if creds == nil {
cc, err = grpc.Dial(rb.addr.Addr, grpc.WithBlock(), grpc.WithInsecure()) cc, err = grpc.Dial(rb.addr.Addr, grpc.WithInsecure())
} else { } else {
cc, err = grpc.Dial(rb.addr.Addr, grpc.WithBlock(), grpc.WithTransportCredentials(creds)) cc, err = grpc.Dial(rb.addr.Addr, grpc.WithTransportCredentials(creds))
} }
if err != nil { if err != nil {
grpclog.Printf("Failed to setup a connection to the remote balancer %v: %v", rb.addr, err) grpclog.Printf("Failed to setup a connection to the remote balancer %v: %v", rb.addr, err)
return return
} }
go func(cc *grpc.ClientConn) {
lbc := lbpb.NewLoadBalancerClient(cc) lbc := lbpb.NewLoadBalancerClient(cc)
go func() {
for { for {
if retry := b.callRemoteBalancer(lbc); !retry { if retry := b.callRemoteBalancer(lbc); !retry {
cc.Close()
return return
} }
} }
}() }(cc)
} }
}() }()
return nil return nil