{"record":{"id":"e448a7f16981c410","repo":"tailscale/tailscale","slug":"error-getting-local-client-w","errorCode":null,"errorMessage":"error getting local client: %w","messagePattern":"error getting local client: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/k8s-proxy/k8s-proxy.go","lineNumber":225,"sourceCode":"\n\tts := &tsnet.Server{\n\t\tLogf:     logger.Named(\"tsnet\").Debugf,\n\t\tUserLogf: logger.Named(\"tsnet\").Infof,\n\t\tStore:    st,\n\t\tAuthKey:  authKey,\n\t}\n\n\tif cfg.Parsed.ServerURL != nil {\n\t\tts.ControlURL = *cfg.Parsed.ServerURL\n\t}\n\n\tif cfg.Parsed.Hostname != nil {\n\t\tts.Hostname = *cfg.Parsed.Hostname\n\t}\n\n\tlc, err := ts.LocalClient()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error getting local client: %w\", err)\n\t}\n\n\t// Make sure we crash loop if Up doesn't complete in reasonable time.\n\tupCtx, upCancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer upCancel()\n\n\t// ts.Up() deliberately ignores NeedsLogin because it fires transiently\n\t// during normal auth-key login. We can watch for the login-state health\n\t// warning here though, which only fires on terminal auth failure, and\n\t// cancel early.\n\tgo func() {\n\t\tw, err := lc.WatchIPNBus(upCtx, ipn.NotifyInitialHealthState)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer w.Close()\n\t\tfor {\n\t\t\tn, err := w.Next()","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/tailscale/tailscale/blob/cfe32b8be6a33f8e24fbc369cbfbf7c729d9e042/cmd/k8s-proxy/k8s-proxy.go#L207-L243","documentation":"Error \"error getting local client: %w\" thrown in tailscale/tailscale.","triggerScenarios":"Thrown at cmd/k8s-proxy/k8s-proxy.go:225 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cfe32b8be6a33f8e24fbc369cbfbf7c729d9e042","analyzedAt":"2026-08-15T19:58:31.583Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}