{"action":"created","issue":{"url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/issues/116","repository_url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto","labels_url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/issues/116/labels{/name}","comments_url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/issues/116/comments","events_url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/issues/116/events","html_url":"https://github.com/sociomantic-tsunami/dhtproto/pull/116","id":298555334,"number":116,"title":"New legacy channel mirror implementation","user":{"login":"gavin-norman-sociomantic","id":2863963,"avatar_url":"https://avatars1.githubusercontent.com/u/2863963?v=4","gravatar_id":"","url":"https://api.github.com/users/gavin-norman-sociomantic","html_url":"https://github.com/gavin-norman-sociomantic","followers_url":"https://api.github.com/users/gavin-norman-sociomantic/followers","following_url":"https://api.github.com/users/gavin-norman-sociomantic/following{/other_user}","gists_url":"https://api.github.com/users/gavin-norman-sociomantic/gists{/gist_id}","starred_url":"https://api.github.com/users/gavin-norman-sociomantic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gavin-norman-sociomantic/subscriptions","organizations_url":"https://api.github.com/users/gavin-norman-sociomantic/orgs","repos_url":"https://api.github.com/users/gavin-norman-sociomantic/repos","events_url":"https://api.github.com/users/gavin-norman-sociomantic/events{/privacy}","received_events_url":"https://api.github.com/users/gavin-norman-sociomantic/received_events","type":"User","site_admin":false},"labels":[{"id":658831473,"url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/labels/status-blocked","name":"status-blocked","color":"333333","default":false},{"id":658831380,"url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/labels/type-feature","name":"type-feature","color":"ccffff","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/milestones/12","html_url":"https://github.com/sociomantic-tsunami/dhtproto/milestone/12","labels_url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/milestones/12/labels","id":3054286,"number":12,"title":"v13.3.0","description":"","creator":{"login":"gavin-norman-sociomantic","id":2863963,"avatar_url":"https://avatars1.githubusercontent.com/u/2863963?v=4","gravatar_id":"","url":"https://api.github.com/users/gavin-norman-sociomantic","html_url":"https://github.com/gavin-norman-sociomantic","followers_url":"https://api.github.com/users/gavin-norman-sociomantic/followers","following_url":"https://api.github.com/users/gavin-norman-sociomantic/following{/other_user}","gists_url":"https://api.github.com/users/gavin-norman-sociomantic/gists{/gist_id}","starred_url":"https://api.github.com/users/gavin-norman-sociomantic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gavin-norman-sociomantic/subscriptions","organizations_url":"https://api.github.com/users/gavin-norman-sociomantic/orgs","repos_url":"https://api.github.com/users/gavin-norman-sociomantic/repos","events_url":"https://api.github.com/users/gavin-norman-sociomantic/events{/privacy}","received_events_url":"https://api.github.com/users/gavin-norman-sociomantic/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":1,"state":"open","created_at":"2018-01-22T15:37:42Z","updated_at":"2018-02-20T11:13:18Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2018-02-20T11:13:18Z","updated_at":"2018-02-21T18:39:46Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/pulls/116","html_url":"https://github.com/sociomantic-tsunami/dhtproto/pull/116","diff_url":"https://github.com/sociomantic-tsunami/dhtproto/pull/116.diff","patch_url":"https://github.com/sociomantic-tsunami/dhtproto/pull/116.patch"},"body":""},"comment":{"url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/issues/comments/367427034","html_url":"https://github.com/sociomantic-tsunami/dhtproto/pull/116#issuecomment-367427034","issue_url":"https://api.github.com/repos/sociomantic-tsunami/dhtproto/issues/116","id":367427034,"user":{"login":"joseph-wakeling-sociomantic","id":6409224,"avatar_url":"https://avatars3.githubusercontent.com/u/6409224?v=4","gravatar_id":"","url":"https://api.github.com/users/joseph-wakeling-sociomantic","html_url":"https://github.com/joseph-wakeling-sociomantic","followers_url":"https://api.github.com/users/joseph-wakeling-sociomantic/followers","following_url":"https://api.github.com/users/joseph-wakeling-sociomantic/following{/other_user}","gists_url":"https://api.github.com/users/joseph-wakeling-sociomantic/gists{/gist_id}","starred_url":"https://api.github.com/users/joseph-wakeling-sociomantic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joseph-wakeling-sociomantic/subscriptions","organizations_url":"https://api.github.com/users/joseph-wakeling-sociomantic/orgs","repos_url":"https://api.github.com/users/joseph-wakeling-sociomantic/repos","events_url":"https://api.github.com/users/joseph-wakeling-sociomantic/events{/privacy}","received_events_url":"https://api.github.com/users/joseph-wakeling-sociomantic/received_events","type":"User","site_admin":false},"created_at":"2018-02-21T18:39:46Z","updated_at":"2018-02-21T18:39:46Z","author_association":"NONE","body":"I've also now tried this out in a partial-handshake scenario, and I think there may be an issue with the periodic `GetAll` requests launched by the `mirror()` method.\r\n\r\nThe broad scenario here is that a client is started up with only a subset of DHT nodes available.  Then we see:\r\n\r\n* the app waits until at least one DHT node is connected, and times out waiting for all of them\r\n\r\n* an initial `Mirror.fill()` call is issued, which launches a `GetAll` request that succeeds of course only on the nodes currently connected\r\n\r\n* the app times out waiting for the fill to succeed on all nodes, and calls `mirror()`\r\n\r\n* `Listen` and periodic `GetAll` requests are scheduled successfully for the connected nodes\r\n\r\n* the missing DHT nodes are launched\r\n\r\n* no periodic `GetAll` requests seem to occur for these nodes, although it looks like the `GetAll` requests launched by `fill()` finally complete successfully.\r\n\r\nAt a guess I would assume the fact that the `fill()`-launched `GetAll` has not succeeded prevents the `mirror()`-launched periodic `GetAll` from being scheduled at all for these nodes.  Let's dig deeper tomorrow ;-)"}}
{"actor":{"display_login":"joseph-wakeling-sociomantic"}}