{"record":{"id":"8e64f1eb19631eba","repo":"kubernetes/kops","slug":"failed-to-get-info-for-akamai-linode-instance-q-8e64f1","errorCode":null,"errorMessage":"failed to get info for Akamai (Linode) instance %q: empty response","messagePattern":"failed to get info for Akamai \\(Linode\\) instance %q: empty response","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/nodeidentity/linode/identify.go","lineNumber":101,"sourceCode":"\t\treturn nil, fmt.Errorf(\"providerID %q not recognized for node %s: %w\", providerID, node.Name, err)\n\t}\n\n\tif i.cacheEnabled {\n\t\tobj, exists, err := i.cache.GetByKey(instanceID)\n\t\tif err != nil {\n\t\t\tklog.Warningf(\"Nodeidentity info cache lookup failure: %v\", err)\n\t\t}\n\t\tif exists {\n\t\t\treturn obj.(*nodeidentity.Info), nil\n\t\t}\n\t}\n\n\tinstance, err := i.client.GetInstance(ctx, instanceNumericID)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get info for Akamai (Linode) instance %q: %w\", instanceID, err)\n\t}\n\tif instance == nil {\n\t\treturn nil, fmt.Errorf(\"failed to get info for Akamai (Linode) instance %q: empty response\", instanceID)\n\t}\n\n\tif !isExpectedInstanceStatus(instance.Status) {\n\t\treturn nil, fmt.Errorf(\"found instance %q with unexpected status: %q\", instanceID, instance.Status)\n\t}\n\n\tinfo := &nodeidentity.Info{\n\t\tInstanceID: instanceID,\n\t\tLabels:     buildLabelsFromTags(instance.Tags),\n\t}\n\n\tif i.cacheEnabled {\n\t\tif err := i.cache.Add(info); err != nil {\n\t\t\tklog.Warningf(\"Failed to add node identity info to cache: %v\", err)\n\t\t}\n\t}\n\n\treturn info, nil","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/pkg/nodeidentity/linode/identify.go#L83-L119","documentation":"IdentifyNode checks the result of client.GetInstance after the error path: if the API returned (nil, nil) — no error but no instance — this guard reports an empty response for the instance ID. It protects against silently dereferencing a nil instance when building node identity labels.","triggerScenarios":"Thrown at pkg/nodeidentity/linode/identify.go:101 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the instance ID in node.spec.providerID exists in the Linode account","Delete the stale Node object if the instance was deleted"],"exampleFix":null,"handlingStrategy":"validation","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"}