{"record":{"id":"bcf2b699a1aeb50b","repo":"juanfont/headscale","slug":"creating-node-w","errorCode":null,"errorMessage":"creating node: %w","messagePattern":"creating node: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/headscale/cli/debug.go","lineNumber":55,"sourceCode":"\t\tuser, _ := cmd.Flags().GetString(\"user\")\n\t\tname, _ := cmd.Flags().GetString(\"name\")\n\t\tregistrationID, _ := cmd.Flags().GetString(\"key\")\n\n\t\t_, err := types.AuthIDFromString(registrationID)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"parsing machine key: %w\", err)\n\t\t}\n\n\t\troutes, _ := cmd.Flags().GetStringSlice(\"route\")\n\n\t\tresp, err := client.DebugCreateNodeWithResponse(ctx, clientv1.DebugCreateNodeJSONRequestBody{\n\t\t\tKey:    &registrationID,\n\t\t\tName:   &name,\n\t\t\tUser:   &user,\n\t\t\tRoutes: &routes,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"creating node: %w\", err)\n\t\t}\n\n\t\tif resp.StatusCode() != http.StatusOK {\n\t\t\treturn apiError(resp.StatusCode(), resp.ApplicationproblemJSONDefault)\n\t\t}\n\n\t\treturn printOutput(cmd, resp.JSON200.Node, \"Node created\")\n\t}),\n}\n","sourceCodeStart":37,"sourceCodeEnd":65,"githubUrl":"https://github.com/juanfont/headscale/blob/565fd254d06c4c7f9a8cad1714a43445c79ba420/cmd/headscale/cli/debug.go#L37-L65","documentation":"Transport error from 'headscale debug create-node': client.DebugCreateNodeWithResponse failed before an HTTP response was received. Only connectivity/serialization problems produce this; server-side rejection (bad user, duplicate name) returns a non-200 handled by apiError.","triggerScenarios":"Running the debug create-node command against an unreachable server, with TLS misconfiguration, or when the request is cancelled mid-flight.","commonSituations":"Integration/dev harnesses invoking debug create-node before the server is fully up; CLI pointed at the wrong address after environment changes.","solutions":["Ensure the server is listening and healthy","Verify CLI address/TLS configuration matches the deployment","In test harnesses, wait for server readiness before issuing debug create-node"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// harness: wait for server readiness before debug create-node\nif err := waitHealthy(ctx, addr, 30*time.Second); err != nil {\n\treturn fmt.Errorf(\"server not ready: %w\", err)\n}","typeGuard":null,"tryCatchPattern":"if _, err := client.DebugCreateNodeWithResponse(ctx, body); err != nil {\n\tif isTransportError(err) { /* wait for readiness, retry once */ }\n}","preventionTips":["Gate test harness commands on health checks","Use unique node names so retries after ambiguous failures are detectable via list"],"tags":["network","http-client","cli","debug","go"],"backgroundTag":null,"analyzedSha":"565fd254d06c4c7f9a8cad1714a43445c79ba420","analyzedAt":"2026-08-15T13:12:30.133Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}