Explorar el Código

clientv3/leasing: fix racey waitSession

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
Gyuho Lee hace 8 años
padre
commit
3193f3c9ab
Se han modificado 1 ficheros con 4 adiciones y 1 borrados
  1. 4 1
      clientv3/leasing/kv.go

+ 4 - 1
clientv3/leasing/kv.go

@@ -445,8 +445,11 @@ func (lkv *leasingKV) revokeLeaseKvs(ctx context.Context, kvs []*mvccpb.KeyValue
 }
 
 func (lkv *leasingKV) waitSession(ctx context.Context) error {
+	lkv.leases.mu.RLock()
+	sessionc := lkv.sessionc
+	lkv.leases.mu.RUnlock()
 	select {
-	case <-lkv.sessionc:
+	case <-sessionc:
 		return nil
 	case <-lkv.ctx.Done():
 		return lkv.ctx.Err()