{"action":"closed","number":3746,"pull_request":{"url":"https://api.github.com/repos/spinnaker/clouddriver/pulls/3746","id":285122563,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjg1MTIyNTYz","html_url":"https://github.com/spinnaker/clouddriver/pull/3746","diff_url":"https://github.com/spinnaker/clouddriver/pull/3746.diff","patch_url":"https://github.com/spinnaker/clouddriver/pull/3746.patch","issue_url":"https://api.github.com/repos/spinnaker/clouddriver/issues/3746","number":3746,"state":"closed","locked":false,"title":"perf(kubernetes): Reduce memory allocation during caching cycles (#3736)","user":{"login":"ezimanyi","id":1391982,"node_id":"MDQ6VXNlcjEzOTE5ODI=","avatar_url":"https://avatars3.githubusercontent.com/u/1391982?v=4","gravatar_id":"","url":"https://api.github.com/users/ezimanyi","html_url":"https://github.com/ezimanyi","followers_url":"https://api.github.com/users/ezimanyi/followers","following_url":"https://api.github.com/users/ezimanyi/following{/other_user}","gists_url":"https://api.github.com/users/ezimanyi/gists{/gist_id}","starred_url":"https://api.github.com/users/ezimanyi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezimanyi/subscriptions","organizations_url":"https://api.github.com/users/ezimanyi/orgs","repos_url":"https://api.github.com/users/ezimanyi/repos","events_url":"https://api.github.com/users/ezimanyi/events{/privacy}","received_events_url":"https://api.github.com/users/ezimanyi/received_events","type":"User","site_admin":false},"body":"* perf(kubernetes): Reduce memory allocation during caching cycles\r\n\r\nThe caching logic for the kubernetes v2 provider allocates a\r\nlot of short-term memory during each caching cycle, putting\r\npressure on the garbage collector, in some cases exceeding\r\nthe garbage collection overhead.\r\n\r\nA significant contributor is the logic to compute relationships\r\nbetween kubernetes objects. We currently create a CacheData object\r\nto hold each relationship and rely on downstream (and inefficient)\r\nlogic to merge these into one CacheData per object, containing all\r\nof its relationships.\r\n\r\nImprove this by having invertRelationships return one CacheData\r\nper object (containing all of its relationships) rather than on\r\nCacheData per relationship. Likewise, have getClusterRelationships\r\nreturn a single CacheData for each application, rather than a\r\nseparate one for each application-object relationship.\r\n\r\n* test(kubernetes): Add tests to getClusterRelationships\r\n\r\nAlso simplify the logic in the invertRelationships test","created_at":"2019-06-04T20:02:16Z","updated_at":"2019-06-04T20:24:41Z","closed_at":"2019-06-04T20:24:41Z","merged_at":"2019-06-04T20:24:41Z","merge_commit_sha":"0724ff92f17f31b7cc1ea347a9c34285fde363be","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/spinnaker/clouddriver/pulls/3746/commits","review_comments_url":"https://api.github.com/repos/spinnaker/clouddriver/pulls/3746/comments","review_comment_url":"https://api.github.com/repos/spinnaker/clouddriver/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spinnaker/clouddriver/issues/3746/comments","statuses_url":"https://api.github.com/repos/spinnaker/clouddriver/statuses/47238b94782cb2626cccd3c0d1edabafc17dc146","head":{"label":"ezimanyi:cherry-pick-cache-perf","ref":"cherry-pick-cache-perf","sha":"47238b94782cb2626cccd3c0d1edabafc17dc146","user":{"login":"ezimanyi","id":1391982,"node_id":"MDQ6VXNlcjEzOTE5ODI=","avatar_url":"https://avatars3.githubusercontent.com/u/1391982?v=4","gravatar_id":"","url":"https://api.github.com/users/ezimanyi","html_url":"https://github.com/ezimanyi","followers_url":"https://api.github.com/users/ezimanyi/followers","following_url":"https://api.github.com/users/ezimanyi/following{/other_user}","gists_url":"https://api.github.com/users/ezimanyi/gists{/gist_id}","starred_url":"https://api.github.com/users/ezimanyi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezimanyi/subscriptions","organizations_url":"https://api.github.com/users/ezimanyi/orgs","repos_url":"https://api.github.com/users/ezimanyi/repos","events_url":"https://api.github.com/users/ezimanyi/events{/privacy}","received_events_url":"https://api.github.com/users/ezimanyi/received_events","type":"User","site_admin":false},"repo":{"id":118040782,"node_id":"MDEwOlJlcG9zaXRvcnkxMTgwNDA3ODI=","name":"clouddriver","full_name":"ezimanyi/clouddriver","private":false,"owner":{"login":"ezimanyi","id":1391982,"node_id":"MDQ6VXNlcjEzOTE5ODI=","avatar_url":"https://avatars3.githubusercontent.com/u/1391982?v=4","gravatar_id":"","url":"https://api.github.com/users/ezimanyi","html_url":"https://github.com/ezimanyi","followers_url":"https://api.github.com/users/ezimanyi/followers","following_url":"https://api.github.com/users/ezimanyi/following{/other_user}","gists_url":"https://api.github.com/users/ezimanyi/gists{/gist_id}","starred_url":"https://api.github.com/users/ezimanyi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezimanyi/subscriptions","organizations_url":"https://api.github.com/users/ezimanyi/orgs","repos_url":"https://api.github.com/users/ezimanyi/repos","events_url":"https://api.github.com/users/ezimanyi/events{/privacy}","received_events_url":"https://api.github.com/users/ezimanyi/received_events","type":"User","site_admin":false},"html_url":"https://github.com/ezimanyi/clouddriver","description":"read and write operations across cloud providers","fork":true,"url":"https://api.github.com/repos/ezimanyi/clouddriver","forks_url":"https://api.github.com/repos/ezimanyi/clouddriver/forks","keys_url":"https://api.github.com/repos/ezimanyi/clouddriver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ezimanyi/clouddriver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ezimanyi/clouddriver/teams","hooks_url":"https://api.github.com/repos/ezimanyi/clouddriver/hooks","issue_events_url":"https://api.github.com/repos/ezimanyi/clouddriver/issues/events{/number}","events_url":"https://api.github.com/repos/ezimanyi/clouddriver/events","assignees_url":"https://api.github.com/repos/ezimanyi/clouddriver/assignees{/user}","branches_url":"https://api.github.com/repos/ezimanyi/clouddriver/branches{/branch}","tags_url":"https://api.github.com/repos/ezimanyi/clouddriver/tags","blobs_url":"https://api.github.com/repos/ezimanyi/clouddriver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ezimanyi/clouddriver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ezimanyi/clouddriver/git/refs{/sha}","trees_url":"https://api.github.com/repos/ezimanyi/clouddriver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ezimanyi/clouddriver/statuses/{sha}","languages_url":"https://api.github.com/repos/ezimanyi/clouddriver/languages","stargazers_url":"https://api.github.com/repos/ezimanyi/clouddriver/stargazers","contributors_url":"https://api.github.com/repos/ezimanyi/clouddriver/contributors","subscribers_url":"https://api.github.com/repos/ezimanyi/clouddriver/subscribers","subscription_url":"https://api.github.com/repos/ezimanyi/clouddriver/subscription","commits_url":"https://api.github.com/repos/ezimanyi/clouddriver/commits{/sha}","git_commits_url":"https://api.github.com/repos/ezimanyi/clouddriver/git/commits{/sha}","comments_url":"https://api.github.com/repos/ezimanyi/clouddriver/comments{/number}","issue_comment_url":"https://api.github.com/repos/ezimanyi/clouddriver/issues/comments{/number}","contents_url":"https://api.github.com/repos/ezimanyi/clouddriver/contents/{+path}","compare_url":"https://api.github.com/repos/ezimanyi/clouddriver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ezimanyi/clouddriver/merges","archive_url":"https://api.github.com/repos/ezimanyi/clouddriver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ezimanyi/clouddriver/downloads","issues_url":"https://api.github.com/repos/ezimanyi/clouddriver/issues{/number}","pulls_url":"https://api.github.com/repos/ezimanyi/clouddriver/pulls{/number}","milestones_url":"https://api.github.com/repos/ezimanyi/clouddriver/milestones{/number}","notifications_url":"https://api.github.com/repos/ezimanyi/clouddriver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ezimanyi/clouddriver/labels{/name}","releases_url":"https://api.github.com/repos/ezimanyi/clouddriver/releases{/id}","deployments_url":"https://api.github.com/repos/ezimanyi/clouddriver/deployments","created_at":"2018-01-18T21:32:39Z","updated_at":"2019-06-03T21:10:50Z","pushed_at":"2019-06-04T20:00:19Z","git_url":"git://github.com/ezimanyi/clouddriver.git","ssh_url":"git@github.com:ezimanyi/clouddriver.git","clone_url":"https://github.com/ezimanyi/clouddriver.git","svn_url":"https://github.com/ezimanyi/clouddriver","homepage":null,"size":40002,"stargazers_count":0,"watchers_count":0,"language":"Groovy","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"spinnaker:release-1.13.x","ref":"release-1.13.x","sha":"a7ce3a53d13906ea8733df337904fddc48e7669e","user":{"login":"spinnaker","id":7634182,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MzQxODI=","avatar_url":"https://avatars1.githubusercontent.com/u/7634182?v=4","gravatar_id":"","url":"https://api.github.com/users/spinnaker","html_url":"https://github.com/spinnaker","followers_url":"https://api.github.com/users/spinnaker/followers","following_url":"https://api.github.com/users/spinnaker/following{/other_user}","gists_url":"https://api.github.com/users/spinnaker/gists{/gist_id}","starred_url":"https://api.github.com/users/spinnaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spinnaker/subscriptions","organizations_url":"https://api.github.com/users/spinnaker/orgs","repos_url":"https://api.github.com/users/spinnaker/repos","events_url":"https://api.github.com/users/spinnaker/events{/privacy}","received_events_url":"https://api.github.com/users/spinnaker/received_events","type":"Organization","site_admin":false},"repo":{"id":37556951,"node_id":"MDEwOlJlcG9zaXRvcnkzNzU1Njk1MQ==","name":"clouddriver","full_name":"spinnaker/clouddriver","private":false,"owner":{"login":"spinnaker","id":7634182,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MzQxODI=","avatar_url":"https://avatars1.githubusercontent.com/u/7634182?v=4","gravatar_id":"","url":"https://api.github.com/users/spinnaker","html_url":"https://github.com/spinnaker","followers_url":"https://api.github.com/users/spinnaker/followers","following_url":"https://api.github.com/users/spinnaker/following{/other_user}","gists_url":"https://api.github.com/users/spinnaker/gists{/gist_id}","starred_url":"https://api.github.com/users/spinnaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spinnaker/subscriptions","organizations_url":"https://api.github.com/users/spinnaker/orgs","repos_url":"https://api.github.com/users/spinnaker/repos","events_url":"https://api.github.com/users/spinnaker/events{/privacy}","received_events_url":"https://api.github.com/users/spinnaker/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/spinnaker/clouddriver","description":"read and write operations across cloud providers","fork":false,"url":"https://api.github.com/repos/spinnaker/clouddriver","forks_url":"https://api.github.com/repos/spinnaker/clouddriver/forks","keys_url":"https://api.github.com/repos/spinnaker/clouddriver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spinnaker/clouddriver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spinnaker/clouddriver/teams","hooks_url":"https://api.github.com/repos/spinnaker/clouddriver/hooks","issue_events_url":"https://api.github.com/repos/spinnaker/clouddriver/issues/events{/number}","events_url":"https://api.github.com/repos/spinnaker/clouddriver/events","assignees_url":"https://api.github.com/repos/spinnaker/clouddriver/assignees{/user}","branches_url":"https://api.github.com/repos/spinnaker/clouddriver/branches{/branch}","tags_url":"https://api.github.com/repos/spinnaker/clouddriver/tags","blobs_url":"https://api.github.com/repos/spinnaker/clouddriver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spinnaker/clouddriver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spinnaker/clouddriver/git/refs{/sha}","trees_url":"https://api.github.com/repos/spinnaker/clouddriver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spinnaker/clouddriver/statuses/{sha}","languages_url":"https://api.github.com/repos/spinnaker/clouddriver/languages","stargazers_url":"https://api.github.com/repos/spinnaker/clouddriver/stargazers","contributors_url":"https://api.github.com/repos/spinnaker/clouddriver/contributors","subscribers_url":"https://api.github.com/repos/spinnaker/clouddriver/subscribers","subscription_url":"https://api.github.com/repos/spinnaker/clouddriver/subscription","commits_url":"https://api.github.com/repos/spinnaker/clouddriver/commits{/sha}","git_commits_url":"https://api.github.com/repos/spinnaker/clouddriver/git/commits{/sha}","comments_url":"https://api.github.com/repos/spinnaker/clouddriver/comments{/number}","issue_comment_url":"https://api.github.com/repos/spinnaker/clouddriver/issues/comments{/number}","contents_url":"https://api.github.com/repos/spinnaker/clouddriver/contents/{+path}","compare_url":"https://api.github.com/repos/spinnaker/clouddriver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spinnaker/clouddriver/merges","archive_url":"https://api.github.com/repos/spinnaker/clouddriver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spinnaker/clouddriver/downloads","issues_url":"https://api.github.com/repos/spinnaker/clouddriver/issues{/number}","pulls_url":"https://api.github.com/repos/spinnaker/clouddriver/pulls{/number}","milestones_url":"https://api.github.com/repos/spinnaker/clouddriver/milestones{/number}","notifications_url":"https://api.github.com/repos/spinnaker/clouddriver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spinnaker/clouddriver/labels{/name}","releases_url":"https://api.github.com/repos/spinnaker/clouddriver/releases{/id}","deployments_url":"https://api.github.com/repos/spinnaker/clouddriver/deployments","created_at":"2015-06-16T21:26:02Z","updated_at":"2019-06-03T22:59:54Z","pushed_at":"2019-06-04T20:24:41Z","git_url":"git://github.com/spinnaker/clouddriver.git","ssh_url":"git@github.com:spinnaker/clouddriver.git","clone_url":"https://github.com/spinnaker/clouddriver.git","svn_url":"https://github.com/spinnaker/clouddriver","homepage":null,"size":40363,"stargazers_count":203,"watchers_count":203,"language":"Groovy","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":583,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":9,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":583,"open_issues":9,"watchers":203,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spinnaker/clouddriver/pulls/3746"},"html":{"href":"https://github.com/spinnaker/clouddriver/pull/3746"},"issue":{"href":"https://api.github.com/repos/spinnaker/clouddriver/issues/3746"},"comments":{"href":"https://api.github.com/repos/spinnaker/clouddriver/issues/3746/comments"},"review_comments":{"href":"https://api.github.com/repos/spinnaker/clouddriver/pulls/3746/comments"},"review_comment":{"href":"https://api.github.com/repos/spinnaker/clouddriver/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spinnaker/clouddriver/pulls/3746/commits"},"statuses":{"href":"https://api.github.com/repos/spinnaker/clouddriver/statuses/47238b94782cb2626cccd3c0d1edabafc17dc146"}},"author_association":"MEMBER","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"maggieneterval","id":15936279,"node_id":"MDQ6VXNlcjE1OTM2Mjc5","avatar_url":"https://avatars1.githubusercontent.com/u/15936279?v=4","gravatar_id":"","url":"https://api.github.com/users/maggieneterval","html_url":"https://github.com/maggieneterval","followers_url":"https://api.github.com/users/maggieneterval/followers","following_url":"https://api.github.com/users/maggieneterval/following{/other_user}","gists_url":"https://api.github.com/users/maggieneterval/gists{/gist_id}","starred_url":"https://api.github.com/users/maggieneterval/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maggieneterval/subscriptions","organizations_url":"https://api.github.com/users/maggieneterval/orgs","repos_url":"https://api.github.com/users/maggieneterval/repos","events_url":"https://api.github.com/users/maggieneterval/events{/privacy}","received_events_url":"https://api.github.com/users/maggieneterval/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":126,"deletions":91,"changed_files":4}}
{"actor":{"display_login":"maggieneterval"}}