Skip to content

Commit 66244a4

Browse files
black-dragon74mergify[bot]
authored andcommitted
controller: watch for VAs silently to optimize lookups
This patch adds a silent watch on VolumeAttachment objects to avoid unexpected memory consumption due to `List` calls. It is okay to setup a watch in two places as the Informer is shared and managed by the Manager. Signed-off-by: Niraj Yadav <niryadav@redhat.com>
1 parent 5b099c5 commit 66244a4

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

internal/controller/csiaddons/encryptionkeyrotationjob_controller.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424

2525
csiaddonsv1alpha1 "github.com/csi-addons/kubernetes-csi-addons/api/csiaddons/v1alpha1"
2626
"github.com/csi-addons/kubernetes-csi-addons/internal/connection"
27+
"github.com/csi-addons/kubernetes-csi-addons/internal/controller/utils"
2728
"github.com/csi-addons/kubernetes-csi-addons/internal/proto"
2829
"github.com/csi-addons/kubernetes-csi-addons/internal/util"
2930
"github.com/csi-addons/spec/lib/go/identity"
@@ -38,8 +39,10 @@ import (
3839
"k8s.io/apimachinery/pkg/runtime"
3940
"k8s.io/apimachinery/pkg/types"
4041
ctrl "sigs.k8s.io/controller-runtime"
42+
"sigs.k8s.io/controller-runtime/pkg/builder"
4143
"sigs.k8s.io/controller-runtime/pkg/client"
4244
"sigs.k8s.io/controller-runtime/pkg/controller"
45+
"sigs.k8s.io/controller-runtime/pkg/handler"
4346
"sigs.k8s.io/controller-runtime/pkg/log"
4447
"sigs.k8s.io/controller-runtime/pkg/predicate"
4548
)
@@ -333,6 +336,12 @@ func (r *EncryptionKeyRotationJobReconciler) SetupWithManager(mgr ctrl.Manager,
333336
return ctrl.NewControllerManagedBy(mgr).
334337
For(&csiaddonsv1alpha1.EncryptionKeyRotationJob{}).
335338
WithEventFilter(predicate.GenerationChangedPredicate{}).
339+
// This is to avoid "stop-the-world" events and wait for cache sync when we list VA
340+
Watches(
341+
&scv1.VolumeAttachment{},
342+
&handler.EnqueueRequestForObject{},
343+
builder.WithPredicates(utils.SilentPredicate()),
344+
).
336345
WithOptions(ctrlOptions).
337346
Complete(r)
338347
}

internal/controller/csiaddons/reclaimspacejob_controller.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
csiaddonsv1alpha1 "github.com/csi-addons/kubernetes-csi-addons/api/csiaddons/v1alpha1"
2727
"github.com/csi-addons/kubernetes-csi-addons/internal/connection"
28+
"github.com/csi-addons/kubernetes-csi-addons/internal/controller/utils"
2829
"github.com/csi-addons/kubernetes-csi-addons/internal/proto"
2930
"github.com/csi-addons/kubernetes-csi-addons/internal/util"
3031

@@ -40,8 +41,10 @@ import (
4041
"k8s.io/apimachinery/pkg/runtime"
4142
"k8s.io/apimachinery/pkg/types"
4243
ctrl "sigs.k8s.io/controller-runtime"
44+
"sigs.k8s.io/controller-runtime/pkg/builder"
4345
"sigs.k8s.io/controller-runtime/pkg/client"
4446
"sigs.k8s.io/controller-runtime/pkg/controller"
47+
"sigs.k8s.io/controller-runtime/pkg/handler"
4548
"sigs.k8s.io/controller-runtime/pkg/log"
4649
"sigs.k8s.io/controller-runtime/pkg/predicate"
4750
)
@@ -164,6 +167,12 @@ func (r *ReclaimSpaceJobReconciler) SetupWithManager(mgr ctrl.Manager, ctrlOptio
164167
return ctrl.NewControllerManagedBy(mgr).
165168
For(&csiaddonsv1alpha1.ReclaimSpaceJob{}).
166169
WithEventFilter(predicate.GenerationChangedPredicate{}).
170+
// This is to avoid "stop-the-world" events and wait for cache sync when we list VA
171+
Watches(
172+
&scv1.VolumeAttachment{},
173+
&handler.EnqueueRequestForObject{},
174+
builder.WithPredicates(utils.SilentPredicate()),
175+
).
167176
WithOptions(ctrlOptions).
168177
Complete(r)
169178
}

0 commit comments

Comments
 (0)