{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/6770","repository_url":"https://api.github.com/repos/kubernetes/kubernetes","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/6770/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/6770/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/6770/events","html_url":"https://github.com/kubernetes/kubernetes/issues/6770","id":68153474,"number":6770,"title":"Avoid thundering herd of relist","user":{"login":"bprashanth","id":10927820,"avatar_url":"https://avatars.githubusercontent.com/u/10927820?v=3","gravatar_id":"","url":"https://api.github.com/users/bprashanth","html_url":"https://github.com/bprashanth","followers_url":"https://api.github.com/users/bprashanth/followers","following_url":"https://api.github.com/users/bprashanth/following{/other_user}","gists_url":"https://api.github.com/users/bprashanth/gists{/gist_id}","starred_url":"https://api.github.com/users/bprashanth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bprashanth/subscriptions","organizations_url":"https://api.github.com/users/bprashanth/orgs","repos_url":"https://api.github.com/users/bprashanth/repos","events_url":"https://api.github.com/users/bprashanth/events{/privacy}","received_events_url":"https://api.github.com/users/bprashanth/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/performance","name":"area/performance","color":"d4c5f9"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/priority/P1","name":"priority/P1","color":"eb6420"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/CSI","name":"team/CSI","color":"d2b48c"}],"state":"open","locked":false,"assignee":{"login":"gmarek","id":1703842,"avatar_url":"https://avatars.githubusercontent.com/u/1703842?v=3","gravatar_id":"","url":"https://api.github.com/users/gmarek","html_url":"https://github.com/gmarek","followers_url":"https://api.github.com/users/gmarek/followers","following_url":"https://api.github.com/users/gmarek/following{/other_user}","gists_url":"https://api.github.com/users/gmarek/gists{/gist_id}","starred_url":"https://api.github.com/users/gmarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gmarek/subscriptions","organizations_url":"https://api.github.com/users/gmarek/orgs","repos_url":"https://api.github.com/users/gmarek/repos","events_url":"https://api.github.com/users/gmarek/events{/privacy}","received_events_url":"https://api.github.com/users/gmarek/received_events","type":"User","site_admin":false},"milestone":null,"comments":15,"created_at":"2015-04-13T17:38:34Z","updated_at":"2016-02-17T07:07:52Z","closed_at":null,"body":"We currently relist for at least 2 reasons:\r\n1. Correctness, aka recovering from random issues we can't explain\r\n2. Etcd's watch window\r\n\r\nThis could lead to a thundering herd  because all our major watch clients open up connections at around the same time. A quick and dirty way to avoid this is to pick a random timeout server side (or  set the sever timeout to 10m and allow every reflector started without a relist period to pick a random number between 5-10).\r\n\r\nArguments for server side:\r\n* It is easier to generate pseudo randomness from a single server process than n clients\r\n\r\nArguments for client side:\r\n* We already have a relist timeout idiom on client, this needs to integration with the server setting\r\n* It feels like the clients should control when they relist, and the server should control when the connection is dropped, but I'm willing to compromise on the SoC for the sake of simplicity.\r\n\r\n@lavalamp "},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/185064272","html_url":"https://github.com/kubernetes/kubernetes/issues/6770#issuecomment-185064272","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/6770","id":185064272,"user":{"login":"wojtek-t","id":10743879,"avatar_url":"https://avatars.githubusercontent.com/u/10743879?v=3","gravatar_id":"","url":"https://api.github.com/users/wojtek-t","html_url":"https://github.com/wojtek-t","followers_url":"https://api.github.com/users/wojtek-t/followers","following_url":"https://api.github.com/users/wojtek-t/following{/other_user}","gists_url":"https://api.github.com/users/wojtek-t/gists{/gist_id}","starred_url":"https://api.github.com/users/wojtek-t/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wojtek-t/subscriptions","organizations_url":"https://api.github.com/users/wojtek-t/orgs","repos_url":"https://api.github.com/users/wojtek-t/repos","events_url":"https://api.github.com/users/wojtek-t/events{/privacy}","received_events_url":"https://api.github.com/users/wojtek-t/received_events","type":"User","site_admin":false},"created_at":"2016-02-17T07:07:51Z","updated_at":"2016-02-17T07:07:51Z","body":"I agree with @lavalamp - we need to check it and probably add some integration test for it.\r\nHowever, I'm decreasing the priority to P2 since ti doesn't seem to be a problem now."}}