{"record":{"id":"e8df5df030571bff","repo":"kubernetes/kops","slug":"deleting-load-balancer-ip-w","errorCode":null,"errorMessage":"deleting load-balancer IP: %w","messagePattern":"deleting load-balancer IP: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/scaleway/cloud.go","lineNumber":585,"sourceCode":"\tif err != nil {\n\t\treturn fmt.Errorf(\"deleting load-balancer %s: %w\", loadBalancer.ID, err)\n\t}\n\n\t// We wait for the load-balancer to be deleted, then we detach its IPs\n\t_, err = s.lbAPI.WaitForLb(&lb.ZonedAPIWaitForLBRequest{\n\t\tLBID: loadBalancer.ID,\n\t\tZone: s.zone,\n\t})\n\tif !is404Error(err) {\n\t\treturn fmt.Errorf(\"waiting for load-balancer %s after deletion: %w\", loadBalancer.ID, err)\n\t}\n\tfor _, ip := range ipsToRelease {\n\t\terr := s.lbAPI.ReleaseIP(&lb.ZonedAPIReleaseIPRequest{\n\t\t\tZone: s.zone,\n\t\t\tIPID: ip.ID,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"deleting load-balancer IP: %w\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (s *scwCloudImplementation) DeleteServer(server *instance.Server) error {\n\tsrv, err := s.instanceAPI.GetServer(&instance.GetServerRequest{\n\t\tZone:     s.zone,\n\t\tServerID: server.ID,\n\t})\n\tif err != nil {\n\t\tif is404Error(err) {\n\t\t\tklog.V(4).Infof(\"delete server %s: instance %q was already deleted\", server.ID, server.Name)\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n","sourceCodeStart":567,"sourceCodeEnd":603,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/scaleway/cloud.go#L567-L603","documentation":"In DeleteLoadBalancer, after the load-balancer was deleted and awaited, releasing one of its reserved IPs via lbAPI.ReleaseIP failed. The load-balancer itself is already gone, so this leaves orphaned reserved IPs that will keep billing until manually released.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/scaleway/cloud.go:585 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Manually release the orphaned IP in the Scaleway console or via the API","Check the wrapped error (IP may already be released or attached elsewhere)","Re-run cluster deletion to retry cleanup"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}