@@ -43,8 +43,6 @@ func (i *clusterAwareSharedIndexInformer) GetController() cache.Controller {
43
43
44
44
func (i * clusterAwareSharedIndexInformer ) Run (stopCh <- chan struct {}) {
45
45
go i .delegate .Run (stopCh )
46
- // TODO(kcp) this is fragile
47
- time .Sleep (10000 )
48
46
// need to update keyfunc in:
49
47
// [x] i.delegate.indexer.keyFunc
50
48
// [x] i.delegate.controller.config.Queue.keyFunc
@@ -55,9 +53,17 @@ func (i *clusterAwareSharedIndexInformer) Run(stopCh <-chan struct{}) {
55
53
56
54
pointerVal := reflect .ValueOf (i .delegate )
57
55
val := reflect .Indirect (pointerVal )
58
- controllerField := val .FieldByName ("controller" )
59
- ptrToController := unsafe .Pointer (controllerField .UnsafeAddr ())
60
- controller := reflect .NewAt (controllerField .Type (), ptrToController ).Elem ().Interface ()
56
+
57
+ var controllerField reflect.Value
58
+ var ptrToController unsafe.Pointer
59
+ var controllerVal reflect.Value
60
+
61
+ for ok := true ; ok ; ok = controllerVal .IsZero () {
62
+ controllerField = val .FieldByName ("controller" )
63
+ ptrToController = unsafe .Pointer (controllerField .UnsafeAddr ())
64
+ controllerVal = reflect .NewAt (controllerField .Type (), ptrToController ).Elem ()
65
+ }
66
+ controller := controllerVal .Interface ()
61
67
62
68
configval := reflect .Indirect (reflect .ValueOf (controller )).FieldByName ("config" )
63
69
ptrToConfig := unsafe .Pointer (configval .UnsafeAddr ())
0 commit comments