{"action":"closed","number":55,"pull_request":{"url":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/55","id":212323483,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEyMzIzNDgz","html_url":"https://github.com/DataDog/dd-trace-php/pull/55","diff_url":"https://github.com/DataDog/dd-trace-php/pull/55.diff","patch_url":"https://github.com/DataDog/dd-trace-php/pull/55.patch","issue_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues/55","number":55,"state":"closed","locked":false,"title":"C extension allowing overriding any method or function","user":{"login":"pawelchcki","id":812891,"node_id":"MDQ6VXNlcjgxMjg5MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/812891?v=4","gravatar_id":"","url":"https://api.github.com/users/pawelchcki","html_url":"https://github.com/pawelchcki","followers_url":"https://api.github.com/users/pawelchcki/followers","following_url":"https://api.github.com/users/pawelchcki/following{/other_user}","gists_url":"https://api.github.com/users/pawelchcki/gists{/gist_id}","starred_url":"https://api.github.com/users/pawelchcki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawelchcki/subscriptions","organizations_url":"https://api.github.com/users/pawelchcki/orgs","repos_url":"https://api.github.com/users/pawelchcki/repos","events_url":"https://api.github.com/users/pawelchcki/events{/privacy}","received_events_url":"https://api.github.com/users/pawelchcki/received_events","type":"User","site_admin":false},"body":"This PR contains C extension written to allow overriding any method or function.\r\n\r\nCurrently it does so by injecting itself into processing every \"execute function\" opcode handled by PHP, and then checking if the function  (or method) to be executed was configured to be overridden.\r\n\r\nIf it was configured to be overridden, then configured overriding closure is executed instead of the original function.\r\n\r\nThis means that every function call - even if its not overridden by this extension -  has  an additional overhead of at least 1 hash lookup. For now this is necessary overhead, in future we could explore some optimizations like opcode rewriting or caching information within opcode itself.\r\n\r\nThis extension uses standard PHP extension facilities (`phpize`) to build and test the code - and it is able to check for memory leaks within tests using Valgrind.\r\n\r\nCI configuration introduced in this PR, also runs tests and checks for leaks. It then pushes compiled extension via workspace to downstream builds, and configures composer in those builds to use compiled extension automatically. This way all composers tests already have access to this extension.\r\n\r\n","created_at":"2018-08-31T09:21:16Z","updated_at":"2018-10-03T18:30:35Z","closed_at":"2018-10-03T18:30:35Z","merged_at":"2018-10-03T18:30:35Z","merge_commit_sha":"a458ef9ff3db1955052aa03950510ae324cbc24e","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":827391849,"node_id":"MDU6TGFiZWw4MjczOTE4NDk=","url":"https://api.github.com/repos/DataDog/dd-trace-php/labels/core","name":"core","color":"d93f0b","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/55/commits","review_comments_url":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/55/comments","review_comment_url":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues/55/comments","statuses_url":"https://api.github.com/repos/DataDog/dd-trace-php/statuses/3a2d3cfb069eeaa5de74a63f7fbc205cd4e32852","head":{"label":"DataDog:php_c_extension","ref":"php_c_extension","sha":"3a2d3cfb069eeaa5de74a63f7fbc205cd4e32852","user":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"repo":{"id":119990860,"node_id":"MDEwOlJlcG9zaXRvcnkxMTk5OTA4NjA=","name":"dd-trace-php","full_name":"DataDog/dd-trace-php","private":false,"owner":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/DataDog/dd-trace-php","description":"Experimental PHP Tracer (WIP)","fork":false,"url":"https://api.github.com/repos/DataDog/dd-trace-php","forks_url":"https://api.github.com/repos/DataDog/dd-trace-php/forks","keys_url":"https://api.github.com/repos/DataDog/dd-trace-php/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DataDog/dd-trace-php/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DataDog/dd-trace-php/teams","hooks_url":"https://api.github.com/repos/DataDog/dd-trace-php/hooks","issue_events_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues/events{/number}","events_url":"https://api.github.com/repos/DataDog/dd-trace-php/events","assignees_url":"https://api.github.com/repos/DataDog/dd-trace-php/assignees{/user}","branches_url":"https://api.github.com/repos/DataDog/dd-trace-php/branches{/branch}","tags_url":"https://api.github.com/repos/DataDog/dd-trace-php/tags","blobs_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/refs{/sha}","trees_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DataDog/dd-trace-php/statuses/{sha}","languages_url":"https://api.github.com/repos/DataDog/dd-trace-php/languages","stargazers_url":"https://api.github.com/repos/DataDog/dd-trace-php/stargazers","contributors_url":"https://api.github.com/repos/DataDog/dd-trace-php/contributors","subscribers_url":"https://api.github.com/repos/DataDog/dd-trace-php/subscribers","subscription_url":"https://api.github.com/repos/DataDog/dd-trace-php/subscription","commits_url":"https://api.github.com/repos/DataDog/dd-trace-php/commits{/sha}","git_commits_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/commits{/sha}","comments_url":"https://api.github.com/repos/DataDog/dd-trace-php/comments{/number}","issue_comment_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues/comments{/number}","contents_url":"https://api.github.com/repos/DataDog/dd-trace-php/contents/{+path}","compare_url":"https://api.github.com/repos/DataDog/dd-trace-php/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DataDog/dd-trace-php/merges","archive_url":"https://api.github.com/repos/DataDog/dd-trace-php/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DataDog/dd-trace-php/downloads","issues_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues{/number}","pulls_url":"https://api.github.com/repos/DataDog/dd-trace-php/pulls{/number}","milestones_url":"https://api.github.com/repos/DataDog/dd-trace-php/milestones{/number}","notifications_url":"https://api.github.com/repos/DataDog/dd-trace-php/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DataDog/dd-trace-php/labels{/name}","releases_url":"https://api.github.com/repos/DataDog/dd-trace-php/releases{/id}","deployments_url":"https://api.github.com/repos/DataDog/dd-trace-php/deployments","created_at":"2018-02-02T14:21:54Z","updated_at":"2018-10-03T18:19:25Z","pushed_at":"2018-10-03T18:30:35Z","git_url":"git://github.com/DataDog/dd-trace-php.git","ssh_url":"git@github.com:DataDog/dd-trace-php.git","clone_url":"https://github.com/DataDog/dd-trace-php.git","svn_url":"https://github.com/DataDog/dd-trace-php","homepage":"https://docs.datadoghq.com/tracing/","size":179,"stargazers_count":28,"watchers_count":28,"language":"PHP","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":5,"open_issues":0,"watchers":28,"default_branch":"master"}},"base":{"label":"DataDog:master","ref":"master","sha":"ced4412ed147d14d1aacd612b23c0664266b95b0","user":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"repo":{"id":119990860,"node_id":"MDEwOlJlcG9zaXRvcnkxMTk5OTA4NjA=","name":"dd-trace-php","full_name":"DataDog/dd-trace-php","private":false,"owner":{"login":"DataDog","id":365230,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM2NTIzMA==","avatar_url":"https://avatars1.githubusercontent.com/u/365230?v=4","gravatar_id":"","url":"https://api.github.com/users/DataDog","html_url":"https://github.com/DataDog","followers_url":"https://api.github.com/users/DataDog/followers","following_url":"https://api.github.com/users/DataDog/following{/other_user}","gists_url":"https://api.github.com/users/DataDog/gists{/gist_id}","starred_url":"https://api.github.com/users/DataDog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DataDog/subscriptions","organizations_url":"https://api.github.com/users/DataDog/orgs","repos_url":"https://api.github.com/users/DataDog/repos","events_url":"https://api.github.com/users/DataDog/events{/privacy}","received_events_url":"https://api.github.com/users/DataDog/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/DataDog/dd-trace-php","description":"Experimental PHP Tracer (WIP)","fork":false,"url":"https://api.github.com/repos/DataDog/dd-trace-php","forks_url":"https://api.github.com/repos/DataDog/dd-trace-php/forks","keys_url":"https://api.github.com/repos/DataDog/dd-trace-php/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DataDog/dd-trace-php/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DataDog/dd-trace-php/teams","hooks_url":"https://api.github.com/repos/DataDog/dd-trace-php/hooks","issue_events_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues/events{/number}","events_url":"https://api.github.com/repos/DataDog/dd-trace-php/events","assignees_url":"https://api.github.com/repos/DataDog/dd-trace-php/assignees{/user}","branches_url":"https://api.github.com/repos/DataDog/dd-trace-php/branches{/branch}","tags_url":"https://api.github.com/repos/DataDog/dd-trace-php/tags","blobs_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/refs{/sha}","trees_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DataDog/dd-trace-php/statuses/{sha}","languages_url":"https://api.github.com/repos/DataDog/dd-trace-php/languages","stargazers_url":"https://api.github.com/repos/DataDog/dd-trace-php/stargazers","contributors_url":"https://api.github.com/repos/DataDog/dd-trace-php/contributors","subscribers_url":"https://api.github.com/repos/DataDog/dd-trace-php/subscribers","subscription_url":"https://api.github.com/repos/DataDog/dd-trace-php/subscription","commits_url":"https://api.github.com/repos/DataDog/dd-trace-php/commits{/sha}","git_commits_url":"https://api.github.com/repos/DataDog/dd-trace-php/git/commits{/sha}","comments_url":"https://api.github.com/repos/DataDog/dd-trace-php/comments{/number}","issue_comment_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues/comments{/number}","contents_url":"https://api.github.com/repos/DataDog/dd-trace-php/contents/{+path}","compare_url":"https://api.github.com/repos/DataDog/dd-trace-php/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DataDog/dd-trace-php/merges","archive_url":"https://api.github.com/repos/DataDog/dd-trace-php/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DataDog/dd-trace-php/downloads","issues_url":"https://api.github.com/repos/DataDog/dd-trace-php/issues{/number}","pulls_url":"https://api.github.com/repos/DataDog/dd-trace-php/pulls{/number}","milestones_url":"https://api.github.com/repos/DataDog/dd-trace-php/milestones{/number}","notifications_url":"https://api.github.com/repos/DataDog/dd-trace-php/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DataDog/dd-trace-php/labels{/name}","releases_url":"https://api.github.com/repos/DataDog/dd-trace-php/releases{/id}","deployments_url":"https://api.github.com/repos/DataDog/dd-trace-php/deployments","created_at":"2018-02-02T14:21:54Z","updated_at":"2018-10-03T18:19:25Z","pushed_at":"2018-10-03T18:30:35Z","git_url":"git://github.com/DataDog/dd-trace-php.git","ssh_url":"git@github.com:DataDog/dd-trace-php.git","clone_url":"https://github.com/DataDog/dd-trace-php.git","svn_url":"https://github.com/DataDog/dd-trace-php","homepage":"https://docs.datadoghq.com/tracing/","size":179,"stargazers_count":28,"watchers_count":28,"language":"PHP","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":5,"open_issues":0,"watchers":28,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/55"},"html":{"href":"https://github.com/DataDog/dd-trace-php/pull/55"},"issue":{"href":"https://api.github.com/repos/DataDog/dd-trace-php/issues/55"},"comments":{"href":"https://api.github.com/repos/DataDog/dd-trace-php/issues/55/comments"},"review_comments":{"href":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/55/comments"},"review_comment":{"href":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DataDog/dd-trace-php/pulls/55/commits"},"statuses":{"href":"https://api.github.com/repos/DataDog/dd-trace-php/statuses/3a2d3cfb069eeaa5de74a63f7fbc205cd4e32852"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"pawelchcki","id":812891,"node_id":"MDQ6VXNlcjgxMjg5MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/812891?v=4","gravatar_id":"","url":"https://api.github.com/users/pawelchcki","html_url":"https://github.com/pawelchcki","followers_url":"https://api.github.com/users/pawelchcki/followers","following_url":"https://api.github.com/users/pawelchcki/following{/other_user}","gists_url":"https://api.github.com/users/pawelchcki/gists{/gist_id}","starred_url":"https://api.github.com/users/pawelchcki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pawelchcki/subscriptions","organizations_url":"https://api.github.com/users/pawelchcki/orgs","repos_url":"https://api.github.com/users/pawelchcki/repos","events_url":"https://api.github.com/users/pawelchcki/events{/privacy}","received_events_url":"https://api.github.com/users/pawelchcki/received_events","type":"User","site_admin":false},"comments":3,"review_comments":28,"maintainer_can_modify":false,"commits":13,"additions":1804,"deletions":9,"changed_files":29}}
{"actor":{"display_login":"pawelchcki"}}