lock optimization

This commit is contained in:
iamqizhao
2016-05-16 19:19:35 -07:00
parent 5dafdb0a17
commit 65969fb499

View File

@ -336,18 +336,18 @@ func (cc *ClientConn) watchAddrUpdates() error {
return err return err
} }
case naming.Delete: case naming.Delete:
cc.mu.Lock() cc.mu.RLock()
addr := Address{ addr := Address{
Addr: update.Addr, Addr: update.Addr,
Metadata: update.Metadata, Metadata: update.Metadata,
} }
ac, ok := cc.conns[addr] ac, ok := cc.conns[addr]
if !ok { if !ok {
cc.mu.Unlock() cc.mu.RUnlock()
grpclog.Println("grpc: The name resolver wanted to delete a non-exist address: ", addr) grpclog.Println("grpc: The name resolver wanted to delete a non-exist address: ", addr)
continue continue
} }
cc.mu.Unlock() cc.mu.RUnlock()
ac.tearDown(ErrConnDrain) ac.tearDown(ErrConnDrain)
default: default:
grpclog.Println("Unknown update.Op ", update.Op) grpclog.Println("Unknown update.Op ", update.Op)