{"action":"created","comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/comments/167883349","pull_request_review_id":96163467,"id":167883349,"diff_hunk":"@@ -0,0 +1,429 @@\n+---\n+title: The Path[name] to discovering a memory leak in Ruby\n+author: NickLaMuro\n+date: 2018-02-14\n+tags: ruby performance\n+comments: true\n+published: true\n+---\n+\n+\n+_**tl;dr;** we found a [memory leak in\n+Ruby](https://bugs.ruby-lang.org/issues/14372)... and it mostly wasn't our\n+fault!_\n+\n+This is a tale of that 0.00001% of the time where a problem is actually an\n+issue in the language, and not with your own code base - though, it was a bit\n+of that as well!  We went through [every][1] [possible][2] [blog][3] [post][4]\n+on the subject (and [then][5] [some][6]), none of which really covered our\n+issue that took us an roughly 4 months of pain, misery, and suffering to solve.","path":"site/_posts/2018-02-14-the-pathname-to-discovering-a-memory-leak-in-ruby.html.md","position":19,"original_position":19,"commit_id":"802f483a16292fc8b9e0da0f7c8f92251abdf2bb","original_commit_id":"802f483a16292fc8b9e0da0f7c8f92251abdf2bb","user":{"login":"chrisarcand","id":2430490,"avatar_url":"https://avatars2.githubusercontent.com/u/2430490?v=4","gravatar_id":"","url":"https://api.github.com/users/chrisarcand","html_url":"https://github.com/chrisarcand","followers_url":"https://api.github.com/users/chrisarcand/followers","following_url":"https://api.github.com/users/chrisarcand/following{/other_user}","gists_url":"https://api.github.com/users/chrisarcand/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisarcand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisarcand/subscriptions","organizations_url":"https://api.github.com/users/chrisarcand/orgs","repos_url":"https://api.github.com/users/chrisarcand/repos","events_url":"https://api.github.com/users/chrisarcand/events{/privacy}","received_events_url":"https://api.github.com/users/chrisarcand/received_events","type":"User","site_admin":false},"body":"remove 'an'","created_at":"2018-02-13T14:40:24Z","updated_at":"2018-02-13T14:40:24Z","html_url":"https://github.com/ManageIQ/manageiq.org/pull/640#discussion_r167883349","pull_request_url":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/comments/167883349"},"html":{"href":"https://github.com/ManageIQ/manageiq.org/pull/640#discussion_r167883349"},"pull_request":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640"}}},"pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640","id":166405028,"html_url":"https://github.com/ManageIQ/manageiq.org/pull/640","diff_url":"https://github.com/ManageIQ/manageiq.org/pull/640.diff","patch_url":"https://github.com/ManageIQ/manageiq.org/pull/640.patch","issue_url":"https://api.github.com/repos/ManageIQ/manageiq.org/issues/640","number":640,"state":"open","locked":false,"title":"Ruby Memory leak in MIQ blog post","user":{"login":"NickLaMuro","id":314014,"avatar_url":"https://avatars0.githubusercontent.com/u/314014?v=4","gravatar_id":"","url":"https://api.github.com/users/NickLaMuro","html_url":"https://github.com/NickLaMuro","followers_url":"https://api.github.com/users/NickLaMuro/followers","following_url":"https://api.github.com/users/NickLaMuro/following{/other_user}","gists_url":"https://api.github.com/users/NickLaMuro/gists{/gist_id}","starred_url":"https://api.github.com/users/NickLaMuro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NickLaMuro/subscriptions","organizations_url":"https://api.github.com/users/NickLaMuro/orgs","repos_url":"https://api.github.com/users/NickLaMuro/repos","events_url":"https://api.github.com/users/NickLaMuro/events{/privacy}","received_events_url":"https://api.github.com/users/NickLaMuro/received_events","type":"User","site_admin":false},"body":"Goals:\r\n------\r\n\r\nBeing that this is a slightly different post from the typical LWIMIQ and MIQ release posts, I figured I would share the general goals for this post.\r\n\r\nIn no particular order:\r\n\r\n* Describe to the broader ruby community a bug that could cause issues for other ruby/rails developers (in fact, [it has](https://github.com/opf/openproject/pull/6148))\r\n  - Hopefully explain this in a way that doesn't require too much MIQ domain knowledge allowing for engagement outside of the MIQ community\r\n* Share and explain the process used to diagnose and fix this issue, so that possibly others might learn something from it\r\n* Explain to the ManageIQ/CFME the issues they might have been seeing in their environments\r\n* Avoid putting people to sleep...\r\n  - I have been known to be long winded individual when it comes to explaining things...\r\n\r\nThe post in it's current form is... well long, but as the title implies, it wasn't a small undertaking.  That said, I hope to get as many perspectives on this post as possible, since I am biased in what I think is relevant.  Ideally, I am trying to meet all of the goals above, but depending on perspective, I may or may not have achieved that\r\n\r\nThat said, I spent a decent amount of time drafting this up in a separate gist, and documenting the changes as individual commits as I went:\r\n\r\n* https://gist.github.com/NickLaMuro/730b252a48019cc6bef85270ac16ff44\r\n\r\nHopefully a dencent job of explaining my rational for a lot of the edits there, though, in it's current form, might be best viewed in a `git blame`.  That said, I will not be bring those nearly 90 commits over here, and will make use of the pull request review system here for the remaining edits :)\r\n\r\n\r\nLinks\r\n-----\r\n\r\n* https://bugs.ruby-lang.org/issues/14372\r\n* https://gist.github.com/NickLaMuro/730b252a48019cc6bef85270ac16ff44","created_at":"2018-01-31T23:28:26Z","updated_at":"2018-02-13T14:40:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"62e58d7e5f1a37d099fac61673ef11810eb2f2cf","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640/commits","review_comments_url":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640/comments","review_comment_url":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq.org/issues/640/comments","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq.org/statuses/802f483a16292fc8b9e0da0f7c8f92251abdf2bb","head":{"label":"NickLaMuro:ruby-memory-leak-blog-post","ref":"ruby-memory-leak-blog-post","sha":"802f483a16292fc8b9e0da0f7c8f92251abdf2bb","user":{"login":"NickLaMuro","id":314014,"avatar_url":"https://avatars0.githubusercontent.com/u/314014?v=4","gravatar_id":"","url":"https://api.github.com/users/NickLaMuro","html_url":"https://github.com/NickLaMuro","followers_url":"https://api.github.com/users/NickLaMuro/followers","following_url":"https://api.github.com/users/NickLaMuro/following{/other_user}","gists_url":"https://api.github.com/users/NickLaMuro/gists{/gist_id}","starred_url":"https://api.github.com/users/NickLaMuro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NickLaMuro/subscriptions","organizations_url":"https://api.github.com/users/NickLaMuro/orgs","repos_url":"https://api.github.com/users/NickLaMuro/repos","events_url":"https://api.github.com/users/NickLaMuro/events{/privacy}","received_events_url":"https://api.github.com/users/NickLaMuro/received_events","type":"User","site_admin":false},"repo":{"id":88774380,"name":"manageiq.org","full_name":"NickLaMuro/manageiq.org","owner":{"login":"NickLaMuro","id":314014,"avatar_url":"https://avatars0.githubusercontent.com/u/314014?v=4","gravatar_id":"","url":"https://api.github.com/users/NickLaMuro","html_url":"https://github.com/NickLaMuro","followers_url":"https://api.github.com/users/NickLaMuro/followers","following_url":"https://api.github.com/users/NickLaMuro/following{/other_user}","gists_url":"https://api.github.com/users/NickLaMuro/gists{/gist_id}","starred_url":"https://api.github.com/users/NickLaMuro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NickLaMuro/subscriptions","organizations_url":"https://api.github.com/users/NickLaMuro/orgs","repos_url":"https://api.github.com/users/NickLaMuro/repos","events_url":"https://api.github.com/users/NickLaMuro/events{/privacy}","received_events_url":"https://api.github.com/users/NickLaMuro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/NickLaMuro/manageiq.org","description":"Website for the ManageIQ Cloud Management Platform","fork":true,"url":"https://api.github.com/repos/NickLaMuro/manageiq.org","forks_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/forks","keys_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/keys{/key_id}","collaborators_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/teams","hooks_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/hooks","issue_events_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/issues/events{/number}","events_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/events","assignees_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/assignees{/user}","branches_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/branches{/branch}","tags_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/tags","blobs_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/git/refs{/sha}","trees_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/git/trees{/sha}","statuses_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/statuses/{sha}","languages_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/languages","stargazers_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/stargazers","contributors_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/contributors","subscribers_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/subscribers","subscription_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/subscription","commits_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/commits{/sha}","git_commits_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/git/commits{/sha}","comments_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/comments{/number}","issue_comment_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/issues/comments{/number}","contents_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/contents/{+path}","compare_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/compare/{base}...{head}","merges_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/merges","archive_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/downloads","issues_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/issues{/number}","pulls_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/pulls{/number}","milestones_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/milestones{/number}","notifications_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/labels{/name}","releases_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/releases{/id}","deployments_url":"https://api.github.com/repos/NickLaMuro/manageiq.org/deployments","created_at":"2017-04-19T17:53:43Z","updated_at":"2017-04-19T17:53:46Z","pushed_at":"2018-02-13T02:17:43Z","git_url":"git://github.com/NickLaMuro/manageiq.org.git","ssh_url":"git@github.com:NickLaMuro/manageiq.org.git","clone_url":"https://github.com/NickLaMuro/manageiq.org.git","svn_url":"https://github.com/NickLaMuro/manageiq.org","homepage":"http://manageiq.org","size":69048,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ManageIQ:master","ref":"master","sha":"5adf9a0832511c166583e5f17bcee49722168418","user":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars0.githubusercontent.com/u/1125575?v=4","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"repo":{"id":19741269,"name":"manageiq.org","full_name":"ManageIQ/manageiq.org","owner":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars0.githubusercontent.com/u/1125575?v=4","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ManageIQ/manageiq.org","description":"Website for the ManageIQ Management Platform","fork":false,"url":"https://api.github.com/repos/ManageIQ/manageiq.org","forks_url":"https://api.github.com/repos/ManageIQ/manageiq.org/forks","keys_url":"https://api.github.com/repos/ManageIQ/manageiq.org/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ManageIQ/manageiq.org/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ManageIQ/manageiq.org/teams","hooks_url":"https://api.github.com/repos/ManageIQ/manageiq.org/hooks","issue_events_url":"https://api.github.com/repos/ManageIQ/manageiq.org/issues/events{/number}","events_url":"https://api.github.com/repos/ManageIQ/manageiq.org/events","assignees_url":"https://api.github.com/repos/ManageIQ/manageiq.org/assignees{/user}","branches_url":"https://api.github.com/repos/ManageIQ/manageiq.org/branches{/branch}","tags_url":"https://api.github.com/repos/ManageIQ/manageiq.org/tags","blobs_url":"https://api.github.com/repos/ManageIQ/manageiq.org/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ManageIQ/manageiq.org/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ManageIQ/manageiq.org/git/refs{/sha}","trees_url":"https://api.github.com/repos/ManageIQ/manageiq.org/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq.org/statuses/{sha}","languages_url":"https://api.github.com/repos/ManageIQ/manageiq.org/languages","stargazers_url":"https://api.github.com/repos/ManageIQ/manageiq.org/stargazers","contributors_url":"https://api.github.com/repos/ManageIQ/manageiq.org/contributors","subscribers_url":"https://api.github.com/repos/ManageIQ/manageiq.org/subscribers","subscription_url":"https://api.github.com/repos/ManageIQ/manageiq.org/subscription","commits_url":"https://api.github.com/repos/ManageIQ/manageiq.org/commits{/sha}","git_commits_url":"https://api.github.com/repos/ManageIQ/manageiq.org/git/commits{/sha}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq.org/comments{/number}","issue_comment_url":"https://api.github.com/repos/ManageIQ/manageiq.org/issues/comments{/number}","contents_url":"https://api.github.com/repos/ManageIQ/manageiq.org/contents/{+path}","compare_url":"https://api.github.com/repos/ManageIQ/manageiq.org/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ManageIQ/manageiq.org/merges","archive_url":"https://api.github.com/repos/ManageIQ/manageiq.org/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ManageIQ/manageiq.org/downloads","issues_url":"https://api.github.com/repos/ManageIQ/manageiq.org/issues{/number}","pulls_url":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls{/number}","milestones_url":"https://api.github.com/repos/ManageIQ/manageiq.org/milestones{/number}","notifications_url":"https://api.github.com/repos/ManageIQ/manageiq.org/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ManageIQ/manageiq.org/labels{/name}","releases_url":"https://api.github.com/repos/ManageIQ/manageiq.org/releases{/id}","deployments_url":"https://api.github.com/repos/ManageIQ/manageiq.org/deployments","created_at":"2014-05-13T14:01:59Z","updated_at":"2018-01-11T19:03:53Z","pushed_at":"2018-02-13T02:17:44Z","git_url":"git://github.com/ManageIQ/manageiq.org.git","ssh_url":"git@github.com:ManageIQ/manageiq.org.git","clone_url":"https://github.com/ManageIQ/manageiq.org.git","svn_url":"https://github.com/ManageIQ/manageiq.org","homepage":"http://manageiq.org","size":69097,"stargazers_count":17,"watchers_count":17,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":87,"mirror_url":null,"archived":false,"open_issues_count":14,"license":null,"forks":87,"open_issues":14,"watchers":17,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640"},"html":{"href":"https://github.com/ManageIQ/manageiq.org/pull/640"},"issue":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/issues/640"},"comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/issues/640/comments"},"review_comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640/comments"},"review_comment":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/pulls/640/commits"},"statuses":{"href":"https://api.github.com/repos/ManageIQ/manageiq.org/statuses/802f483a16292fc8b9e0da0f7c8f92251abdf2bb"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"chrisarcand"}}