Skip to content

Commit 07839fd

Browse files
committed
chore: tighten spoke reconcile predicate
Signed-off-by: Artur Shad Nik <arturshadnik@gmail.com>
1 parent 9cfa844 commit 07839fd

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

fleetconfig-controller/internal/controller/v1beta1/spoke_controller.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -936,7 +936,7 @@ func (r *SpokeReconciler) SetupWithManager(mgr ctrl.Manager) error {
936936
CreateFunc: func(_ event.CreateEvent) bool {
937937
return false
938938
},
939-
// only return true if old and new hub specs are different
939+
// only return true if old and new hub specs shared fields are different
940940
UpdateFunc: func(e event.UpdateEvent) bool {
941941
oldHub, ok := e.ObjectOld.(*v1beta1.Hub)
942942
if !ok {
@@ -946,7 +946,7 @@ func (r *SpokeReconciler) SetupWithManager(mgr ctrl.Manager) error {
946946
if !ok {
947947
return false
948948
}
949-
return !reflect.DeepEqual(oldHub.Spec, newHub.Spec)
949+
return sharedFieldsChanged(oldHub.Spec.DeepCopy(), newHub.Spec.DeepCopy())
950950
},
951951
GenericFunc: func(_ event.GenericEvent) bool {
952952
return false
@@ -957,6 +957,14 @@ func (r *SpokeReconciler) SetupWithManager(mgr ctrl.Manager) error {
957957
Complete(r)
958958
}
959959

960+
// sharedFieldsChanged checks whether the spec fields that are shared between Hub and Spokes were updated,
961+
// to prevent unnecessary reconciles of Spokes
962+
func sharedFieldsChanged(old, new *v1beta1.HubSpec) bool {
963+
return !reflect.DeepEqual(old.RegistrationAuth, new.RegistrationAuth) ||
964+
!reflect.DeepEqual(old.ClusterManager.Source, new.ClusterManager.Source) ||
965+
old.Timeout != new.Timeout || old.LogVerbosity != new.LogVerbosity
966+
}
967+
960968
func (r *SpokeReconciler) mapHubEventToSpoke(ctx context.Context, _ client.Object) []reconcile.Request {
961969
spokeList := &v1beta1.SpokeList{}
962970
err := r.List(ctx, spokeList)

0 commit comments

Comments
 (0)