{"action":"created","issue":{"url":"https://api.github.com/repos/lbryio/lbry/issues/447","repository_url":"https://api.github.com/repos/lbryio/lbry","labels_url":"https://api.github.com/repos/lbryio/lbry/issues/447/labels{/name}","comments_url":"https://api.github.com/repos/lbryio/lbry/issues/447/comments","events_url":"https://api.github.com/repos/lbryio/lbry/issues/447/events","html_url":"https://github.com/lbryio/lbry/issues/447","id":203707977,"node_id":"MDU6SXNzdWUyMDM3MDc5Nzc=","number":447,"title":"ConnectionManager issues","user":{"login":"kaykurokawa","id":7075051,"node_id":"MDQ6VXNlcjcwNzUwNTE=","avatar_url":"https://avatars2.githubusercontent.com/u/7075051?v=4","gravatar_id":"","url":"https://api.github.com/users/kaykurokawa","html_url":"https://github.com/kaykurokawa","followers_url":"https://api.github.com/users/kaykurokawa/followers","following_url":"https://api.github.com/users/kaykurokawa/following{/other_user}","gists_url":"https://api.github.com/users/kaykurokawa/gists{/gist_id}","starred_url":"https://api.github.com/users/kaykurokawa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaykurokawa/subscriptions","organizations_url":"https://api.github.com/users/kaykurokawa/orgs","repos_url":"https://api.github.com/users/kaykurokawa/repos","events_url":"https://api.github.com/users/kaykurokawa/events{/privacy}","received_events_url":"https://api.github.com/users/kaykurokawa/received_events","type":"User","site_admin":false},"labels":[{"id":799785446,"node_id":"MDU6TGFiZWw3OTk3ODU0NDY=","url":"https://api.github.com/repos/lbryio/lbry/labels/area:%20network","name":"area: network","color":"fcd8d1","default":false},{"id":799743841,"node_id":"MDU6TGFiZWw3OTk3NDM4NDE=","url":"https://api.github.com/repos/lbryio/lbry/labels/level:%202","name":"level: 2","color":"91B6FF","default":false},{"id":789885709,"node_id":"MDU6TGFiZWw3ODk4ODU3MDk=","url":"https://api.github.com/repos/lbryio/lbry/labels/type:%20refactor","name":"type: refactor","color":"6638ff","default":false}],"state":"open","locked":false,"assignee":{"login":"eukreign","id":69960,"node_id":"MDQ6VXNlcjY5OTYw","avatar_url":"https://avatars1.githubusercontent.com/u/69960?v=4","gravatar_id":"","url":"https://api.github.com/users/eukreign","html_url":"https://github.com/eukreign","followers_url":"https://api.github.com/users/eukreign/followers","following_url":"https://api.github.com/users/eukreign/following{/other_user}","gists_url":"https://api.github.com/users/eukreign/gists{/gist_id}","starred_url":"https://api.github.com/users/eukreign/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eukreign/subscriptions","organizations_url":"https://api.github.com/users/eukreign/orgs","repos_url":"https://api.github.com/users/eukreign/repos","events_url":"https://api.github.com/users/eukreign/events{/privacy}","received_events_url":"https://api.github.com/users/eukreign/received_events","type":"User","site_admin":false},"assignees":[{"login":"eukreign","id":69960,"node_id":"MDQ6VXNlcjY5OTYw","avatar_url":"https://avatars1.githubusercontent.com/u/69960?v=4","gravatar_id":"","url":"https://api.github.com/users/eukreign","html_url":"https://github.com/eukreign","followers_url":"https://api.github.com/users/eukreign/followers","following_url":"https://api.github.com/users/eukreign/following{/other_user}","gists_url":"https://api.github.com/users/eukreign/gists{/gist_id}","starred_url":"https://api.github.com/users/eukreign/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eukreign/subscriptions","organizations_url":"https://api.github.com/users/eukreign/orgs","repos_url":"https://api.github.com/users/eukreign/repos","events_url":"https://api.github.com/users/eukreign/events{/privacy}","received_events_url":"https://api.github.com/users/eukreign/received_events","type":"User","site_admin":false}],"milestone":null,"comments":5,"created_at":"2017-01-27T18:37:56Z","updated_at":"2018-07-20T04:01:17Z","closed_at":null,"author_association":"MEMBER","body":"This is a list of ConnectionManager issues. ConnectionManager is a class that establishes connection between peers in order to download files from them. This is a work in progress list.\r\n\r\n1.  ~~We need unit test for Connecion Manager. There needs to tests written to test for cases where the ConnectionManager connects to some non responsive or misbehaving peers. We know from observation that it is somehow not handling bad peers properly, but we don't know why.~~\r\n\r\n2. Connection Manager is needlessly overgeneralized and complicated. It has logic to handle multiple \"request creators\" , but this is not really needed. The only request creator that it needs is a request creator for downloading blobs. \r\n\r\n3. ~~The main loop of ConnectionManager gets called every second. In each loop, it will check if it has less than 5 connections open, and if so, it will try to find a list of peers to connect to through the DHT and make a single connection.\r\nI think that Instead of making a single connection, it should attempt to fill the 5 connections, and the main loop should be called less often because it is unlikely to find any new peers through the DTH after one second.~~ \r\n\r\n4. ConnectionManager should return some metrics about the quality of its connections, so that we can determine if a download is not working due to the lack of connections. Things like how long it has been running for, and how many responsive peers it has found over that time.\r\n\r\n5. ~~Connections do not timeout if peer is slow to respond~~\r\n\r\n6. ClientProtocol (class that manages a single connection) should have no dependency on ConnectionManager"},"comment":{"url":"https://api.github.com/repos/lbryio/lbry/issues/comments/406482717","html_url":"https://github.com/lbryio/lbry/issues/447#issuecomment-406482717","issue_url":"https://api.github.com/repos/lbryio/lbry/issues/447","id":406482717,"node_id":"MDEyOklzc3VlQ29tbWVudDQwNjQ4MjcxNw==","user":{"login":"shyba","id":1302078,"node_id":"MDQ6VXNlcjEzMDIwNzg=","avatar_url":"https://avatars0.githubusercontent.com/u/1302078?v=4","gravatar_id":"","url":"https://api.github.com/users/shyba","html_url":"https://github.com/shyba","followers_url":"https://api.github.com/users/shyba/followers","following_url":"https://api.github.com/users/shyba/following{/other_user}","gists_url":"https://api.github.com/users/shyba/gists{/gist_id}","starred_url":"https://api.github.com/users/shyba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shyba/subscriptions","organizations_url":"https://api.github.com/users/shyba/orgs","repos_url":"https://api.github.com/users/shyba/repos","events_url":"https://api.github.com/users/shyba/events{/privacy}","received_events_url":"https://api.github.com/users/shyba/received_events","type":"User","site_admin":false},"created_at":"2018-07-20T04:01:17Z","updated_at":"2018-07-20T04:01:17Z","author_association":"MEMBER","body":"no, I'm just porting for now. Feel free to create them and if I start a refactor I will self-assign the one that fits."}}
{"actor":{"display_login":"shyba"}}