@@ -40,7 +40,6 @@ import (
40
40
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
41
41
"k8s.io/apimachinery/pkg/util/wait"
42
42
"k8s.io/apimachinery/pkg/watch"
43
- utiltrace "k8s.io/apiserver/pkg/util/trace"
44
43
"k8s.io/klog"
45
44
)
46
45
@@ -176,57 +175,47 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
176
175
options := metav1.ListOptions {ResourceVersion : "0" }
177
176
r .metrics .numberOfLists .Inc ()
178
177
start := r .clock .Now ()
179
- if err := func () error {
180
- trace := utiltrace .New ("Reflector_" + r .name + "_ListAndWatch" )
181
- defer trace .LogIfLong (10 * time .Second )
182
- var list runtime.Object
183
- var err error
184
- listCh := make (chan struct {}, 1 )
185
- panicCh := make (chan interface {}, 1 )
186
- go func () {
187
- defer func () {
188
- if r := recover (); r != nil {
189
- panicCh <- r
190
- }
191
- }()
192
- list , err = r .listerWatcher .List (options )
193
- close (listCh )
178
+
179
+ var list runtime.Object
180
+ var err error
181
+ listCh := make (chan struct {}, 1 )
182
+ panicCh := make (chan interface {}, 1 )
183
+ go func () {
184
+ defer func () {
185
+ if r := recover (); r != nil {
186
+ panicCh <- r
187
+ }
194
188
}()
195
- select {
196
- case <- stopCh :
197
- return nil
198
- case r := <- panicCh :
199
- panic (r )
200
- case <- listCh :
201
- }
202
- if err != nil {
203
- return fmt .Errorf ("%s: Failed to list %v: %v" , r .name , r .expectedType , err )
204
- }
205
- trace .Step ("Objects listed" )
206
- r .metrics .listDuration .Observe (time .Since (start ).Seconds ())
207
- listMetaInterface , err := meta .ListAccessor (list )
208
- if err != nil {
209
- return fmt .Errorf ("%s: Unable to understand list result %#v: %v" , r .name , list , err )
210
- }
211
- resourceVersion = listMetaInterface .GetResourceVersion ()
212
- trace .Step ("Resource version extracted" )
213
- items , err := meta .ExtractList (list )
214
- if err != nil {
215
- return fmt .Errorf ("%s: Unable to understand list result %#v (%v)" , r .name , list , err )
216
- }
217
- trace .Step ("Objects extracted" )
218
- r .metrics .numberOfItemsInList .Observe (float64 (len (items )))
219
- if err := r .syncWith (items , resourceVersion ); err != nil {
220
- return fmt .Errorf ("%s: Unable to sync list result: %v" , r .name , err )
221
- }
222
- trace .Step ("SyncWith done" )
223
- r .setLastSyncResourceVersion (resourceVersion )
224
- trace .Step ("Resource version updated" )
189
+ list , err = r .listerWatcher .List (options )
190
+ close (listCh )
191
+ }()
192
+ select {
193
+ case <- stopCh :
225
194
return nil
226
- }(); err != nil {
227
- return err
195
+ case r := <- panicCh :
196
+ panic (r )
197
+ case <- listCh :
198
+ }
199
+ if err != nil {
200
+ return fmt .Errorf ("%s: Failed to list %v: %v" , r .name , r .expectedType , err )
228
201
}
229
202
203
+ r .metrics .listDuration .Observe (time .Since (start ).Seconds ())
204
+ listMetaInterface , err := meta .ListAccessor (list )
205
+ if err != nil {
206
+ return fmt .Errorf ("%s: Unable to understand list result %#v: %v" , r .name , list , err )
207
+ }
208
+ resourceVersion = listMetaInterface .GetResourceVersion ()
209
+ items , err := meta .ExtractList (list )
210
+ if err != nil {
211
+ return fmt .Errorf ("%s: Unable to understand list result %#v (%v)" , r .name , list , err )
212
+ }
213
+ r .metrics .numberOfItemsInList .Observe (float64 (len (items )))
214
+ if err := r .syncWith (items , resourceVersion ); err != nil {
215
+ return fmt .Errorf ("%s: Unable to sync list result: %v" , r .name , err )
216
+ }
217
+ r .setLastSyncResourceVersion (resourceVersion )
218
+
230
219
resyncerrc := make (chan error , 1 )
231
220
cancelCh := make (chan struct {})
232
221
defer close (cancelCh )
@@ -296,6 +285,7 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
296
285
}
297
286
return nil
298
287
}
288
+
299
289
if err := r .watchHandler (w , & resourceVersion , resyncerrc , stopCh ); err != nil {
300
290
if err != errorStopRequested {
301
291
klog .Warningf ("%s: watch of %v ended with: %v" , r .name , r .expectedType , err )
0 commit comments