This PR fixs an issue when flannel gets illegal subnet event in watching leases, it doesn't move forward the etcd cursor and will stuck in the same invalid event forever.
@@ -345,6 +345,9 @@ func (m *LocalManager) WatchLeases(ctx context.Context, cursor interface{}) (Lea
log.Warning("Watch of subnet leases failed because etcd index outside history window")
return m.leasesWatchReset(ctx)
+ case index != 0:
+ return LeaseWatchResult{Cursor: watchCursor{index}}, err
+
default:
return LeaseWatchResult{}, err
}
@@ -40,6 +40,10 @@ func WatchLeases(ctx context.Context, sm Manager, ownLease *Lease, receiver chan
return
+ if res.Cursor != nil {
+ cursor = res.Cursor
+ }
log.Errorf("Watch subnets: %v", err)
time.Sleep(time.Second)
continue