{"action":"created","issue":{"url":"https://api.github.com/repos/TykTechnologies/tyk/issues/522","repository_url":"https://api.github.com/repos/TykTechnologies/tyk","labels_url":"https://api.github.com/repos/TykTechnologies/tyk/issues/522/labels{/name}","comments_url":"https://api.github.com/repos/TykTechnologies/tyk/issues/522/comments","events_url":"https://api.github.com/repos/TykTechnologies/tyk/issues/522/events","html_url":"https://github.com/TykTechnologies/tyk/pull/522","id":207842184,"number":522,"title":"Redis reconnect cleanup","user":{"login":"mvdan","id":3576549,"avatar_url":"https://avatars.githubusercontent.com/u/3576549?v=3","gravatar_id":"","url":"https://api.github.com/users/mvdan","html_url":"https://github.com/mvdan","followers_url":"https://api.github.com/users/mvdan/followers","following_url":"https://api.github.com/users/mvdan/following{/other_user}","gists_url":"https://api.github.com/users/mvdan/gists{/gist_id}","starred_url":"https://api.github.com/users/mvdan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mvdan/subscriptions","organizations_url":"https://api.github.com/users/mvdan/orgs","repos_url":"https://api.github.com/users/mvdan/repos","events_url":"https://api.github.com/users/mvdan/events{/privacy}","received_events_url":"https://api.github.com/users/mvdan/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2017-02-15T15:48:21Z","updated_at":"2017-02-15T17:24:10Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/TykTechnologies/tyk/pulls/522","html_url":"https://github.com/TykTechnologies/tyk/pull/522","diff_url":"https://github.com/TykTechnologies/tyk/pull/522.diff","patch_url":"https://github.com/TykTechnologies/tyk/pull/522.patch"},"body":"In preparation for #520."},"comment":{"url":"https://api.github.com/repos/TykTechnologies/tyk/issues/comments/280077332","html_url":"https://github.com/TykTechnologies/tyk/pull/522#issuecomment-280077332","issue_url":"https://api.github.com/repos/TykTechnologies/tyk/issues/522","id":280077332,"user":{"login":"mvdan","id":3576549,"avatar_url":"https://avatars.githubusercontent.com/u/3576549?v=3","gravatar_id":"","url":"https://api.github.com/users/mvdan","html_url":"https://github.com/mvdan","followers_url":"https://api.github.com/users/mvdan/followers","following_url":"https://api.github.com/users/mvdan/following{/other_user}","gists_url":"https://api.github.com/users/mvdan/gists{/gist_id}","starred_url":"https://api.github.com/users/mvdan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mvdan/subscriptions","organizations_url":"https://api.github.com/users/mvdan/orgs","repos_url":"https://api.github.com/users/mvdan/repos","events_url":"https://api.github.com/users/mvdan/events{/privacy}","received_events_url":"https://api.github.com/users/mvdan/received_events","type":"User","site_admin":false},"created_at":"2017-02-15T17:24:10Z","updated_at":"2017-02-15T17:24:10Z","body":"> All the storage handlers share the same Redis pool and use singletons.\r\n\r\nI haven't looked at this deeply, but you pointed me towards the reconnect logic - and that only touches the singletons.\r\n\r\n> There are no places in code where singletons can be set to nil, which means all the reconnect logic does nothing and can be safely removed. To be precise, reconnecting still handled but inside redigocluster and redigo.\r\n\r\nYes.\r\n\r\n> If we talking about #520 bug itself, I do not see the way how our code can cause them, so it is probably inside redigocluster. Make sense to check if we need to update our fork.\r\n\r\nCould be somewhere else in our redis-handling code, but likely in redigocluster, yes. Especially since we're behind on upstream changes and @lonelycode made changes that noone else is using besides tyk. So it's likely that it has obscure bugs like this one.\r\n\r\n> Worth noticing that I tried simulating Redis failure, like stopping it after it was initialized, single and multiple nodes: GetKey always returned proper error, without looping.\r\n\r\nI also failed to reproduce the looping. It could be that the looping is due to a race condition, though. Have you tried running your tests with `-race`? Although it's likely that it will panic due to a data race before it's able to reproduce anything."}}
{"actor":{"display_login":"mvdan"}}