@@ -102,7 +102,7 @@ func EtcdFactory(ctx context.Context, client *clientv3.Client) Factory {
102
102
type SwitchSet struct {
103
103
client * clientv3.Client
104
104
prefix string
105
- leaseKey string
105
+ leasePrefix string
106
106
notifyDead EventFunc
107
107
notifyAlive EventFunc
108
108
logger logrus.FieldLogger
@@ -132,7 +132,7 @@ func NewSwitchSet(client *clientv3.Client, name string, dead, alive EventFunc, l
132
132
return & SwitchSet {
133
133
client : client ,
134
134
prefix : path .Join (SwitchPrefix , name ),
135
- leaseKey : path .Join (SwitchPrefix , "lease" , name ),
135
+ leasePrefix : path .Join (SwitchPrefix , "lease" , name ),
136
136
notifyDead : dead ,
137
137
notifyAlive : alive ,
138
138
logger : logger ,
@@ -220,7 +220,8 @@ func (t *SwitchSet) ping(ctx context.Context, id string, ttl int64, alive bool)
220
220
}
221
221
222
222
func (t * SwitchSet ) getLeaseID (ctx context.Context , ttl int64 , switchID string ) (clientv3.LeaseID , []clientv3.Op , error ) {
223
- resp , err := t .client .Get (ctx , t .leaseKey )
223
+ leaseKey := path .Join (t .leasePrefix , switchID )
224
+ resp , err := t .client .Get (ctx , leaseKey )
224
225
if err != nil {
225
226
return 0 , nil , err
226
227
}
@@ -239,7 +240,7 @@ func (t *SwitchSet) getLeaseID(ctx context.Context, ttl int64, switchID string)
239
240
return 0 , nil , err
240
241
}
241
242
leaseID = lease .ID
242
- ops = append (ops , clientv3 .OpPut (t . leaseKey , fmt .Sprintf ("%x" , lease .ID )))
243
+ ops = append (ops , clientv3 .OpPut (leaseKey , fmt .Sprintf ("%x" , lease .ID )))
243
244
}
244
245
return leaseID , ops , nil
245
246
}
@@ -355,7 +356,7 @@ func (t *SwitchSet) handleEvent(ctx context.Context, event *clientv3.Event) {
355
356
}
356
357
357
358
t .logger .Debugf ("creating a lease for %s with TTL %d" , key , leaseTTL )
358
- leaseID , leaseOps , err := t .getLeaseID (ctx , leaseTTL , path . Base (key ))
359
+ leaseID , leaseOps , err := t .getLeaseID (ctx , leaseTTL , strings . TrimPrefix (key , t . prefix ))
359
360
if err != nil {
360
361
t .logger .WithError (err ).Errorf ("error while granting lease for %s" , key )
361
362
return
0 commit comments