Skip to content

Commit 88ecace

Browse files
Merge pull request #689 from njhale/fix-ip-race
fix(subscriptions): fix race between subscription sync and cache
2 parents 5eb7ae5 + d899968 commit 88ecace

File tree

12 files changed

+112
-38
lines changed

12 files changed

+112
-38
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ container-mockgen:
153153
docker cp temp-mockgen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/fakes/client-go/listers/. ./pkg/fakes/client-go/listers
154154
docker cp temp-mockgen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/. ./pkg/lib/operatorlister/operatorlisterfakes
155155
docker cp temp-mockgen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient/mock_client.go ./pkg/lib/operatorclient/mock_client.go
156+
docker cp temp-mockgen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/fakes/. ./pkg/fakes/.
156157
docker rm temp-mockgen
157158

158159
# Must be run in gopath: https://github.com/kubernetes/kubernetes/issues/67566

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module github.com/operator-framework/operator-lifecycle-manager
22

33
require (
4+
github.com/coreos/bbolt v1.3.2 // indirect
45
github.com/coreos/etcd v3.3.10+incompatible // indirect
56
github.com/coreos/go-semver v0.2.0
67
github.com/coreos/go-systemd v0.0.0-20181031085051-9002847aa142 // indirect
@@ -12,6 +13,7 @@ require (
1213
github.com/go-openapi/strfmt v0.18.0 // indirect
1314
github.com/go-openapi/validate v0.18.0 // indirect
1415
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
16+
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef // indirect
1517
github.com/golang/mock v1.1.1
1618
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c // indirect
1719
github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf // indirect
@@ -37,6 +39,7 @@ require (
3739
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect
3840
github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f // indirect
3941
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
42+
go.etcd.io/bbolt v1.3.2 // indirect
4043
go.uber.org/atomic v1.3.2 // indirect
4144
go.uber.org/multierr v1.1.0 // indirect
4245
go.uber.org/zap v1.9.1 // indirect

go.sum

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@ github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx2
2020
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
2121
github.com/coreos/bbolt v1.3.0 h1:HIgH5xUWXT914HCI671AxuTTqjj64UOFr7pHn48LUTI=
2222
github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
23+
github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=
24+
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
2325
github.com/coreos/etcd v3.3.9+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
24-
github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04=
26+
github.com/coreos/etcd v3.3.10+incompatible h1:KjVWqrZ5U0wa3CxY2AxlH6/UcB+PK2td1DcsYhA+HRs=
2527
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
2628
github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY=
2729
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
@@ -89,6 +91,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU
8991
github.com/golang/groupcache v0.0.0-20180924190550-6f2cf27854a4/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
9092
github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff h1:kOkM9whyQYodu09SJ6W3NCsHG7crFaJILQ22Gozp3lg=
9193
github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
94+
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk=
95+
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
9296
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
9397
github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8=
9498
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
@@ -107,7 +111,7 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA
107111
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
108112
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f h1:ShTPMJQes6tubcjzGMODIVG5hlrCeImaBnZzKF2N8SM=
109113
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
110-
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c=
114+
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:BWIsLfhgKhV5g/oF34aRjniBHLTZe5DNekSjbAjIS6c=
111115
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
112116
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
113117
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
@@ -206,6 +210,8 @@ github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljT
206210
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
207211
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
208212
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
213+
go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk=
214+
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
209215
go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4=
210216
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
211217
go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
@@ -294,5 +300,5 @@ k8s.io/kube-aggregator v0.0.0-20181204002017-122bac39d429/go.mod h1:8sbzT4QQKDEm
294300
k8s.io/kube-openapi v0.0.0-20181031203759-72693cb1fadd h1:ggv/Vfza0i5xuhUZyYyxcc25AmQvHY8Zi1C2m8WgBvA=
295301
k8s.io/kube-openapi v0.0.0-20181031203759-72693cb1fadd/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc=
296302
k8s.io/kubernetes v1.11.7-beta.0.0.20181219023948-b875d52ea96d/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
297-
k8s.io/kubernetes v1.11.8-beta.0.0.20190124204751-3a10094374f2 h1:CzIOMOEjH+sQw35LY1Gl0jwthkyOojzaq2HIeYZYOrM=
303+
k8s.io/kubernetes v1.11.8-beta.0.0.20190124204751-3a10094374f2 h1:Q4hIsjqTbRprTaPk+gVDUuVipXpGJtTz7Lg2FS3xpmw=
298304
k8s.io/kubernetes v1.11.8-beta.0.0.20190124204751-3a10094374f2/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=

pkg/api/apis/operators/v1alpha1/installplan_types.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,43 @@ type Step struct {
145145
Status StepStatus `json:"status"`
146146
}
147147

148+
// ManifestsMatch returns true if the CSV manifests in the StepResources of the given list of steps
149+
// matches those in the InstallPlanStatus.
150+
func (s *InstallPlanStatus) CSVManifestsMatch(steps []*Step) bool {
151+
if s.Plan == nil && steps == nil {
152+
return true
153+
}
154+
if s.Plan == nil || steps == nil {
155+
return false
156+
}
157+
158+
manifests := make(map[string]struct{})
159+
for _, step := range s.Plan {
160+
resource := step.Resource
161+
if resource.Kind != ClusterServiceVersionKind {
162+
continue
163+
}
164+
manifests[resource.Manifest] = struct{}{}
165+
}
166+
167+
for _, step := range steps {
168+
resource := step.Resource
169+
if resource.Kind != ClusterServiceVersionKind {
170+
continue
171+
}
172+
if _, ok := manifests[resource.Manifest]; !ok {
173+
return false
174+
}
175+
delete(manifests, resource.Manifest)
176+
}
177+
178+
if len(manifests) == 0 {
179+
return true
180+
}
181+
182+
return false
183+
}
184+
148185
func (s *Step) String() string {
149186
return fmt.Sprintf("%s: %s (%s)", s.Resolving, s.Resource, s.Status)
150187
}

pkg/controller/operators/catalog/operator.go

Lines changed: 47 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ const (
4747
serviceKind = "Service"
4848
roleKind = "Role"
4949
roleBindingKind = "RoleBinding"
50+
generatedByKey = "olm.generated-by"
5051
)
5152

5253
// for test stubbing and for ensuring standardization of timezones to UTC
@@ -578,9 +579,9 @@ func (o *Operator) syncResolvingNamespace(obj interface{}) error {
578579
break
579580
}
580581
}
581-
installplanReference, err := o.createInstallPlan(namespace, subs, installPlanApproval, steps)
582+
installplanReference, err := o.ensureInstallPlan(logger, namespace, subs, installPlanApproval, steps)
582583
if err != nil {
583-
logger.WithError(err).Debug("error creating installplan")
584+
logger.WithError(err).Debug("error ensuring installplan")
584585
return err
585586
}
586587

@@ -675,33 +676,27 @@ func (o *Operator) ensureSubscriptionInstallPlanState(logger *logrus.Entry, sub
675676

676677
// check if there's an installplan that created this subscription (only if it doesn't have a reference yet)
677678
// this indicates it was newly resolved by another operator, and we should reference that installplan in the status
678-
ips, err := o.lister.OperatorsV1alpha1().InstallPlanLister().InstallPlans(sub.GetNamespace()).List(labels.Everything())
679-
if err != nil {
680-
logger.WithError(err).Debug("couldn't get installplans")
681-
// if we can't list, just continue processing
679+
ipName, ok := sub.GetAnnotations()[generatedByKey]
680+
if !ok {
682681
return sub, nil
683682
}
684683

685-
out := sub.DeepCopy()
684+
ip, err := o.lister.OperatorsV1alpha1().InstallPlanLister().InstallPlans(sub.GetNamespace()).Get(ipName)
685+
if err != nil {
686+
logger.WithField("installplan", ipName).Warn("unable to get installplan from cache")
687+
return nil, err
688+
}
689+
logger.WithField("installplan", ipName).Debug("found installplan that generated subscription")
686690

687-
for _, ip := range ips {
688-
for _, step := range ip.Status.Plan {
689-
// TODO: is this enough? should we check equality of pkg/channel?
690-
if step != nil && step.Resource.Kind == v1alpha1.SubscriptionKind && step.Resource.Name == sub.GetName() {
691-
logger.WithField("installplan", ip.GetName()).Debug("found subscription in steps of existing installplan")
692-
out.Status.Install = o.referenceForInstallPlan(ip)
693-
out.Status.State = v1alpha1.SubscriptionStateUpgradePending
694-
if updated, err := o.client.OperatorsV1alpha1().Subscriptions(sub.GetNamespace()).UpdateStatus(out); err != nil {
695-
return nil, err
696-
} else {
697-
return updated, nil
698-
}
699-
}
700-
}
691+
out := sub.DeepCopy()
692+
out.Status.Install = o.referenceForInstallPlan(ip)
693+
out.Status.State = v1alpha1.SubscriptionStateUpgradePending
694+
updated, err := o.client.OperatorsV1alpha1().Subscriptions(sub.GetNamespace()).UpdateStatus(out)
695+
if err != nil {
696+
return nil, err
701697
}
702-
logger.Debug("did not find subscription in steps of existing installplan")
703698

704-
return sub, nil
699+
return updated, nil
705700
}
706701

707702
func (o *Operator) ensureSubscriptionCSVState(logger *logrus.Entry, sub *v1alpha1.Subscription) (*v1alpha1.Subscription, error) {
@@ -746,6 +741,28 @@ func (o *Operator) updateSubscriptionSetInstallPlanState(namespace string, subs
746741
return nil
747742
}
748743

744+
func (o *Operator) ensureInstallPlan(logger *logrus.Entry, namespace string, subs []*v1alpha1.Subscription, installPlanApproval v1alpha1.Approval, steps []*v1alpha1.Step) (*v1alpha1.InstallPlanReference, error) {
745+
if len(steps) == 0 {
746+
return nil, nil
747+
}
748+
749+
// Check if any existing installplans are creating the same resources
750+
installPlans, err := o.lister.OperatorsV1alpha1().InstallPlanLister().InstallPlans(namespace).List(labels.Everything())
751+
if err != nil {
752+
return nil, err
753+
}
754+
755+
for _, installPlan := range installPlans {
756+
if installPlan.Status.CSVManifestsMatch(steps) {
757+
logger.Infof("found InstallPlan with matching manifests: %s", installPlan.GetName())
758+
return o.referenceForInstallPlan(installPlan), nil
759+
}
760+
}
761+
logger.Warn("no installplan found with matching manifests, creating new one")
762+
763+
return o.createInstallPlan(namespace, subs, installPlanApproval, steps)
764+
}
765+
749766
func (o *Operator) createInstallPlan(namespace string, subs []*v1alpha1.Subscription, installPlanApproval v1alpha1.Approval, steps []*v1alpha1.Step) (*v1alpha1.InstallPlanReference, error) {
750767
if len(steps) == 0 {
751768
return nil, nil
@@ -1001,6 +1018,13 @@ func (o *Operator) ExecutePlan(plan *v1alpha1.InstallPlan) error {
10011018
return errorwrap.Wrapf(err, "error parsing step manifest: %s", step.Resource.Name)
10021019
}
10031020

1021+
// Add the InstallPlan's name as an annotation
1022+
if annotations := sub.GetAnnotations(); annotations != nil {
1023+
annotations[generatedByKey] = plan.GetName()
1024+
} else {
1025+
sub.SetAnnotations(map[string]string{generatedByKey: plan.GetName()})
1026+
}
1027+
10041028
// Attempt to create the Subscription
10051029
sub.SetNamespace(namespace)
10061030
_, err = o.client.OperatorsV1alpha1().Subscriptions(sub.GetNamespace()).Create(&sub)

pkg/controller/operators/catalog/operator_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ func NewFakeOperator(clientObjs []runtime.Object, k8sObjs []runtime.Object, extO
488488
podInformer := informerFactory.Core().V1().Pods()
489489
configMapInformer := informerFactory.Core().V1().ConfigMaps()
490490
subscriptionInformer := externalversions.NewSharedInformerFactoryWithOptions(clientFake, wakeupInterval, externalversions.WithNamespace(namespace)).Operators().V1alpha1().Subscriptions()
491-
491+
installPlanInformer := externalversions.NewSharedInformerFactoryWithOptions(clientFake, wakeupInterval, externalversions.WithNamespace(namespace)).Operators().V1alpha1().InstallPlans()
492+
492493
// register informers
493494
registryInformers := []cache.SharedIndexInformer{
494495
roleInformer.Informer(),
@@ -498,6 +499,7 @@ func NewFakeOperator(clientObjs []runtime.Object, k8sObjs []runtime.Object, extO
498499
podInformer.Informer(),
499500
configMapInformer.Informer(),
500501
subscriptionInformer.Informer(),
502+
installPlanInformer.Informer(),
501503
}
502504

503505
// register listers
@@ -509,6 +511,7 @@ func NewFakeOperator(clientObjs []runtime.Object, k8sObjs []runtime.Object, extO
509511
lister.CoreV1().RegisterPodLister(namespace, podInformer.Lister())
510512
lister.CoreV1().RegisterConfigMapLister(namespace, configMapInformer.Lister())
511513
lister.OperatorsV1alpha1().RegisterSubscriptionLister(namespace, subscriptionInformer.Lister())
514+
lister.OperatorsV1alpha1().RegisterInstallPlanLister(namespace, installPlanInformer.Lister())
512515

513516
// Create the new operator
514517
queueOperator, err := queueinformer.NewOperatorFromClient(opClientFake, logrus.New())

pkg/controller/registry/reconciler/configmap.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,15 @@ func (s *configMapCatalogSourceDecorator) Pod(image string) *v1.Pod {
106106
Command: []string{"grpc_health_probe", "-addr=localhost:50051"},
107107
},
108108
},
109-
InitialDelaySeconds: 5,
109+
InitialDelaySeconds: 1,
110110
},
111111
LivenessProbe: &v1.Probe{
112112
Handler: v1.Handler{
113113
Exec: &v1.ExecAction{
114114
Command: []string{"grpc_health_probe", "-addr=localhost:50051"},
115115
},
116116
},
117-
InitialDelaySeconds: 10,
117+
InitialDelaySeconds: 2,
118118
},
119119
},
120120
},

pkg/lib/operatorclient/mock_client.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/e2e/installplan_e2e_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ func TestCreateInstallPlanWithPreExistingCRDOwners(t *testing.T) {
532532
fetchedInstallPlan, err := fetchInstallPlan(t, crc, installPlanName, completeOrFailedFunc)
533533
require.NoError(t, err)
534534
t.Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase)
535-
require.True(t, completeOrFailedFunc(fetchedInstallPlan))
535+
require.Equal(t, v1alpha1.InstallPlanPhaseComplete, fetchedInstallPlan.Status.Phase)
536536

537537
// Ensure that the desired resources have been created
538538
expectedSteps := map[registry.ResourceKey]struct{}{
@@ -561,7 +561,7 @@ func TestCreateInstallPlanWithPreExistingCRDOwners(t *testing.T) {
561561
require.Equal(t, 0, len(expectedSteps), "Actual resource steps do not match expected")
562562

563563
// Update the subscription resource to point to the beta CSV
564-
err = crc.OperatorsV1alpha1().Subscriptions(testNamespace).Delete(subscriptionName, metav1.NewDeleteOptions(0))
564+
err = crc.OperatorsV1alpha1().Subscriptions(testNamespace).DeleteCollection(metav1.NewDeleteOptions(0), metav1.ListOptions{})
565565
require.NoError(t, err)
566566

567567
// existing cleanup should remove this

test/e2e/util_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ func createFieldNotEqualSelector(field string, names ...string) string {
237237
func cleanupOLM(t *testing.T, namespace string) {
238238
var immediate int64 = 0
239239
crc := newCRClient(t)
240-
//c := newKubeClient(t)
240+
c := newKubeClient(t)
241241

242242
// Cleanup non persistent OLM CRs
243243
t.Log("cleaning up any remaining non persistent resources...")
@@ -250,7 +250,7 @@ func cleanupOLM(t *testing.T, namespace string) {
250250

251251
// error: the server does not allow this method on the requested resource
252252
// Cleanup non persistent configmaps
253-
//require.NoError(t, c.KubernetesInterface().CoreV1().ConfigMaps(namespace).DeleteCollection(deleteOptions, metav1.ListOptions{FieldSelector: nonPersistentConfigMapsFieldSelector}))
253+
require.NoError(t, c.KubernetesInterface().CoreV1().Pods(namespace).DeleteCollection(deleteOptions, metav1.ListOptions{}))
254254
}
255255

256256
func buildCatalogSourceCleanupFunc(t *testing.T, crc versioned.Interface, namespace string, catalogSource *v1alpha1.CatalogSource) cleanupFunc {

vendor/github.com/golang/groupcache/lru/lru.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ github.com/gogo/protobuf/gogoproto
7171
github.com/gogo/protobuf/protoc-gen-gogo/descriptor
7272
# github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
7373
github.com/golang/glog
74-
# github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff
74+
# github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef
7575
github.com/golang/groupcache/lru
7676
# github.com/golang/mock v1.1.1
7777
github.com/golang/mock/mockgen
@@ -336,20 +336,21 @@ k8s.io/apimachinery/pkg/api/equality
336336
k8s.io/apimachinery/pkg/api/validation
337337
k8s.io/apimachinery/pkg/util/yaml
338338
k8s.io/apimachinery/pkg/util/framer
339+
k8s.io/apimachinery/pkg/util/rand
339340
k8s.io/apimachinery/pkg/apis/meta/v1beta1
340341
k8s.io/apimachinery/pkg/util/mergepatch
341342
k8s.io/apimachinery/third_party/forked/golang/json
342343
k8s.io/apimachinery/pkg/api/validation/path
343344
k8s.io/apimachinery/pkg/apis/meta/v1/validation
344345
k8s.io/apimachinery/pkg/util/uuid
345346
k8s.io/apimachinery/third_party/forked/golang/reflect
346-
k8s.io/apimachinery/pkg/util/rand
347347
# k8s.io/apiserver v0.0.0-20181026151315-13cfe3978170
348348
k8s.io/apiserver/pkg/server
349349
k8s.io/apiserver/pkg/util/logs
350350
k8s.io/apiserver/pkg/authentication/serviceaccount
351351
k8s.io/apiserver/pkg/authentication/user
352352
k8s.io/apiserver/pkg/authorization/authorizer
353+
k8s.io/apiserver/pkg/storage/names
353354
k8s.io/apiserver/pkg/endpoints/openapi
354355
k8s.io/apiserver/pkg/registry/rest
355356
k8s.io/apiserver/pkg/server/options
@@ -379,7 +380,6 @@ k8s.io/apiserver/pkg/server/mux
379380
k8s.io/apiserver/pkg/server/routes
380381
k8s.io/apiserver/pkg/server/storage
381382
k8s.io/apiserver/pkg/util/feature
382-
k8s.io/apiserver/pkg/storage/names
383383
k8s.io/apiserver/pkg/admission/initializer
384384
k8s.io/apiserver/pkg/admission/metrics
385385
k8s.io/apiserver/pkg/apis/apiserver

0 commit comments

Comments
 (0)