This is an automated email from the ASF dual-hosted git repository. astefanutti pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/master by this push: new 45b6052 perf: Enqueue ReplicaSet updates only when replicas changed 45b6052 is described below commit 45b605227f606570b222717d660a9f36bdfb4355 Author: Antonin Stefanutti <anto...@stefanutti.fr> AuthorDate: Thu Oct 10 10:20:10 2019 +0200 perf: Enqueue ReplicaSet updates only when replicas changed --- pkg/controller/integration/integration_controller.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/controller/integration/integration_controller.go b/pkg/controller/integration/integration_controller.go index 33ecdb2..d56f455 100644 --- a/pkg/controller/integration/integration_controller.go +++ b/pkg/controller/integration/integration_controller.go @@ -164,7 +164,10 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { return err } - // Watch for ReplicaSet to reconcile replicas to the integration status + // Watch for ReplicaSet to reconcile replicas to the integration status. We cannot use + // the EnqueueRequestForOwner handler as the owner depends on the deployment strategy, + // either regular deployment or Knative service. In any case, the integration is not the + // direct owner of the ReplicaSet. err = c.Watch(&source.Kind{Type: &appsv1.ReplicaSet{}}, &handler.EnqueueRequestsFromMapFunc{ ToRequests: handler.ToRequestsFunc(func(a handler.MapObject) []reconcile.Request { rs := a.Object.(*appsv1.ReplicaSet) @@ -183,6 +186,14 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { return requests }), + }, predicate.Funcs{ + UpdateFunc: func(e event.UpdateEvent) bool { + oldReplicaSet := e.ObjectOld.(*appsv1.ReplicaSet) + newReplicaSet := e.ObjectNew.(*appsv1.ReplicaSet) + // Ignore updates to the ReplicaSet other than the replicas ones, + // that are used to reconcile the integration replicas. + return oldReplicaSet.Status.Replicas != newReplicaSet.Status.Replicas + }, }) if err != nil { return err