From 7b14c7ec4e5e157290b31cb29ac21b5bb0b210b6 Mon Sep 17 00:00:00 2001 From: Linying Assad Date: Thu, 9 Jul 2026 22:54:32 +0800 Subject: [PATCH] fix: ignore runtime pvc template fields --- .../computegroups/controller.go | 2 ++ .../computegroups/controller_test.go | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller.go b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller.go index 356f7cba..a91a0ec3 100644 --- a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller.go +++ b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller.go @@ -334,11 +334,13 @@ func volumeClaimTemplatesEqual(new, old []corev1.PersistentVolumeClaim) bool { } func normalizeVolumeClaimTemplate(pvc corev1.PersistentVolumeClaim) corev1.PersistentVolumeClaim { + pvc.TypeMeta = metav1.TypeMeta{} pvc.ObjectMeta = metav1.ObjectMeta{ Name: pvc.Name, Labels: normalizeStringMap(pvc.Labels), Annotations: normalizeStringMap(pvc.Annotations), } + pvc.Status = corev1.PersistentVolumeClaimStatus{} if pvc.Spec.VolumeMode == nil { volumeMode := corev1.PersistentVolumeFilesystem pvc.Spec.VolumeMode = &volumeMode diff --git a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller_test.go b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller_test.go index 7da89e9f..87249a4f 100644 --- a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller_test.go +++ b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/controller_test.go @@ -82,6 +82,21 @@ func TestVolumeClaimTemplatesEqualIgnoresDefaultVolumeMode(t *testing.T) { } } +func TestVolumeClaimTemplatesEqualIgnoresRuntimeFields(t *testing.T) { + desired := newTestStatefulSet("default", "doris-cg1", "100Gi").Spec.VolumeClaimTemplates + existing := newTestStatefulSet("default", "doris-cg1", "100Gi").Spec.VolumeClaimTemplates + + existing[0].TypeMeta = metav1.TypeMeta{ + APIVersion: "v1", + Kind: "PersistentVolumeClaim", + } + existing[0].Status.Phase = corev1.ClaimPending + + if !volumeClaimTemplatesEqual(desired, existing) { + t.Fatal("volumeClaimTemplatesEqual should ignore runtime-only pvc template fields") + } +} + func newTestStatefulSet(namespace, name, storage string) *appv1.StatefulSet { return &appv1.StatefulSet{ ObjectMeta: metav1.ObjectMeta{