{"record":{"id":"a55c64426b8d2be4","repo":"cilium/cilium","slug":"can-t-init-service-export-store-w","errorCode":null,"errorMessage":"can't init service export store: %w","messagePattern":"can't init service export store: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"clustermesh-apiserver/clustermesh/serviceexport_sync.go","lineNumber":152,"sourceCode":"\t\treturn nil\n\t}\n\n\tif s.clientset != nil /* clientset is nil in tests */ {\n\t\terr := client.CheckCRD(ctx, s.clientset, mcsapiv1beta1.SchemeGroupVersion.WithKind(\"serviceexports\"))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"required ServiceExport CRD is not installed: %w\", err)\n\t\t}\n\t}\n\n\tserviceEvents := s.services.Events(ctx)\n\tserviceStore, err := s.services.Store(ctx)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"can't init service store: %w\", err)\n\t}\n\tserviceExportsEvents := s.serviceExports.Events(ctx)\n\tserviceExportStore, err := s.serviceExports.Store(ctx)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"can't init service export store: %w\", err)\n\t}\n\n\tnamespaceEvents := s.namespaces.Events(ctx)\n\n\tservicesSynced, serviceExportsSynced := false, false\n\tfor serviceEvents != nil || serviceExportsEvents != nil || namespaceEvents != nil {\n\t\tselect {\n\t\tcase ev, ok := <-serviceEvents:\n\t\t\tif !ok {\n\t\t\t\tserviceEvents = nil\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif ev.Kind == resource.Sync {\n\t\t\t\tservicesSynced = true\n\t\t\t\tif servicesSynced && serviceExportsSynced {\n\t\t\t\t\ts.store.Synced(ctx, s.syncCallback)\n\t\t\t\t}","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/cilium/cilium/blob/ac7b90affa4baf0642e6685319d56907b3a73a6d/clustermesh-apiserver/clustermesh/serviceexport_sync.go#L134-L170","documentation":"Same store-initialization pattern as the service store, but for the ServiceExports resource: serviceExportStore, err := s.serviceExports.Store(ctx) failing aborts the loop with this error.","triggerScenarios":"Store(ctx) on the serviceExports resource fails, typically because the ServiceExports informer cannot list/watch (CRD missing, RBAC denied, API server error) or context is cancelled.","commonSituations":"MCS API CRDs partially installed (CRD exists but subresource/status not ready), RBAC limiting access to serviceexports, transient API server outage during startup.","solutions":["Ensure ServiceExport CRD is installed and established (check CRD conditions).","Grant the apiserver's service account list/watch on serviceexports.","Read the wrapped root cause from logs and fix API server connectivity or permissions."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"kubectl get crd serviceexports.multicluster.x-k8s.io -o jsonpath='{.status.conditions[?(@.type==\"Established\")].status}' # expect True\nkubectl auth can-i list serviceexports.multicluster.x-k8s.io --as=system:serviceaccount:kube-system:clustermesh-apiserver","typeGuard":null,"tryCatchPattern":"// Same retry-with-backoff pattern as store init; abort permanently only on NotFound/Forbidden\nif errors.Is(err, context.Canceled) { return err }\nretryWithBackoff(func() error { _, err = s.serviceExports.Store(ctx); return err })","preventionTips":["Wait for CRD Established condition before starting dependent controllers.","Provision RBAC for serviceexports in the apiserver's ClusterRole.","Check the wrapped root cause in logs before restarting."],"tags":["kubernetes","crd","clustermesh"],"backgroundTag":"store-init-failed","analyzedSha":"ac7b90affa4baf0642e6685319d56907b3a73a6d","analyzedAt":"2026-08-31T18:27:15.868Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}