Merge pull request #49352 from atlassian/fix-scheduler-test

Automatic merge from submit-queue (batch tested with PRs 49409, 49352, 49266, 48418)

Use the yet uninitialized informer factory

`informerFactory` has been started already but the `factory.equivalencePodCache` field has not been initialized yet (done below by `.Create()`). So when Service informer calls `onServiceAdd()`, it tries to access this field and crashes with npe.

The fix is to use `informerFactory2`.
It is a race between listeners called by informer and `.Create()`. Do we run unit/integration tests with race detector switched off?

```
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x14c2c2f]

goroutine 11688 [running]:
k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/runtime.HandleCrash(0x0, 0x0, 0x0)
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:58 +0x126
panic(0x28f5f00, 0x61621c0)
	/usr/local/go/src/runtime/panic.go:489 +0x2cf
k8s.io/kubernetes/plugin/pkg/scheduler/core.(*EquivalenceCache).InvalidateCachedPredicateItemOfAllNodes(0x0, 0xc4202a9020)
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/plugin/pkg/scheduler/core/equivalence_cache.go:141 +0x5f
k8s.io/kubernetes/plugin/pkg/scheduler/factory.(*ConfigFactory).onServiceAdd(0xc424ad5950, 0x2cf6fc0, 0xc4249c05a0)
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/plugin/pkg/scheduler/factory/factory.go:347 +0x53
k8s.io/kubernetes/plugin/pkg/scheduler/factory.(*ConfigFactory).(k8s.io/kubernetes/plugin/pkg/scheduler/factory.onServiceAdd)-fm(0x2cf6fc0, 0xc4249c05a0)
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/plugin/pkg/scheduler/factory/factory.go:247 +0x3e
k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache.ResourceEventHandlerFuncs.OnAdd(0xc423a47310, 0xc423a47320, 0xc423a47330, 0x2cf6fc0, 0xc4249c05a0)
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache/controller.go:195 +0x49
k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache.(*ResourceEventHandlerFuncs).OnAdd(0xc423938ce0, 0x2cf6fc0, 0xc4249c05a0)
	<autogenerated>:54 +0x73
k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache.(*processorListener).run(0xc424a698b0)
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache/shared_informer.go:544 +0x287
k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache.(*processorListener).(k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache.run)-fm()
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/tools/cache/shared_informer.go:380 +0x2a
k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait.(*Group).Start.func1(0xc424a87868, 0xc423a47370)
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:71 +0x4f
created by k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait.(*Group).Start
	/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:72 +0x62
```

**Special notes for your reviewer**:
Found while working on #47045.

**Release note**:

```release-note
NONE
```
This commit is contained in:
Kubernetes Submit Queue 2017-07-22 02:05:15 -07:00 committed by GitHub
commit f57091472c

Diff Content Not Available