Skip to content

Commit 88e5a3e

Browse files
authored
Merge pull request #3436 from gman0/fix-cachedresource-labelselector-nilptr
CachedResources reconciler should check for missing label selector
2 parents 659907d + 84bf8e2 commit 88e5a3e

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

pkg/reconciler/cache/cachedresources/cachedresources_reconcile.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,12 @@ func (c *Controller) listSelectedLocalResources(ctx context.Context, cluster log
121121
Resource: cachedResource.Spec.Resource,
122122
}
123123

124-
resources, err := c.dynamicClient.Cluster(cluster.Path()).Resource(gvr).List(ctx, metav1.ListOptions{
125-
LabelSelector: labels.SelectorFromSet(cachedResource.Spec.LabelSelector.MatchLabels).String(),
126-
})
124+
listOpts := metav1.ListOptions{}
125+
if cachedResource.Spec.LabelSelector != nil {
126+
listOpts.LabelSelector = labels.SelectorFromSet(cachedResource.Spec.LabelSelector.MatchLabels).String()
127+
}
128+
129+
resources, err := c.dynamicClient.Cluster(cluster.Path()).Resource(gvr).List(ctx, listOpts)
127130
if err != nil {
128131
return nil, err
129132
}
@@ -140,7 +143,7 @@ func (c *Controller) deleteSelectedCacheResources(ctx context.Context, cluster l
140143
selector := labels.SelectorFromSet(labels.Set{
141144
replicationcontroller.LabelKeyObjectSchema: gvr.Version + "." + gvr.Resource + "." + gvr.Group,
142145
})
143-
if len(cachedResource.Spec.LabelSelector.MatchLabels) > 0 {
146+
if cachedResource.Spec.LabelSelector != nil && len(cachedResource.Spec.LabelSelector.MatchLabels) > 0 {
144147
l := labels.SelectorFromSet(cachedResource.Spec.LabelSelector.MatchLabels)
145148
r, _ := selector.Requirements()
146149
selector = l.Add(r...)
@@ -162,7 +165,7 @@ func (c *Controller) listSelectedCacheResources(ctx context.Context, cluster log
162165
selector := labels.SelectorFromSet(labels.Set{
163166
replicationcontroller.LabelKeyObjectSchema: gvr.Version + "." + gvr.Resource + "." + gvr.Group,
164167
})
165-
if len(cachedResource.Spec.LabelSelector.MatchLabels) > 0 {
168+
if cachedResource.Spec.LabelSelector != nil && len(cachedResource.Spec.LabelSelector.MatchLabels) > 0 {
166169
l := labels.SelectorFromSet(cachedResource.Spec.LabelSelector.MatchLabels)
167170
r, _ := selector.Requirements()
168171
selector = l.Add(r...)

pkg/reconciler/cache/cachedresources/cachedresources_reconcile_replication.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ func (r *replication) reconcile(ctx context.Context, cachedResource *cachev1alph
6060
}
6161
cluster := logicalcluster.From(cachedResource)
6262

63+
var resourceLabelSelector labels.Selector
64+
if cachedResource.Spec.LabelSelector != nil {
65+
resourceLabelSelector = labels.SelectorFromSet(cachedResource.Spec.LabelSelector.MatchLabels)
66+
}
67+
6368
clusterName := logicalcluster.From(cachedResource)
6469
controllerName := fmt.Sprintf("%s.%s.%s.%s.%s", clusterName, gvr.Version, gvr.Resource, gvr.Group, cachedResource.Name)
6570
// TODO: Add locking here when multiple workers are supported.
@@ -98,7 +103,7 @@ func (r *replication) reconcile(ctx context.Context, cachedResource *cachev1alph
98103
gvr,
99104
replicated,
100105
callback,
101-
labels.SelectorFromSet(cachedResource.Spec.LabelSelector.MatchLabels),
106+
resourceLabelSelector,
102107
)
103108
if err != nil {
104109
cancel()
@@ -124,7 +129,7 @@ func (r *replication) reconcile(ctx context.Context, cachedResource *cachev1alph
124129
}
125130
return reconcileStatusStopAndRequeue, nil // Once controller is started, we requeue to check if we need to delete it.
126131
}
127-
controller.SetLabelSelector(labels.SelectorFromSet(cachedResource.Spec.LabelSelector.MatchLabels))
132+
controller.SetLabelSelector(resourceLabelSelector)
128133

129134
// Check if we need to wait for cleaning. This can be few cases:
130135
// 1. We are in deleting phase, but nothing to delete - we are good.

0 commit comments

Comments
 (0)