{"action":"created","comment":{"url":"https://api.github.com/repos/apache/pulsar/pulls/comments/234062046","pull_request_review_id":175623955,"id":234062046,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNDA2MjA0Ng==","diff_hunk":"@@ -537,6 +454,223 @@ private void stopFunction(String fullyQualifiedInstanceId, boolean restart) thro\n         }\n     }\n \n+    /**","path":"pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java","position":122,"original_position":122,"commit_id":"ef5db50bb71adb8202251622b556d15173c343b3","original_commit_id":"ef5db50bb71adb8202251622b556d15173c343b3","user":{"login":"jerrypeng","id":3613359,"node_id":"MDQ6VXNlcjM2MTMzNTk=","avatar_url":"https://avatars2.githubusercontent.com/u/3613359?v=4","gravatar_id":"","url":"https://api.github.com/users/jerrypeng","html_url":"https://github.com/jerrypeng","followers_url":"https://api.github.com/users/jerrypeng/followers","following_url":"https://api.github.com/users/jerrypeng/following{/other_user}","gists_url":"https://api.github.com/users/jerrypeng/gists{/gist_id}","starred_url":"https://api.github.com/users/jerrypeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jerrypeng/subscriptions","organizations_url":"https://api.github.com/users/jerrypeng/orgs","repos_url":"https://api.github.com/users/jerrypeng/repos","events_url":"https://api.github.com/users/jerrypeng/events{/privacy}","received_events_url":"https://api.github.com/users/jerrypeng/received_events","type":"User","site_admin":false},"body":"Can't really combine those two function since getFunctionInstanceStats returns the stats for instance with getFunctionStats returns stats overall and for all instances.  Different objects are returned.  What can be refactored / combined is the logic between the get stats functions and get status functions.  I didn't want to refactor the logic there since there are already many changes in this PR as it is.","created_at":"2018-11-16T01:05:07Z","updated_at":"2018-11-16T01:05:07Z","html_url":"https://github.com/apache/pulsar/pull/2994#discussion_r234062046","pull_request_url":"https://api.github.com/repos/apache/pulsar/pulls/2994","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/apache/pulsar/pulls/comments/234062046"},"html":{"href":"https://github.com/apache/pulsar/pull/2994#discussion_r234062046"},"pull_request":{"href":"https://api.github.com/repos/apache/pulsar/pulls/2994"}},"in_reply_to_id":234058511},"pull_request":{"url":"https://api.github.com/repos/apache/pulsar/pulls/2994","id":231348807,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMxMzQ4ODA3","html_url":"https://github.com/apache/pulsar/pull/2994","diff_url":"https://github.com/apache/pulsar/pull/2994.diff","patch_url":"https://github.com/apache/pulsar/pull/2994.patch","issue_url":"https://api.github.com/repos/apache/pulsar/issues/2994","number":2994,"state":"open","locked":false,"title":" cleaning up and improving function metrics","user":{"login":"jerrypeng","id":3613359,"node_id":"MDQ6VXNlcjM2MTMzNTk=","avatar_url":"https://avatars2.githubusercontent.com/u/3613359?v=4","gravatar_id":"","url":"https://api.github.com/users/jerrypeng","html_url":"https://github.com/jerrypeng","followers_url":"https://api.github.com/users/jerrypeng/followers","following_url":"https://api.github.com/users/jerrypeng/following{/other_user}","gists_url":"https://api.github.com/users/jerrypeng/gists{/gist_id}","starred_url":"https://api.github.com/users/jerrypeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jerrypeng/subscriptions","organizations_url":"https://api.github.com/users/jerrypeng/orgs","repos_url":"https://api.github.com/users/jerrypeng/repos","events_url":"https://api.github.com/users/jerrypeng/events{/privacy}","received_events_url":"https://api.github.com/users/jerrypeng/received_events","type":"User","site_admin":false},"body":"### Motivation\r\n\r\nCleaning up and improving metrics collection and presentation for functions\r\n\r\n### Modifications\r\n\r\n1. Add endpoints to get stats of function or function instances\r\n2. add function cli for stats\r\n2. redesigned MetricsData protobuf\r\n3. add overall aggregates stats for functions\r\n\r\nfor example:\r\n```\r\n./bin/pulsar-admin functions stats --name py-test\r\n{\r\n  \"receivedTotal\": 1000,\r\n  \"processedSuccessfullyTotal\": 1000,\r\n  \"systemExceptionsTotal\": 0,\r\n  \"userExceptionsTotal\": 0,\r\n  \"avgProcessLatency\": 0.06142544746398926,\r\n  \"lastInvocation\": 1542318672866,\r\n  \"instances\": [\r\n    {\r\n      \"instanceId\": 1,\r\n      \"metrics\": {\r\n        \"receivedTotal\": 500,\r\n        \"processedSuccessfullyTotal\": 500,\r\n        \"systemExceptionsTotal\": 0,\r\n        \"userExceptionsTotal\": 0,\r\n        \"avgProcessLatency\": 0.06087827682495117,\r\n        \"lastInvocation\": 1542318672866,\r\n        \"userMetrics\": {\r\n          \"user_metric_metrics_1_sum\": 1500.0,\r\n          \"user_metric_metrics_1_count\": 500.0,\r\n          \"user_metric_metrics_2_sum\": 7500.0,\r\n          \"user_metric_metrics_2_count\": 1000.0\r\n        }\r\n      }\r\n    },\r\n    {\r\n      \"instanceId\": 0,\r\n      \"metrics\": {\r\n        \"receivedTotal\": 500,\r\n        \"processedSuccessfullyTotal\": 500,\r\n        \"systemExceptionsTotal\": 0,\r\n        \"userExceptionsTotal\": 0,\r\n        \"avgProcessLatency\": 0.061972618103027344,\r\n        \"lastInvocation\": 1542318672766,\r\n        \"userMetrics\": {\r\n          \"user_metric_metrics_1_sum\": 1500.0,\r\n          \"user_metric_metrics_1_count\": 500.0,\r\n          \"user_metric_metrics_2_sum\": 7500.0,\r\n          \"user_metric_metrics_2_count\": 1000.0\r\n        }\r\n      }\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\nand for instances:\r\n\r\n```\r\n./bin/pulsar-admin functions stats --name test --instance-id 0\r\n{\r\n  \"receivedTotal\": 500,\r\n  \"processedSuccessfullyTotal\": 500,\r\n  \"systemExceptionsTotal\": 0,\r\n  \"userExceptionsTotal\": 0,\r\n  \"avgProcessLatency\": 0.06325435638427734,\r\n  \"lastInvocation\": 1542320665090,\r\n  \"userMetrics\": {\r\n    \"user_metric_metrics_1_sum\": 1500.0,\r\n    \"user_metric_metrics_1_count\": 500.0,\r\n    \"user_metric_metrics_2_sum\": 7500.0,\r\n    \"user_metric_metrics_2_count\": 1000.0\r\n  }\r\n}\r\n```\r\nGetting all function stats on worker:\r\n\r\n```\r\ncurl localhost:8080/admin/v2/worker-stats/functionsmetrics\r\n[\r\n  {\r\n    \"name\": \"public/default/test:0\",\r\n    \"metrics\": {\r\n      \"receivedTotal\": 0,\r\n      \"processedSuccessfullyTotal\": 0,\r\n      \"systemExceptionsTotal\": 0,\r\n      \"userExceptionsTotal\": 0,\r\n      \"avgProcessLatency\": 0.0,\r\n      \"lastInvocation\": 0,\r\n      \"userMetrics\": {}\r\n    }\r\n  },\r\n  {\r\n    \"name\": \"public/default/py-test:1\",\r\n    \"metrics\": {\r\n      \"receivedTotal\": 500,\r\n      \"processedSuccessfullyTotal\": 500,\r\n      \"systemExceptionsTotal\": 0,\r\n      \"userExceptionsTotal\": 0,\r\n      \"avgProcessLatency\": 0.059513092041015625,\r\n      \"lastInvocation\": 1542320665189,\r\n      \"userMetrics\": {\r\n        \"user_metric_metrics_1_sum\": 1500.0,\r\n        \"user_metric_metrics_1_count\": 500.0,\r\n        \"user_metric_metrics_2_sum\": 7500.0,\r\n        \"user_metric_metrics_2_count\": 1000.0\r\n      }\r\n    }\r\n  }\r\n]\r\n```\r\n\r\nNext step in improving metrics, will be to add some system stats that are time windowed\r\n\r\nFYI this PR overlaps with https://github.com/apache/pulsar/pull/2982","created_at":"2018-11-15T22:01:20Z","updated_at":"2018-11-16T01:05:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a73228b10f615da9b3dded0cf552256d622f3ea2","assignee":{"login":"jerrypeng","id":3613359,"node_id":"MDQ6VXNlcjM2MTMzNTk=","avatar_url":"https://avatars2.githubusercontent.com/u/3613359?v=4","gravatar_id":"","url":"https://api.github.com/users/jerrypeng","html_url":"https://github.com/jerrypeng","followers_url":"https://api.github.com/users/jerrypeng/followers","following_url":"https://api.github.com/users/jerrypeng/following{/other_user}","gists_url":"https://api.github.com/users/jerrypeng/gists{/gist_id}","starred_url":"https://api.github.com/users/jerrypeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jerrypeng/subscriptions","organizations_url":"https://api.github.com/users/jerrypeng/orgs","repos_url":"https://api.github.com/users/jerrypeng/repos","events_url":"https://api.github.com/users/jerrypeng/events{/privacy}","received_events_url":"https://api.github.com/users/jerrypeng/received_events","type":"User","site_admin":false},"assignees":[{"login":"jerrypeng","id":3613359,"node_id":"MDQ6VXNlcjM2MTMzNTk=","avatar_url":"https://avatars2.githubusercontent.com/u/3613359?v=4","gravatar_id":"","url":"https://api.github.com/users/jerrypeng","html_url":"https://github.com/jerrypeng","followers_url":"https://api.github.com/users/jerrypeng/followers","following_url":"https://api.github.com/users/jerrypeng/following{/other_user}","gists_url":"https://api.github.com/users/jerrypeng/gists{/gist_id}","starred_url":"https://api.github.com/users/jerrypeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jerrypeng/subscriptions","organizations_url":"https://api.github.com/users/jerrypeng/orgs","repos_url":"https://api.github.com/users/jerrypeng/repos","events_url":"https://api.github.com/users/jerrypeng/events{/privacy}","received_events_url":"https://api.github.com/users/jerrypeng/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"sijie","id":1217863,"node_id":"MDQ6VXNlcjEyMTc4NjM=","avatar_url":"https://avatars2.githubusercontent.com/u/1217863?v=4","gravatar_id":"","url":"https://api.github.com/users/sijie","html_url":"https://github.com/sijie","followers_url":"https://api.github.com/users/sijie/followers","following_url":"https://api.github.com/users/sijie/following{/other_user}","gists_url":"https://api.github.com/users/sijie/gists{/gist_id}","starred_url":"https://api.github.com/users/sijie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sijie/subscriptions","organizations_url":"https://api.github.com/users/sijie/orgs","repos_url":"https://api.github.com/users/sijie/repos","events_url":"https://api.github.com/users/sijie/events{/privacy}","received_events_url":"https://api.github.com/users/sijie/received_events","type":"User","site_admin":false},{"login":"rdhabalia","id":2898254,"node_id":"MDQ6VXNlcjI4OTgyNTQ=","avatar_url":"https://avatars2.githubusercontent.com/u/2898254?v=4","gravatar_id":"","url":"https://api.github.com/users/rdhabalia","html_url":"https://github.com/rdhabalia","followers_url":"https://api.github.com/users/rdhabalia/followers","following_url":"https://api.github.com/users/rdhabalia/following{/other_user}","gists_url":"https://api.github.com/users/rdhabalia/gists{/gist_id}","starred_url":"https://api.github.com/users/rdhabalia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rdhabalia/subscriptions","organizations_url":"https://api.github.com/users/rdhabalia/orgs","repos_url":"https://api.github.com/users/rdhabalia/repos","events_url":"https://api.github.com/users/rdhabalia/events{/privacy}","received_events_url":"https://api.github.com/users/rdhabalia/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":853313264,"node_id":"MDU6TGFiZWw4NTMzMTMyNjQ=","url":"https://api.github.com/repos/apache/pulsar/labels/component/functions","name":"component/functions","color":"1d76db","default":false}],"milestone":{"url":"https://api.github.com/repos/apache/pulsar/milestones/18","html_url":"https://github.com/apache/pulsar/milestone/18","labels_url":"https://api.github.com/repos/apache/pulsar/milestones/18/labels","id":3603038,"node_id":"MDk6TWlsZXN0b25lMzYwMzAzOA==","number":18,"title":"2.3.0","description":"","creator":{"login":"merlimat","id":62500,"node_id":"MDQ6VXNlcjYyNTAw","avatar_url":"https://avatars2.githubusercontent.com/u/62500?v=4","gravatar_id":"","url":"https://api.github.com/users/merlimat","html_url":"https://github.com/merlimat","followers_url":"https://api.github.com/users/merlimat/followers","following_url":"https://api.github.com/users/merlimat/following{/other_user}","gists_url":"https://api.github.com/users/merlimat/gists{/gist_id}","starred_url":"https://api.github.com/users/merlimat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/merlimat/subscriptions","organizations_url":"https://api.github.com/users/merlimat/orgs","repos_url":"https://api.github.com/users/merlimat/repos","events_url":"https://api.github.com/users/merlimat/events{/privacy}","received_events_url":"https://api.github.com/users/merlimat/received_events","type":"User","site_admin":false},"open_issues":47,"closed_issues":130,"state":"open","created_at":"2018-08-28T07:03:59Z","updated_at":"2018-11-15T22:27:17Z","due_on":"2018-11-30T08:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/apache/pulsar/pulls/2994/commits","review_comments_url":"https://api.github.com/repos/apache/pulsar/pulls/2994/comments","review_comment_url":"https://api.github.com/repos/apache/pulsar/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/pulsar/issues/2994/comments","statuses_url":"https://api.github.com/repos/apache/pulsar/statuses/ef5db50bb71adb8202251622b556d15173c343b3","head":{"label":"jerrypeng:cleaning_up_function_metrics","ref":"cleaning_up_function_metrics","sha":"ef5db50bb71adb8202251622b556d15173c343b3","user":{"login":"jerrypeng","id":3613359,"node_id":"MDQ6VXNlcjM2MTMzNTk=","avatar_url":"https://avatars2.githubusercontent.com/u/3613359?v=4","gravatar_id":"","url":"https://api.github.com/users/jerrypeng","html_url":"https://github.com/jerrypeng","followers_url":"https://api.github.com/users/jerrypeng/followers","following_url":"https://api.github.com/users/jerrypeng/following{/other_user}","gists_url":"https://api.github.com/users/jerrypeng/gists{/gist_id}","starred_url":"https://api.github.com/users/jerrypeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jerrypeng/subscriptions","organizations_url":"https://api.github.com/users/jerrypeng/orgs","repos_url":"https://api.github.com/users/jerrypeng/repos","events_url":"https://api.github.com/users/jerrypeng/events{/privacy}","received_events_url":"https://api.github.com/users/jerrypeng/received_events","type":"User","site_admin":false},"repo":{"id":108588215,"node_id":"MDEwOlJlcG9zaXRvcnkxMDg1ODgyMTU=","name":"incubator-pulsar","full_name":"jerrypeng/incubator-pulsar","private":false,"owner":{"login":"jerrypeng","id":3613359,"node_id":"MDQ6VXNlcjM2MTMzNTk=","avatar_url":"https://avatars2.githubusercontent.com/u/3613359?v=4","gravatar_id":"","url":"https://api.github.com/users/jerrypeng","html_url":"https://github.com/jerrypeng","followers_url":"https://api.github.com/users/jerrypeng/followers","following_url":"https://api.github.com/users/jerrypeng/following{/other_user}","gists_url":"https://api.github.com/users/jerrypeng/gists{/gist_id}","starred_url":"https://api.github.com/users/jerrypeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jerrypeng/subscriptions","organizations_url":"https://api.github.com/users/jerrypeng/orgs","repos_url":"https://api.github.com/users/jerrypeng/repos","events_url":"https://api.github.com/users/jerrypeng/events{/privacy}","received_events_url":"https://api.github.com/users/jerrypeng/received_events","type":"User","site_admin":false},"html_url":"https://github.com/jerrypeng/incubator-pulsar","description":"Pulsar - distributed pub-sub messaging system","fork":true,"url":"https://api.github.com/repos/jerrypeng/incubator-pulsar","forks_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/forks","keys_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/teams","hooks_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/hooks","issue_events_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/issues/events{/number}","events_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/events","assignees_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/assignees{/user}","branches_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/branches{/branch}","tags_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/tags","blobs_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/git/refs{/sha}","trees_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/statuses/{sha}","languages_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/languages","stargazers_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/stargazers","contributors_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/contributors","subscribers_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/subscribers","subscription_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/subscription","commits_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/commits{/sha}","git_commits_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/git/commits{/sha}","comments_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/comments{/number}","issue_comment_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/issues/comments{/number}","contents_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/contents/{+path}","compare_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/merges","archive_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/downloads","issues_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/issues{/number}","pulls_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/pulls{/number}","milestones_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/milestones{/number}","notifications_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/labels{/name}","releases_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/releases{/id}","deployments_url":"https://api.github.com/repos/jerrypeng/incubator-pulsar/deployments","created_at":"2017-10-27T19:42:17Z","updated_at":"2018-10-27T20:35:51Z","pushed_at":"2018-11-15T23:37:54Z","git_url":"git://github.com/jerrypeng/incubator-pulsar.git","ssh_url":"git@github.com:jerrypeng/incubator-pulsar.git","clone_url":"https://github.com/jerrypeng/incubator-pulsar.git","svn_url":"https://github.com/jerrypeng/incubator-pulsar","homepage":"https://pulsar.incubator.apache.org","size":43487,"stargazers_count":0,"watchers_count":0,"language":"Java","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":{"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":"apache:master","ref":"master","sha":"579e0dc74039c081301662e5fd55209c1a4abe5c","user":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":62117812,"node_id":"MDEwOlJlcG9zaXRvcnk2MjExNzgxMg==","name":"pulsar","full_name":"apache/pulsar","private":false,"owner":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/apache/pulsar","description":"Apache Pulsar - distributed pub-sub messaging system","fork":false,"url":"https://api.github.com/repos/apache/pulsar","forks_url":"https://api.github.com/repos/apache/pulsar/forks","keys_url":"https://api.github.com/repos/apache/pulsar/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/pulsar/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/pulsar/teams","hooks_url":"https://api.github.com/repos/apache/pulsar/hooks","issue_events_url":"https://api.github.com/repos/apache/pulsar/issues/events{/number}","events_url":"https://api.github.com/repos/apache/pulsar/events","assignees_url":"https://api.github.com/repos/apache/pulsar/assignees{/user}","branches_url":"https://api.github.com/repos/apache/pulsar/branches{/branch}","tags_url":"https://api.github.com/repos/apache/pulsar/tags","blobs_url":"https://api.github.com/repos/apache/pulsar/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/pulsar/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/pulsar/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/pulsar/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/pulsar/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/pulsar/languages","stargazers_url":"https://api.github.com/repos/apache/pulsar/stargazers","contributors_url":"https://api.github.com/repos/apache/pulsar/contributors","subscribers_url":"https://api.github.com/repos/apache/pulsar/subscribers","subscription_url":"https://api.github.com/repos/apache/pulsar/subscription","commits_url":"https://api.github.com/repos/apache/pulsar/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/pulsar/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/pulsar/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/pulsar/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/pulsar/contents/{+path}","compare_url":"https://api.github.com/repos/apache/pulsar/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/pulsar/merges","archive_url":"https://api.github.com/repos/apache/pulsar/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/pulsar/downloads","issues_url":"https://api.github.com/repos/apache/pulsar/issues{/number}","pulls_url":"https://api.github.com/repos/apache/pulsar/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/pulsar/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/pulsar/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/pulsar/labels{/name}","releases_url":"https://api.github.com/repos/apache/pulsar/releases{/id}","deployments_url":"https://api.github.com/repos/apache/pulsar/deployments","created_at":"2016-06-28T07:00:03Z","updated_at":"2018-11-16T00:37:38Z","pushed_at":"2018-11-16T00:58:11Z","git_url":"git://github.com/apache/pulsar.git","ssh_url":"git@github.com:apache/pulsar.git","clone_url":"https://github.com/apache/pulsar.git","svn_url":"https://github.com/apache/pulsar","homepage":"https://pulsar.apache.org","size":66227,"stargazers_count":2602,"watchers_count":2602,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":534,"mirror_url":null,"archived":false,"open_issues_count":228,"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":534,"open_issues":228,"watchers":2602,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/pulsar/pulls/2994"},"html":{"href":"https://github.com/apache/pulsar/pull/2994"},"issue":{"href":"https://api.github.com/repos/apache/pulsar/issues/2994"},"comments":{"href":"https://api.github.com/repos/apache/pulsar/issues/2994/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/pulsar/pulls/2994/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/pulsar/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/pulsar/pulls/2994/commits"},"statuses":{"href":"https://api.github.com/repos/apache/pulsar/statuses/ef5db50bb71adb8202251622b556d15173c343b3"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jerrypeng"}}