{"action":"created","issue":{"url":"https://api.github.com/repos/linkerd/linkerd2/issues/1465","repository_url":"https://api.github.com/repos/linkerd/linkerd2","labels_url":"https://api.github.com/repos/linkerd/linkerd2/issues/1465/labels{/name}","comments_url":"https://api.github.com/repos/linkerd/linkerd2/issues/1465/comments","events_url":"https://api.github.com/repos/linkerd/linkerd2/issues/1465/events","html_url":"https://github.com/linkerd/linkerd2/issues/1465","id":350900646,"node_id":"MDU6SXNzdWUzNTA5MDA2NDY=","number":1465,"title":"Fail immediately if the proxy has never communicated with the control plane","user":{"login":"jakerobb","id":8182938,"node_id":"MDQ6VXNlcjgxODI5Mzg=","avatar_url":"https://avatars1.githubusercontent.com/u/8182938?v=4","gravatar_id":"","url":"https://api.github.com/users/jakerobb","html_url":"https://github.com/jakerobb","followers_url":"https://api.github.com/users/jakerobb/followers","following_url":"https://api.github.com/users/jakerobb/following{/other_user}","gists_url":"https://api.github.com/users/jakerobb/gists{/gist_id}","starred_url":"https://api.github.com/users/jakerobb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jakerobb/subscriptions","organizations_url":"https://api.github.com/users/jakerobb/orgs","repos_url":"https://api.github.com/users/jakerobb/repos","events_url":"https://api.github.com/users/jakerobb/events{/privacy}","received_events_url":"https://api.github.com/users/jakerobb/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-08-15T17:43:46Z","updated_at":"2018-08-16T01:51:05Z","closed_at":null,"author_association":"NONE","body":"In the context of this message and the resulting thread: https://linkerd.slack.com/archives/C89RTCWJF/p1534295856000100\r\n\r\nIn case the Slack link is bad for any reason:\r\n![image](https://user-images.githubusercontent.com/8182938/44163051-32a1cf00-a090-11e8-83e7-bbdbb7c1cebe.png)\r\n\r\nI _think_ that if a proxy is started when the control plane is down, then no other instances of the proxy would know it existed, and so perhaps they'd never send it any traffic -- unless the control plane has been down long enough for a proxy to die and a new one to be recreated that happens to have the same network address. That may be rare enough that this doesn't matter.\r\n\r\nHowever, I think it would be best for the proxy to fail fast if there's no chance that it could respond successfully to a request, rather than to wait for any kind of timeout. The error should cause the caller to retry on another endpoint. Failing fast maximizes the chances that a successful response can be delivered within the retry budget.\r\n\r\n**Largely uninformed implementation suggestions below:**\r\nThe proxy instance could maintain a simple flag indicating its readiness to serve requests, which would be set once the control plane has provided the proxy with routing information. If the flag is not set, the proxy would respond immediately to all requests with an error. I believe 503 is the correct choice here. (Bonus: perhaps, in the scenario of an extended loss of contact with the control plane, a proxy might also decide to unset the flag.)\r\n\r\nAlternatively, the proxy instance could opt not to begin accepting inbound traffic at all (don't even listen on the port) until it is ready to serve requests. This would result in a \"connection refused\" error at the caller, which should fail similarly fast. I think I prefer the 503 option, since it could carry with it some context that makes troubleshooting the underlying cause more straightforward."},"comment":{"url":"https://api.github.com/repos/linkerd/linkerd2/issues/comments/413396877","html_url":"https://github.com/linkerd/linkerd2/issues/1465#issuecomment-413396877","issue_url":"https://api.github.com/repos/linkerd/linkerd2/issues/1465","id":413396877,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMzM5Njg3Nw==","user":{"login":"jakerobb","id":8182938,"node_id":"MDQ6VXNlcjgxODI5Mzg=","avatar_url":"https://avatars1.githubusercontent.com/u/8182938?v=4","gravatar_id":"","url":"https://api.github.com/users/jakerobb","html_url":"https://github.com/jakerobb","followers_url":"https://api.github.com/users/jakerobb/followers","following_url":"https://api.github.com/users/jakerobb/following{/other_user}","gists_url":"https://api.github.com/users/jakerobb/gists{/gist_id}","starred_url":"https://api.github.com/users/jakerobb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jakerobb/subscriptions","organizations_url":"https://api.github.com/users/jakerobb/orgs","repos_url":"https://api.github.com/users/jakerobb/repos","events_url":"https://api.github.com/users/jakerobb/events{/privacy}","received_events_url":"https://api.github.com/users/jakerobb/received_events","type":"User","site_admin":false},"created_at":"2018-08-16T01:51:05Z","updated_at":"2018-08-16T01:51:05Z","author_association":"NONE","body":"Sorry, to clarify, I meant that existing proxy instances would not know the new proxy existed _until the control plane came back up_. I’d expect everything to revert to normal after the CP is online. "}}
{"actor":{"display_login":"jakerobb"}}