{"action":"opened","number":4,"pull_request":{"url":"https://api.github.com/repos/smartfile/paramiko/pulls/4","id":90722122,"html_url":"https://github.com/smartfile/paramiko/pull/4","diff_url":"https://github.com/smartfile/paramiko/pull/4.diff","patch_url":"https://github.com/smartfile/paramiko/pull/4.patch","issue_url":"https://api.github.com/repos/smartfile/paramiko/issues/4","number":4,"state":"open","locked":false,"title":"Prevent memory leak by removing cyclical reference. See #4392.","user":{"login":"almathew","id":2728248,"avatar_url":"https://avatars.githubusercontent.com/u/2728248?v=3","gravatar_id":"","url":"https://api.github.com/users/almathew","html_url":"https://github.com/almathew","followers_url":"https://api.github.com/users/almathew/followers","following_url":"https://api.github.com/users/almathew/following{/other_user}","gists_url":"https://api.github.com/users/almathew/gists{/gist_id}","starred_url":"https://api.github.com/users/almathew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/almathew/subscriptions","organizations_url":"https://api.github.com/users/almathew/orgs","repos_url":"https://api.github.com/users/almathew/repos","events_url":"https://api.github.com/users/almathew/events{/privacy}","received_events_url":"https://api.github.com/users/almathew/received_events","type":"User","site_admin":false},"body":"In paramiko, channel references transport and transport references channel. This means that the objects never get freed after they're used. A new one of these gets created every time someone connects to our SFTP servers, resulting in a LOT of these objects hanging around taking up space.\r\n\r\n\r\n## Description\r\nSwitches the reference to a weak reference so the objects can actually be collected. \r\n\r\n\r\n## Motivation and Context\r\n<!--- Link to ticket for quick reference -->\r\nAssembla Ticket Link: #4392\r\n\r\n<!--- Why is this change required? What problem does it solve? -->\r\nThis is required to solve a memory leak in our SFTP servers.\r\n\r\n\r\n## How has this been tested?\r\n<!--- Please describe in detail how you tested your changes. -->\r\n<!--- Include details of your testing environment, and the tests you ran to -->\r\n<!--- see how your change affects other areas of the code, etc. -->\r\n\r\n## Screenshots (if appropriate):\r\n\r\n## Types of changes\r\n<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->\r\n- [x] Bug fix (non-breaking change which fixes an issue)\r\n- [ ] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n\r\n## Checklist:\r\n<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->\r\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n- [ ] The code follows the [code style](https://github.com/smartfile/smartfile/wiki/Development-(Coding-Standards)) of this project.\r\n- [ ] Documentation has been updated accordingly.\r\n- [ ] Tests are sufficient and verify acceptance criteria.\r\n","created_at":"2016-10-25T01:11:31Z","updated_at":"2016-10-25T01:11:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2e161fc99b3f817eceb360885954aa84b67f98b3","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/smartfile/paramiko/pulls/4/commits","review_comments_url":"https://api.github.com/repos/smartfile/paramiko/pulls/4/comments","review_comment_url":"https://api.github.com/repos/smartfile/paramiko/pulls/comments{/number}","comments_url":"https://api.github.com/repos/smartfile/paramiko/issues/4/comments","statuses_url":"https://api.github.com/repos/smartfile/paramiko/statuses/af387de7e4044784093083414af0bb22a633e130","head":{"label":"smartfile:4392-sftp-memory-usage","ref":"4392-sftp-memory-usage","sha":"af387de7e4044784093083414af0bb22a633e130","user":{"login":"smartfile","id":2232208,"avatar_url":"https://avatars.githubusercontent.com/u/2232208?v=3","gravatar_id":"","url":"https://api.github.com/users/smartfile","html_url":"https://github.com/smartfile","followers_url":"https://api.github.com/users/smartfile/followers","following_url":"https://api.github.com/users/smartfile/following{/other_user}","gists_url":"https://api.github.com/users/smartfile/gists{/gist_id}","starred_url":"https://api.github.com/users/smartfile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartfile/subscriptions","organizations_url":"https://api.github.com/users/smartfile/orgs","repos_url":"https://api.github.com/users/smartfile/repos","events_url":"https://api.github.com/users/smartfile/events{/privacy}","received_events_url":"https://api.github.com/users/smartfile/received_events","type":"Organization","site_admin":false},"repo":{"id":45553319,"name":"paramiko","full_name":"smartfile/paramiko","owner":{"login":"smartfile","id":2232208,"avatar_url":"https://avatars.githubusercontent.com/u/2232208?v=3","gravatar_id":"","url":"https://api.github.com/users/smartfile","html_url":"https://github.com/smartfile","followers_url":"https://api.github.com/users/smartfile/followers","following_url":"https://api.github.com/users/smartfile/following{/other_user}","gists_url":"https://api.github.com/users/smartfile/gists{/gist_id}","starred_url":"https://api.github.com/users/smartfile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartfile/subscriptions","organizations_url":"https://api.github.com/users/smartfile/orgs","repos_url":"https://api.github.com/users/smartfile/repos","events_url":"https://api.github.com/users/smartfile/events{/privacy}","received_events_url":"https://api.github.com/users/smartfile/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/smartfile/paramiko","description":"Native Python SSHv2 protocol library","fork":true,"url":"https://api.github.com/repos/smartfile/paramiko","forks_url":"https://api.github.com/repos/smartfile/paramiko/forks","keys_url":"https://api.github.com/repos/smartfile/paramiko/keys{/key_id}","collaborators_url":"https://api.github.com/repos/smartfile/paramiko/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/smartfile/paramiko/teams","hooks_url":"https://api.github.com/repos/smartfile/paramiko/hooks","issue_events_url":"https://api.github.com/repos/smartfile/paramiko/issues/events{/number}","events_url":"https://api.github.com/repos/smartfile/paramiko/events","assignees_url":"https://api.github.com/repos/smartfile/paramiko/assignees{/user}","branches_url":"https://api.github.com/repos/smartfile/paramiko/branches{/branch}","tags_url":"https://api.github.com/repos/smartfile/paramiko/tags","blobs_url":"https://api.github.com/repos/smartfile/paramiko/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/smartfile/paramiko/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/smartfile/paramiko/git/refs{/sha}","trees_url":"https://api.github.com/repos/smartfile/paramiko/git/trees{/sha}","statuses_url":"https://api.github.com/repos/smartfile/paramiko/statuses/{sha}","languages_url":"https://api.github.com/repos/smartfile/paramiko/languages","stargazers_url":"https://api.github.com/repos/smartfile/paramiko/stargazers","contributors_url":"https://api.github.com/repos/smartfile/paramiko/contributors","subscribers_url":"https://api.github.com/repos/smartfile/paramiko/subscribers","subscription_url":"https://api.github.com/repos/smartfile/paramiko/subscription","commits_url":"https://api.github.com/repos/smartfile/paramiko/commits{/sha}","git_commits_url":"https://api.github.com/repos/smartfile/paramiko/git/commits{/sha}","comments_url":"https://api.github.com/repos/smartfile/paramiko/comments{/number}","issue_comment_url":"https://api.github.com/repos/smartfile/paramiko/issues/comments{/number}","contents_url":"https://api.github.com/repos/smartfile/paramiko/contents/{+path}","compare_url":"https://api.github.com/repos/smartfile/paramiko/compare/{base}...{head}","merges_url":"https://api.github.com/repos/smartfile/paramiko/merges","archive_url":"https://api.github.com/repos/smartfile/paramiko/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/smartfile/paramiko/downloads","issues_url":"https://api.github.com/repos/smartfile/paramiko/issues{/number}","pulls_url":"https://api.github.com/repos/smartfile/paramiko/pulls{/number}","milestones_url":"https://api.github.com/repos/smartfile/paramiko/milestones{/number}","notifications_url":"https://api.github.com/repos/smartfile/paramiko/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/smartfile/paramiko/labels{/name}","releases_url":"https://api.github.com/repos/smartfile/paramiko/releases{/id}","deployments_url":"https://api.github.com/repos/smartfile/paramiko/deployments","created_at":"2015-11-04T16:51:46Z","updated_at":"2016-10-24T15:39:39Z","pushed_at":"2016-10-25T01:11:31Z","git_url":"git://github.com/smartfile/paramiko.git","ssh_url":"git@github.com:smartfile/paramiko.git","clone_url":"https://github.com/smartfile/paramiko.git","svn_url":"https://github.com/smartfile/paramiko","homepage":"","size":3000,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"smartfile:master","ref":"master","sha":"c65db56c4a9b42f7647191523ee722e6cb9880b4","user":{"login":"smartfile","id":2232208,"avatar_url":"https://avatars.githubusercontent.com/u/2232208?v=3","gravatar_id":"","url":"https://api.github.com/users/smartfile","html_url":"https://github.com/smartfile","followers_url":"https://api.github.com/users/smartfile/followers","following_url":"https://api.github.com/users/smartfile/following{/other_user}","gists_url":"https://api.github.com/users/smartfile/gists{/gist_id}","starred_url":"https://api.github.com/users/smartfile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartfile/subscriptions","organizations_url":"https://api.github.com/users/smartfile/orgs","repos_url":"https://api.github.com/users/smartfile/repos","events_url":"https://api.github.com/users/smartfile/events{/privacy}","received_events_url":"https://api.github.com/users/smartfile/received_events","type":"Organization","site_admin":false},"repo":{"id":45553319,"name":"paramiko","full_name":"smartfile/paramiko","owner":{"login":"smartfile","id":2232208,"avatar_url":"https://avatars.githubusercontent.com/u/2232208?v=3","gravatar_id":"","url":"https://api.github.com/users/smartfile","html_url":"https://github.com/smartfile","followers_url":"https://api.github.com/users/smartfile/followers","following_url":"https://api.github.com/users/smartfile/following{/other_user}","gists_url":"https://api.github.com/users/smartfile/gists{/gist_id}","starred_url":"https://api.github.com/users/smartfile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartfile/subscriptions","organizations_url":"https://api.github.com/users/smartfile/orgs","repos_url":"https://api.github.com/users/smartfile/repos","events_url":"https://api.github.com/users/smartfile/events{/privacy}","received_events_url":"https://api.github.com/users/smartfile/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/smartfile/paramiko","description":"Native Python SSHv2 protocol library","fork":true,"url":"https://api.github.com/repos/smartfile/paramiko","forks_url":"https://api.github.com/repos/smartfile/paramiko/forks","keys_url":"https://api.github.com/repos/smartfile/paramiko/keys{/key_id}","collaborators_url":"https://api.github.com/repos/smartfile/paramiko/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/smartfile/paramiko/teams","hooks_url":"https://api.github.com/repos/smartfile/paramiko/hooks","issue_events_url":"https://api.github.com/repos/smartfile/paramiko/issues/events{/number}","events_url":"https://api.github.com/repos/smartfile/paramiko/events","assignees_url":"https://api.github.com/repos/smartfile/paramiko/assignees{/user}","branches_url":"https://api.github.com/repos/smartfile/paramiko/branches{/branch}","tags_url":"https://api.github.com/repos/smartfile/paramiko/tags","blobs_url":"https://api.github.com/repos/smartfile/paramiko/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/smartfile/paramiko/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/smartfile/paramiko/git/refs{/sha}","trees_url":"https://api.github.com/repos/smartfile/paramiko/git/trees{/sha}","statuses_url":"https://api.github.com/repos/smartfile/paramiko/statuses/{sha}","languages_url":"https://api.github.com/repos/smartfile/paramiko/languages","stargazers_url":"https://api.github.com/repos/smartfile/paramiko/stargazers","contributors_url":"https://api.github.com/repos/smartfile/paramiko/contributors","subscribers_url":"https://api.github.com/repos/smartfile/paramiko/subscribers","subscription_url":"https://api.github.com/repos/smartfile/paramiko/subscription","commits_url":"https://api.github.com/repos/smartfile/paramiko/commits{/sha}","git_commits_url":"https://api.github.com/repos/smartfile/paramiko/git/commits{/sha}","comments_url":"https://api.github.com/repos/smartfile/paramiko/comments{/number}","issue_comment_url":"https://api.github.com/repos/smartfile/paramiko/issues/comments{/number}","contents_url":"https://api.github.com/repos/smartfile/paramiko/contents/{+path}","compare_url":"https://api.github.com/repos/smartfile/paramiko/compare/{base}...{head}","merges_url":"https://api.github.com/repos/smartfile/paramiko/merges","archive_url":"https://api.github.com/repos/smartfile/paramiko/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/smartfile/paramiko/downloads","issues_url":"https://api.github.com/repos/smartfile/paramiko/issues{/number}","pulls_url":"https://api.github.com/repos/smartfile/paramiko/pulls{/number}","milestones_url":"https://api.github.com/repos/smartfile/paramiko/milestones{/number}","notifications_url":"https://api.github.com/repos/smartfile/paramiko/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/smartfile/paramiko/labels{/name}","releases_url":"https://api.github.com/repos/smartfile/paramiko/releases{/id}","deployments_url":"https://api.github.com/repos/smartfile/paramiko/deployments","created_at":"2015-11-04T16:51:46Z","updated_at":"2016-10-24T15:39:39Z","pushed_at":"2016-10-25T01:11:31Z","git_url":"git://github.com/smartfile/paramiko.git","ssh_url":"git@github.com:smartfile/paramiko.git","clone_url":"https://github.com/smartfile/paramiko.git","svn_url":"https://github.com/smartfile/paramiko","homepage":"","size":3000,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/smartfile/paramiko/pulls/4"},"html":{"href":"https://github.com/smartfile/paramiko/pull/4"},"issue":{"href":"https://api.github.com/repos/smartfile/paramiko/issues/4"},"comments":{"href":"https://api.github.com/repos/smartfile/paramiko/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/smartfile/paramiko/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/smartfile/paramiko/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/smartfile/paramiko/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/smartfile/paramiko/statuses/af387de7e4044784093083414af0bb22a633e130"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":3,"deletions":1,"changed_files":2}}
{"actor":{"display_login":"almathew"}}