{"action":"created","issue":{"url":"https://api.github.com/repos/syncthing/syncthing/issues/2252","repository_url":"https://api.github.com/repos/syncthing/syncthing","labels_url":"https://api.github.com/repos/syncthing/syncthing/issues/2252/labels{/name}","comments_url":"https://api.github.com/repos/syncthing/syncthing/issues/2252/comments","events_url":"https://api.github.com/repos/syncthing/syncthing/issues/2252/events","html_url":"https://github.com/syncthing/syncthing/pull/2252","id":105434936,"number":2252,"title":"Temporary indexes","user":{"login":"AudriusButkevicius","id":1144861,"avatar_url":"https://avatars.githubusercontent.com/u/1144861?v=3","gravatar_id":"","url":"https://api.github.com/users/AudriusButkevicius","html_url":"https://github.com/AudriusButkevicius","followers_url":"https://api.github.com/users/AudriusButkevicius/followers","following_url":"https://api.github.com/users/AudriusButkevicius/following{/other_user}","gists_url":"https://api.github.com/users/AudriusButkevicius/gists{/gist_id}","starred_url":"https://api.github.com/users/AudriusButkevicius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AudriusButkevicius/subscriptions","organizations_url":"https://api.github.com/users/AudriusButkevicius/orgs","repos_url":"https://api.github.com/users/AudriusButkevicius/repos","events_url":"https://api.github.com/users/AudriusButkevicius/events{/privacy}","received_events_url":"https://api.github.com/users/AudriusButkevicius/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/syncthing/syncthing/labels/in-review","name":"in-review","color":"207de5"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/syncthing/syncthing/milestones/2","html_url":"https://github.com/syncthing/syncthing/milestones/v1.0","labels_url":"https://api.github.com/repos/syncthing/syncthing/milestones/2/labels","id":528782,"number":2,"title":"v1.0","description":"Issues that *must* be resolved before releasing v1.0.","creator":{"login":"calmh","id":125426,"avatar_url":"https://avatars.githubusercontent.com/u/125426?v=3","gravatar_id":"","url":"https://api.github.com/users/calmh","html_url":"https://github.com/calmh","followers_url":"https://api.github.com/users/calmh/followers","following_url":"https://api.github.com/users/calmh/following{/other_user}","gists_url":"https://api.github.com/users/calmh/gists{/gist_id}","starred_url":"https://api.github.com/users/calmh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calmh/subscriptions","organizations_url":"https://api.github.com/users/calmh/orgs","repos_url":"https://api.github.com/users/calmh/repos","events_url":"https://api.github.com/users/calmh/events{/privacy}","received_events_url":"https://api.github.com/users/calmh/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":87,"state":"open","created_at":"2014-01-07T11:09:27Z","updated_at":"2016-03-11T09:48:49Z","due_on":null,"closed_at":null},"comments":43,"created_at":"2015-09-08T17:47:24Z","updated_at":"2016-04-11T10:08:18Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/syncthing/syncthing/pulls/2252","html_url":"https://github.com/syncthing/syncthing/pull/2252","diff_url":"https://github.com/syncthing/syncthing/pull/2252.diff","patch_url":"https://github.com/syncthing/syncthing/pull/2252.patch"},"body":"Last commit is not finished, but throwing this out here to discuss the general approach before I spend more effort.\r\nAlso needs tests fixed and so on.\r\n\r\n## TODO:\r\n- [X] Send block index as an integer, rather than the whole block.\r\n- [X] Add a flag to indicate this feature is off, don't send stuff if it's off.\r\n- [X] Fallback to Request() in-case temporary request fails (no longer applicable, given we don't do validation, so it's just a if branch)\r\n- [X] Address lint/vet/naming suggestions\r\n- [X] Fix tests\r\n- [X] Add tests\r\n\r\n## Maybe:\r\n- Limit number of entries we allow to receive, though people should just disable it.\r\n\r\n*purpose*\r\n\r\n> Files that are not fully downloaded are not shared, means that the initial seeding is always done from a single device which originates the change.\r\n> Others start participating only when they have the full file.\r\n>\r\n> This changes that by advertising partially downloaded files (temporary)."},"comment":{"url":"https://api.github.com/repos/syncthing/syncthing/issues/comments/208266548","html_url":"https://github.com/syncthing/syncthing/pull/2252#issuecomment-208266548","issue_url":"https://api.github.com/repos/syncthing/syncthing/issues/2252","id":208266548,"user":{"login":"alex2108","id":6099511,"avatar_url":"https://avatars.githubusercontent.com/u/6099511?v=3","gravatar_id":"","url":"https://api.github.com/users/alex2108","html_url":"https://github.com/alex2108","followers_url":"https://api.github.com/users/alex2108/followers","following_url":"https://api.github.com/users/alex2108/following{/other_user}","gists_url":"https://api.github.com/users/alex2108/gists{/gist_id}","starred_url":"https://api.github.com/users/alex2108/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alex2108/subscriptions","organizations_url":"https://api.github.com/users/alex2108/orgs","repos_url":"https://api.github.com/users/alex2108/repos","events_url":"https://api.github.com/users/alex2108/events{/privacy}","received_events_url":"https://api.github.com/users/alex2108/received_events","type":"User","site_admin":false},"created_at":"2016-04-11T10:08:18Z","updated_at":"2016-04-11T10:08:18Z","body":"Could be pulling blocks with most peers and least peers at the same time be a solution? So If you pull 10 blocks at the same time (don't remember the default here) pull 5 blocks with the least peers and 5 blocks with most peers at the same time.\r\n\r\nAt least in theory this does not sound too hard to implement and should give a lot better performance.\r\n\r\nAnother thing that is a related problem: we have 3 device A,B and C all connected to each other.\r\n\r\n-A adds a lot of files.\r\n-B randomly starts pulling file1, C file2\r\n-> since they are different files B and C do not exchange anything.\r\nThis means the same problem will happen when pulling the \"wrong\" files in random order so file pull order needs a similar optimization (in the example C also pulling file1 at the same time and B pulling file2)\r\n\r\n"}}