{"action":"opened","number":318,"pull_request":{"url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/318","id":82957235,"html_url":"https://github.com/tahoe-lafs/tahoe-lafs/pull/318","diff_url":"https://github.com/tahoe-lafs/tahoe-lafs/pull/318.diff","patch_url":"https://github.com/tahoe-lafs/tahoe-lafs/pull/318.patch","issue_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/issues/318","number":318,"state":"open","locked":false,"title":"make IServer.get_serverid() use pubkey, not tubid","user":{"login":"warner","id":27146,"avatar_url":"https://avatars.githubusercontent.com/u/27146?v=3","gravatar_id":"","url":"https://api.github.com/users/warner","html_url":"https://github.com/warner","followers_url":"https://api.github.com/users/warner/followers","following_url":"https://api.github.com/users/warner/following{/other_user}","gists_url":"https://api.github.com/users/warner/gists{/gist_id}","starred_url":"https://api.github.com/users/warner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/warner/subscriptions","organizations_url":"https://api.github.com/users/warner/orgs","repos_url":"https://api.github.com/users/warner/repos","events_url":"https://api.github.com/users/warner/events{/privacy}","received_events_url":"https://api.github.com/users/warner/received_events","type":"User","site_admin":false},"body":"This is a change I've wanted to make for many years, because when we get\r\nto HTTP-based servers, we won't have tubids for them. What held me back\r\nwas that there's code all over the place that uses the serverid for\r\nvarious purposes, so I wasn't sure it was safe. I did a big push a few\r\nyears ago to use IServer instances instead of serverids in most\r\nplaces (in #1363), and to split out the values that actually depend upon\r\ntubid into separate accessors (like get_lease_seed and\r\nget_foolscap_write_enabler_seed), which I think took care of all the\r\nimportant uses.\r\n\r\nThere are a number of places that use get_serverid() as dictionary key\r\nto track shares (Checker results, mutable servermap). I believe these\r\nare happy to use pubkeys instead of tubids: the only thing they do with\r\nget_serverid() is to compare it to other values obtained from\r\nget_serverid(). A few places in the WUI used serverid to compute display\r\nvalues: these were fixed.\r\n\r\nThe main trouble was the Helper: it returns a HelperUploadResults (a\r\nCopyable) with a share->server mapping that's keyed by whatever the\r\nHelper's get_serverid() returns. If the uploader and the helper are on\r\ndifferent sides of this change, the Helper could return values that the\r\nuploader won't recognize. This is cosmetic: that mapping is only used to\r\ndisplay the upload results on the \"Recent and Active Operations\" page.\r\nI've added code to StorageFarmBroker.get_stub_server() to fall back to\r\ntubids when looking up a server, so this should still work correctly\r\nwhen the uploader is new and the Helper is old. If the Helper is new and\r\nthe uploader is old, the upload results will show unusual server ids.\r\n\r\nrefs ticket:1363","created_at":"2016-08-26T21:31:33Z","updated_at":"2016-08-26T21:31:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/318/commits","review_comments_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/318/comments","review_comment_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/issues/318/comments","statuses_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/statuses/54f974d44c3d740bf1a41624d5a001952561c3d2","head":{"label":"warner:nodeid-is-key","ref":"nodeid-is-key","sha":"54f974d44c3d740bf1a41624d5a001952561c3d2","user":{"login":"warner","id":27146,"avatar_url":"https://avatars.githubusercontent.com/u/27146?v=3","gravatar_id":"","url":"https://api.github.com/users/warner","html_url":"https://github.com/warner","followers_url":"https://api.github.com/users/warner/followers","following_url":"https://api.github.com/users/warner/following{/other_user}","gists_url":"https://api.github.com/users/warner/gists{/gist_id}","starred_url":"https://api.github.com/users/warner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/warner/subscriptions","organizations_url":"https://api.github.com/users/warner/orgs","repos_url":"https://api.github.com/users/warner/repos","events_url":"https://api.github.com/users/warner/events{/privacy}","received_events_url":"https://api.github.com/users/warner/received_events","type":"User","site_admin":false},"repo":{"id":988599,"name":"tahoe-lafs","full_name":"warner/tahoe-lafs","owner":{"login":"warner","id":27146,"avatar_url":"https://avatars.githubusercontent.com/u/27146?v=3","gravatar_id":"","url":"https://api.github.com/users/warner","html_url":"https://github.com/warner","followers_url":"https://api.github.com/users/warner/followers","following_url":"https://api.github.com/users/warner/following{/other_user}","gists_url":"https://api.github.com/users/warner/gists{/gist_id}","starred_url":"https://api.github.com/users/warner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/warner/subscriptions","organizations_url":"https://api.github.com/users/warner/orgs","repos_url":"https://api.github.com/users/warner/repos","events_url":"https://api.github.com/users/warner/events{/privacy}","received_events_url":"https://api.github.com/users/warner/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/warner/tahoe-lafs","description":"The Tahoe-LAFS decentralized secure filesystem.   https://github.com/tahoe-lafs/tahoe-lafs is the master.","fork":true,"url":"https://api.github.com/repos/warner/tahoe-lafs","forks_url":"https://api.github.com/repos/warner/tahoe-lafs/forks","keys_url":"https://api.github.com/repos/warner/tahoe-lafs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/warner/tahoe-lafs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/warner/tahoe-lafs/teams","hooks_url":"https://api.github.com/repos/warner/tahoe-lafs/hooks","issue_events_url":"https://api.github.com/repos/warner/tahoe-lafs/issues/events{/number}","events_url":"https://api.github.com/repos/warner/tahoe-lafs/events","assignees_url":"https://api.github.com/repos/warner/tahoe-lafs/assignees{/user}","branches_url":"https://api.github.com/repos/warner/tahoe-lafs/branches{/branch}","tags_url":"https://api.github.com/repos/warner/tahoe-lafs/tags","blobs_url":"https://api.github.com/repos/warner/tahoe-lafs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/warner/tahoe-lafs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/warner/tahoe-lafs/git/refs{/sha}","trees_url":"https://api.github.com/repos/warner/tahoe-lafs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/warner/tahoe-lafs/statuses/{sha}","languages_url":"https://api.github.com/repos/warner/tahoe-lafs/languages","stargazers_url":"https://api.github.com/repos/warner/tahoe-lafs/stargazers","contributors_url":"https://api.github.com/repos/warner/tahoe-lafs/contributors","subscribers_url":"https://api.github.com/repos/warner/tahoe-lafs/subscribers","subscription_url":"https://api.github.com/repos/warner/tahoe-lafs/subscription","commits_url":"https://api.github.com/repos/warner/tahoe-lafs/commits{/sha}","git_commits_url":"https://api.github.com/repos/warner/tahoe-lafs/git/commits{/sha}","comments_url":"https://api.github.com/repos/warner/tahoe-lafs/comments{/number}","issue_comment_url":"https://api.github.com/repos/warner/tahoe-lafs/issues/comments{/number}","contents_url":"https://api.github.com/repos/warner/tahoe-lafs/contents/{+path}","compare_url":"https://api.github.com/repos/warner/tahoe-lafs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/warner/tahoe-lafs/merges","archive_url":"https://api.github.com/repos/warner/tahoe-lafs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/warner/tahoe-lafs/downloads","issues_url":"https://api.github.com/repos/warner/tahoe-lafs/issues{/number}","pulls_url":"https://api.github.com/repos/warner/tahoe-lafs/pulls{/number}","milestones_url":"https://api.github.com/repos/warner/tahoe-lafs/milestones{/number}","notifications_url":"https://api.github.com/repos/warner/tahoe-lafs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/warner/tahoe-lafs/labels{/name}","releases_url":"https://api.github.com/repos/warner/tahoe-lafs/releases{/id}","deployments_url":"https://api.github.com/repos/warner/tahoe-lafs/deployments","created_at":"2010-10-14T23:57:29Z","updated_at":"2016-08-22T16:16:52Z","pushed_at":"2016-08-26T21:31:15Z","git_url":"git://github.com/warner/tahoe-lafs.git","ssh_url":"git@github.com:warner/tahoe-lafs.git","clone_url":"https://github.com/warner/tahoe-lafs.git","svn_url":"https://github.com/warner/tahoe-lafs","homepage":"http://tahoe-lafs.org/","size":65287,"stargazers_count":60,"watchers_count":60,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":60,"default_branch":"master"}},"base":{"label":"tahoe-lafs:master","ref":"master","sha":"66fcd6e12ad7d5f5b1605e3a99a2d4fab62ea264","user":{"login":"tahoe-lafs","id":1156454,"avatar_url":"https://avatars.githubusercontent.com/u/1156454?v=3","gravatar_id":"","url":"https://api.github.com/users/tahoe-lafs","html_url":"https://github.com/tahoe-lafs","followers_url":"https://api.github.com/users/tahoe-lafs/followers","following_url":"https://api.github.com/users/tahoe-lafs/following{/other_user}","gists_url":"https://api.github.com/users/tahoe-lafs/gists{/gist_id}","starred_url":"https://api.github.com/users/tahoe-lafs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tahoe-lafs/subscriptions","organizations_url":"https://api.github.com/users/tahoe-lafs/orgs","repos_url":"https://api.github.com/users/tahoe-lafs/repos","events_url":"https://api.github.com/users/tahoe-lafs/events{/privacy}","received_events_url":"https://api.github.com/users/tahoe-lafs/received_events","type":"Organization","site_admin":false},"repo":{"id":3007569,"name":"tahoe-lafs","full_name":"tahoe-lafs/tahoe-lafs","owner":{"login":"tahoe-lafs","id":1156454,"avatar_url":"https://avatars.githubusercontent.com/u/1156454?v=3","gravatar_id":"","url":"https://api.github.com/users/tahoe-lafs","html_url":"https://github.com/tahoe-lafs","followers_url":"https://api.github.com/users/tahoe-lafs/followers","following_url":"https://api.github.com/users/tahoe-lafs/following{/other_user}","gists_url":"https://api.github.com/users/tahoe-lafs/gists{/gist_id}","starred_url":"https://api.github.com/users/tahoe-lafs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tahoe-lafs/subscriptions","organizations_url":"https://api.github.com/users/tahoe-lafs/orgs","repos_url":"https://api.github.com/users/tahoe-lafs/repos","events_url":"https://api.github.com/users/tahoe-lafs/events{/privacy}","received_events_url":"https://api.github.com/users/tahoe-lafs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/tahoe-lafs/tahoe-lafs","description":"The Tahoe-LAFS decentralized secure filesystem.","fork":false,"url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs","forks_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/forks","keys_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/teams","hooks_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/hooks","issue_events_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/issues/events{/number}","events_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/events","assignees_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/assignees{/user}","branches_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/branches{/branch}","tags_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/tags","blobs_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/git/refs{/sha}","trees_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/statuses/{sha}","languages_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/languages","stargazers_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/stargazers","contributors_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/contributors","subscribers_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/subscribers","subscription_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/subscription","commits_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/commits{/sha}","git_commits_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/git/commits{/sha}","comments_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/comments{/number}","issue_comment_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/issues/comments{/number}","contents_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/contents/{+path}","compare_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/merges","archive_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/downloads","issues_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/issues{/number}","pulls_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls{/number}","milestones_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/milestones{/number}","notifications_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/labels{/name}","releases_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/releases{/id}","deployments_url":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/deployments","created_at":"2011-12-18T19:33:55Z","updated_at":"2016-08-25T07:09:07Z","pushed_at":"2016-08-26T21:31:33Z","git_url":"git://github.com/tahoe-lafs/tahoe-lafs.git","ssh_url":"git@github.com:tahoe-lafs/tahoe-lafs.git","clone_url":"https://github.com/tahoe-lafs/tahoe-lafs.git","svn_url":"https://github.com/tahoe-lafs/tahoe-lafs","homepage":"https://tahoe-lafs.org/","size":73517,"stargazers_count":513,"watchers_count":513,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":148,"mirror_url":null,"open_issues_count":23,"forks":148,"open_issues":23,"watchers":513,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/318"},"html":{"href":"https://github.com/tahoe-lafs/tahoe-lafs/pull/318"},"issue":{"href":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/issues/318"},"comments":{"href":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/issues/318/comments"},"review_comments":{"href":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/318/comments"},"review_comment":{"href":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/pulls/318/commits"},"statuses":{"href":"https://api.github.com/repos/tahoe-lafs/tahoe-lafs/statuses/54f974d44c3d740bf1a41624d5a001952561c3d2"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":25,"deletions":16,"changed_files":6}}
{"actor":{"display_login":"warner"}}