{"action":"created","issue":{"url":"https://api.github.com/repos/uber/ringpop/issues/59","labels_url":"https://api.github.com/repos/uber/ringpop/issues/59/labels{/name}","comments_url":"https://api.github.com/repos/uber/ringpop/issues/59/comments","events_url":"https://api.github.com/repos/uber/ringpop/issues/59/events","html_url":"https://github.com/uber/ringpop/pull/59","id":63025148,"number":59,"title":"Ping-req uses only ping status from unreachable member to initiate suspect period","user":{"login":"jwolski","id":16902,"avatar_url":"https://avatars.githubusercontent.com/u/16902?v=3","gravatar_id":"","url":"https://api.github.com/users/jwolski","html_url":"https://github.com/jwolski","followers_url":"https://api.github.com/users/jwolski/followers","following_url":"https://api.github.com/users/jwolski/following{/other_user}","gists_url":"https://api.github.com/users/jwolski/gists{/gist_id}","starred_url":"https://api.github.com/users/jwolski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwolski/subscriptions","organizations_url":"https://api.github.com/users/jwolski/orgs","repos_url":"https://api.github.com/users/jwolski/repos","events_url":"https://api.github.com/users/jwolski/events{/privacy}","received_events_url":"https://api.github.com/users/jwolski/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-03-19T16:03:27Z","updated_at":"2015-03-20T18:38:18Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/uber/ringpop/pulls/59","html_url":"https://github.com/uber/ringpop/pull/59","diff_url":"https://github.com/uber/ringpop/pull/59.diff","patch_url":"https://github.com/uber/ringpop/pull/59.patch"},"body":"This work is precursor to flap damping. Ping-req's needed to work better.\r\n\r\nWhen nodeA pings nodeB and ping fails, nodeA initiates ping-req to `pingReqSize` random other members: nodeC, nodeD, nodeE. It's each of their responsibilities to ping nodeB on nodeA's behalf. This is known as an indirect ping. When nodeA pings the selected ping-req members (let's say nodeC), one of two things can happen:\r\n\r\n1) nodeA cannot reach ping-req member nodeC\r\n2) nodeA reaches nodeC, nodeC cannot reach nodeB.\r\n\r\nThe first of these two should not count against nodeB. This comes into play in flap damping in the following way. Let's say, nodeB is the flappy one and nodeA damp score for nodeB is nearing the damping threshold. Pings and ping-reqs to nodeB are failing. Every once and a while nodeB responds. It's acting erratically. What makes nodeB not think that nodeA is the flappy one? Well, nodeB has to initiate ping-reqs when pings to nodeA fails. But when nodeB is acting erratically, it's likely that nodeB is at fault for nodeA \"not responding\". If any of the ping-req selected members are able to reach nodeA, then nodeB will never mark nodeA suspect nor will it ever start the suspect period and ultimately never mark the node faulty. Therefore, nodeA should not ever be flappy to nodeB.\r\n\r\n@Raynos @mrhooray @mranney \r\n "},"comment":{"url":"https://api.github.com/repos/uber/ringpop/issues/comments/84096717","html_url":"https://github.com/uber/ringpop/pull/59#issuecomment-84096717","issue_url":"https://api.github.com/repos/uber/ringpop/issues/59","id":84096717,"user":{"login":"Raynos","id":479538,"avatar_url":"https://avatars.githubusercontent.com/u/479538?v=3","gravatar_id":"","url":"https://api.github.com/users/Raynos","html_url":"https://github.com/Raynos","followers_url":"https://api.github.com/users/Raynos/followers","following_url":"https://api.github.com/users/Raynos/following{/other_user}","gists_url":"https://api.github.com/users/Raynos/gists{/gist_id}","starred_url":"https://api.github.com/users/Raynos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Raynos/subscriptions","organizations_url":"https://api.github.com/users/Raynos/orgs","repos_url":"https://api.github.com/users/Raynos/repos","events_url":"https://api.github.com/users/Raynos/events{/privacy}","received_events_url":"https://api.github.com/users/Raynos/received_events","type":"User","site_admin":false},"created_at":"2015-03-20T18:38:18Z","updated_at":"2015-03-20T18:38:18Z","body":"lgtm."}}