From 9901aa0ead189b53ea3c1d0202a0b6f74244081e Mon Sep 17 00:00:00 2001 From: Aleksei Kobzev Date: Mon, 27 Jan 2025 14:12:00 +0800 Subject: [PATCH 1/2] use oldObj as statefulSet inside IgnoreChangesFunction --- .changes/unreleased/Fixed-20250127-141003.yaml | 3 +++ internal/controllers/database/sync.go | 4 ++-- internal/controllers/storage/sync.go | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 .changes/unreleased/Fixed-20250127-141003.yaml diff --git a/.changes/unreleased/Fixed-20250127-141003.yaml b/.changes/unreleased/Fixed-20250127-141003.yaml new file mode 100644 index 00000000..aa6c20f7 --- /dev/null +++ b/.changes/unreleased/Fixed-20250127-141003.yaml @@ -0,0 +1,3 @@ +kind: Fixed +body: panic when create object with .spec.pause is true +time: 2025-01-27T14:10:03.497565+08:00 diff --git a/internal/controllers/database/sync.go b/internal/controllers/database/sync.go index 6255d521..0ad5e9ad 100644 --- a/internal/controllers/database/sync.go +++ b/internal/controllers/database/sync.go @@ -359,8 +359,8 @@ func (r *Reconciler) waitForStatefulSetToScale( func shouldIgnoreDatabaseChange(database *resources.DatabaseBuilder) resources.IgnoreChangesFunction { return func(oldObj, newObj runtime.Object) bool { - if _, ok := newObj.(*appsv1.StatefulSet); ok { - if database.Spec.Pause && *oldObj.(*appsv1.StatefulSet).Spec.Replicas == 0 { + if statefulSet, ok := oldObj.(*appsv1.StatefulSet); ok { + if database.Spec.Pause && *statefulSet.Spec.Replicas == 0 { return true } } diff --git a/internal/controllers/storage/sync.go b/internal/controllers/storage/sync.go index ebf833ec..9438f967 100644 --- a/internal/controllers/storage/sync.go +++ b/internal/controllers/storage/sync.go @@ -292,8 +292,8 @@ func (r *Reconciler) waitForNodeSetsToProvisioned( func shouldIgnoreStorageChange(storage *resources.StorageClusterBuilder) resources.IgnoreChangesFunction { return func(oldObj, newObj runtime.Object) bool { - if _, ok := newObj.(*appsv1.StatefulSet); ok { - if storage.Spec.Pause && *oldObj.(*appsv1.StatefulSet).Spec.Replicas == 0 { + if statefulSet, ok := newObj.(*appsv1.StatefulSet); ok { + if storage.Spec.Pause && *statefulSet.Spec.Replicas == 0 { return true } } From f400e93aa5dc4ab62dfacce7e5a8fc89e097531f Mon Sep 17 00:00:00 2001 From: Aleksei Kobzev Date: Tue, 28 Jan 2025 00:51:33 +0800 Subject: [PATCH 2/2] fix typo --- internal/controllers/storage/sync.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/controllers/storage/sync.go b/internal/controllers/storage/sync.go index 9438f967..55cde3ce 100644 --- a/internal/controllers/storage/sync.go +++ b/internal/controllers/storage/sync.go @@ -292,7 +292,7 @@ func (r *Reconciler) waitForNodeSetsToProvisioned( func shouldIgnoreStorageChange(storage *resources.StorageClusterBuilder) resources.IgnoreChangesFunction { return func(oldObj, newObj runtime.Object) bool { - if statefulSet, ok := newObj.(*appsv1.StatefulSet); ok { + if statefulSet, ok := oldObj.(*appsv1.StatefulSet); ok { if storage.Spec.Pause && *statefulSet.Spec.Replicas == 0 { return true }