From abc909f820f33575500322034d16a786036abf65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ege=20G=C3=BCne=C5=9F?= Date: Mon, 19 May 2025 16:17:41 +0300 Subject: [PATCH] K8SPSMDB-1318: Support concurrent reconciles --- cmd/manager/main.go | 18 ++++++++++++++++++ deploy/bundle.yaml | 2 ++ deploy/cw-bundle.yaml | 2 ++ deploy/cw-operator.yaml | 2 ++ deploy/operator.yaml | 2 ++ 5 files changed, 26 insertions(+) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index f3edfc760f..b775c7f95e 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -27,6 +27,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/webhook" "github.com/percona/percona-server-mongodb-operator/pkg/apis" + psmdbv1 "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1" "github.com/percona/percona-server-mongodb-operator/pkg/controller" "github.com/percona/percona-server-mongodb-operator/pkg/k8s" "github.com/percona/percona-server-mongodb-operator/pkg/mcs" @@ -103,6 +104,23 @@ func main() { }), } + options.Controller.GroupKindConcurrency = map[string]int{ + "PerconaServerMongoDB." + psmdbv1.SchemeGroupVersion.Group: 1, + "PerconaServerMongoDBBackup." + psmdbv1.SchemeGroupVersion.Group: 1, + "PerconaServerMongoDBRestore." + psmdbv1.SchemeGroupVersion.Group: 1, + } + + if s := os.Getenv("MAX_CONCURRENT_RECONCILES"); s != "" { + if i, err := strconv.Atoi(s); err == nil && i > 0 { + options.Controller.GroupKindConcurrency["PerconaServerMongoDB."+psmdbv1.SchemeGroupVersion.Group] = i + options.Controller.GroupKindConcurrency["PerconaServerMongoDBBackup."+psmdbv1.SchemeGroupVersion.Group] = i + options.Controller.GroupKindConcurrency["PerconaServerMongoDBRestore."+psmdbv1.SchemeGroupVersion.Group] = i + } else { + setupLog.Error(err, "MAX_CONCURRENT_RECONCILES must be a positive number") + os.Exit(1) + } + } + // Add support for MultiNamespace set in WATCH_NAMESPACE if len(namespace) > 0 { namespaces := make(map[string]cache.Config) diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index 9d863e068a..a76082872f 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -19821,3 +19821,5 @@ spec: value: 5s - name: DISABLE_TELEMETRY value: "false" + - name: MAX_CONCURRENT_RECONCILES + value: "1" diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml index 010ee9f9f9..e419de1ab8 100644 --- a/deploy/cw-bundle.yaml +++ b/deploy/cw-bundle.yaml @@ -19840,3 +19840,5 @@ spec: value: 5s - name: DISABLE_TELEMETRY value: "false" + - name: MAX_CONCURRENT_RECONCILES + value: "1" diff --git a/deploy/cw-operator.yaml b/deploy/cw-operator.yaml index b8ec3d38e6..c45485a1fc 100644 --- a/deploy/cw-operator.yaml +++ b/deploy/cw-operator.yaml @@ -46,3 +46,5 @@ spec: value: 5s - name: DISABLE_TELEMETRY value: "false" + - name: MAX_CONCURRENT_RECONCILES + value: "1" diff --git a/deploy/operator.yaml b/deploy/operator.yaml index 90d4d04a51..f73f9fbd13 100644 --- a/deploy/operator.yaml +++ b/deploy/operator.yaml @@ -48,3 +48,5 @@ spec: value: 5s - name: DISABLE_TELEMETRY value: "false" + - name: MAX_CONCURRENT_RECONCILES + value: "1"