{"record":{"id":"affb49d22c5f6e37","repo":"kubesphere/kubesphere","slug":"label-s-s-already-exists","errorCode":null,"errorMessage":"label %s/%s already exists","messagePattern":"label (.+?)/(.+?) already exists","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"pkg/kapis/cluster/v1alpha1/label_handler.go","lineNumber":51,"sourceCode":"}\n\nfunc (h *handler) createLabels(request *restful.Request, response *restful.Response) {\n\tvar labelRequests []apiv1alpha1.CreateLabelRequest\n\tif err := request.ReadEntity(&labelRequests); err != nil {\n\t\tapi.HandleBadRequest(response, request, err)\n\t\treturn\n\t}\n\n\tallLabels := &clusterv1alpha1.LabelList{}\n\tif err := h.client.List(context.Background(), allLabels); err != nil {\n\t\tapi.HandleBadRequest(response, request, err)\n\t\treturn\n\t}\n\n\tresults := make([]*clusterv1alpha1.Label, 0)\n\tfor _, r := range labelRequests {\n\t\tif labelExists(r, allLabels) {\n\t\t\tapi.HandleBadRequest(response, request, fmt.Errorf(\"label %s/%s already exists\", r.Key, r.Value))\n\t\t\treturn\n\t\t}\n\n\t\tobj := &clusterv1alpha1.Label{\n\t\t\tObjectMeta: metav1.ObjectMeta{\n\t\t\t\tName:       rand.String(6),\n\t\t\t\tFinalizers: []string{clusterv1alpha1.LabelFinalizer},\n\t\t\t},\n\t\t\tSpec: clusterv1alpha1.LabelSpec{\n\t\t\t\tKey:   strings.TrimSpace(r.Key),\n\t\t\t\tValue: strings.TrimSpace(r.Value),\n\t\t\t},\n\t\t}\n\t\tif err := h.client.Create(context.Background(), obj); err != nil {\n\t\t\tapi.HandleBadRequest(response, request, err)\n\t\t\treturn\n\t\t}\n\t\tresults = append(results, obj)","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/kubesphere/kubesphere/blob/04a29b5c601470fa6bc2f2e92358dcb802a0d414/pkg/kapis/cluster/v1alpha1/label_handler.go#L33-L69","documentation":"createLabels rejects a CreateLabelRequest whose label (per labelExists matching against all existing cluster labels) is already present in the cluster's LabelList. The 400 response names the already-existing label; the whole create request containing it is rejected.","triggerScenarios":"Thrown at pkg/kapis/cluster/v1alpha1/label_handler.go:51 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Skip or rename the duplicated label in the request and resubmit","Reuse the existing label instead of creating a new one","Pre-filter requested labels against current labels client-side before calling the API"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"04a29b5c601470fa6bc2f2e92358dcb802a0d414","analyzedAt":"2026-09-03T18:33:15.017Z","contentChangedAt":"2026-09-03T18:33:15.017Z","schemaVersion":2},"datasetVersion":"2026-09-11T00:17:11.886Z"}