Skip to content

Commit f653d09

Browse files
committed
Wait for controller to initialize
1 parent 2f8df6b commit f653d09

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

pkg/kcp/informers.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ func (i *clusterAwareSharedIndexInformer) GetController() cache.Controller {
4343

4444
func (i *clusterAwareSharedIndexInformer) Run(stopCh <-chan struct{}) {
4545
go i.delegate.Run(stopCh)
46-
// TODO(kcp) this is fragile
47-
time.Sleep(10000)
4846
// need to update keyfunc in:
4947
// [x] i.delegate.indexer.keyFunc
5048
// [x] i.delegate.controller.config.Queue.keyFunc
@@ -55,9 +53,17 @@ func (i *clusterAwareSharedIndexInformer) Run(stopCh <-chan struct{}) {
5553

5654
pointerVal := reflect.ValueOf(i.delegate)
5755
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()
6167

6268
configval := reflect.Indirect(reflect.ValueOf(controller)).FieldByName("config")
6369
ptrToConfig := unsafe.Pointer(configval.UnsafeAddr())

0 commit comments

Comments
 (0)