From 7704a54ecc164da113f654e49ebee51fc0e39f2d Mon Sep 17 00:00:00 2001 From: cxfcxf Date: Wed, 8 Apr 2026 20:15:39 -0700 Subject: [PATCH] BUG/MAJOR: service: deep-copy cr-backend spec to fix cross-service server contamination --- pkg/service/service.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/service/service.go b/pkg/service/service.go index 66a50f45..f11f0318 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -200,6 +200,16 @@ func (s *Service) getBackendModel(store store.K8s, a annotations.Annotations, cl // get/create backend Model backend, err = annotations.ModelBackend("cr-backend", s.resource.Namespace, store, s.annotations...) logger.Warning(err) + if backend != nil { + // Deep-copy the CR object before mutating it: multiple services may share the + // same cr-backend annotation and therefore the same *v3.BackendSpec pointer in + // the store. Without a copy, mutations below (BackendBase.Name, Servers map, + // etc.) bleed across services, causing one backend's server list to contaminate + // another's. + var backendCopy v3.BackendSpec + backend.DeepCopyInto(&backendCopy) + backend = &backendCopy + } if backend == nil { backend = &v3.BackendSpec{ Backend: models.Backend{