{"action":"closed","number":1387,"pull_request":{"url":"https://api.github.com/repos/dmlc/tvm/pulls/1387","id":199613913,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk5NjEzOTEz","html_url":"https://github.com/dmlc/tvm/pull/1387","diff_url":"https://github.com/dmlc/tvm/pull/1387.diff","patch_url":"https://github.com/dmlc/tvm/pull/1387.patch","issue_url":"https://api.github.com/repos/dmlc/tvm/issues/1387","number":1387,"state":"closed","locked":false,"title":"[RPC] android process isolation/watchdog","user":{"login":"eqy","id":2239616,"node_id":"MDQ6VXNlcjIyMzk2MTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2239616?v=4","gravatar_id":"","url":"https://api.github.com/users/eqy","html_url":"https://github.com/eqy","followers_url":"https://api.github.com/users/eqy/followers","following_url":"https://api.github.com/users/eqy/following{/other_user}","gists_url":"https://api.github.com/users/eqy/gists{/gist_id}","starred_url":"https://api.github.com/users/eqy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eqy/subscriptions","organizations_url":"https://api.github.com/users/eqy/orgs","repos_url":"https://api.github.com/users/eqy/repos","events_url":"https://api.github.com/users/eqy/events{/privacy}","received_events_url":"https://api.github.com/users/eqy/received_events","type":"User","site_admin":false},"body":"Summary: add more robustness to android RPC to facilitate automated schedule optimization via autotvm.\r\n\r\nPreviously the android RPC app would crash if passed a bad schedule as the RPC server ran in the same process as the app (different thread). This PR moves the RPC service to an android service that runs in a separate process to provide process isolation.\r\n\r\nThere is also now a watchdog which periodically polls the RPC service to check if it is alive. The watchdog starts a new RPC service if a bad schedule crashed the service.\r\n\r\nThe watchdog also instructs the RPC service to check if it is currently in a session that has timed out (currently a hard timeout of 30 seconds is enforced). The RPC service kills itself in this case; the app will wait for a respawn from the watchdog. This step is necessary as some bad schedules have been found to leave OpenCL in a bad state where the entire process must be completely restarted while locking up the RPC service.","created_at":"2018-07-05T23:51:53Z","updated_at":"2018-07-08T01:51:19Z","closed_at":"2018-07-08T01:51:19Z","merged_at":"2018-07-08T01:51:19Z","merge_commit_sha":"275142ce069873909f33ccfa9517122b6a6230b8","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/dmlc/tvm/pulls/1387/commits","review_comments_url":"https://api.github.com/repos/dmlc/tvm/pulls/1387/comments","review_comment_url":"https://api.github.com/repos/dmlc/tvm/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dmlc/tvm/issues/1387/comments","statuses_url":"https://api.github.com/repos/dmlc/tvm/statuses/964102cba574894ee26671bcb9a4e55d83ec0644","head":{"label":"eqy:eqy-android-watchdog","ref":"eqy-android-watchdog","sha":"964102cba574894ee26671bcb9a4e55d83ec0644","user":{"login":"eqy","id":2239616,"node_id":"MDQ6VXNlcjIyMzk2MTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2239616?v=4","gravatar_id":"","url":"https://api.github.com/users/eqy","html_url":"https://github.com/eqy","followers_url":"https://api.github.com/users/eqy/followers","following_url":"https://api.github.com/users/eqy/following{/other_user}","gists_url":"https://api.github.com/users/eqy/gists{/gist_id}","starred_url":"https://api.github.com/users/eqy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eqy/subscriptions","organizations_url":"https://api.github.com/users/eqy/orgs","repos_url":"https://api.github.com/users/eqy/repos","events_url":"https://api.github.com/users/eqy/events{/privacy}","received_events_url":"https://api.github.com/users/eqy/received_events","type":"User","site_admin":false},"repo":{"id":109762891,"node_id":"MDEwOlJlcG9zaXRvcnkxMDk3NjI4OTE=","name":"tvm","full_name":"eqy/tvm","owner":{"login":"eqy","id":2239616,"node_id":"MDQ6VXNlcjIyMzk2MTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2239616?v=4","gravatar_id":"","url":"https://api.github.com/users/eqy","html_url":"https://github.com/eqy","followers_url":"https://api.github.com/users/eqy/followers","following_url":"https://api.github.com/users/eqy/following{/other_user}","gists_url":"https://api.github.com/users/eqy/gists{/gist_id}","starred_url":"https://api.github.com/users/eqy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eqy/subscriptions","organizations_url":"https://api.github.com/users/eqy/orgs","repos_url":"https://api.github.com/users/eqy/repos","events_url":"https://api.github.com/users/eqy/events{/privacy}","received_events_url":"https://api.github.com/users/eqy/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/eqy/tvm","description":"End to end Tensor IR/DSL stack for deploying deep learning workloads to hardwares","fork":true,"url":"https://api.github.com/repos/eqy/tvm","forks_url":"https://api.github.com/repos/eqy/tvm/forks","keys_url":"https://api.github.com/repos/eqy/tvm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eqy/tvm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eqy/tvm/teams","hooks_url":"https://api.github.com/repos/eqy/tvm/hooks","issue_events_url":"https://api.github.com/repos/eqy/tvm/issues/events{/number}","events_url":"https://api.github.com/repos/eqy/tvm/events","assignees_url":"https://api.github.com/repos/eqy/tvm/assignees{/user}","branches_url":"https://api.github.com/repos/eqy/tvm/branches{/branch}","tags_url":"https://api.github.com/repos/eqy/tvm/tags","blobs_url":"https://api.github.com/repos/eqy/tvm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eqy/tvm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eqy/tvm/git/refs{/sha}","trees_url":"https://api.github.com/repos/eqy/tvm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eqy/tvm/statuses/{sha}","languages_url":"https://api.github.com/repos/eqy/tvm/languages","stargazers_url":"https://api.github.com/repos/eqy/tvm/stargazers","contributors_url":"https://api.github.com/repos/eqy/tvm/contributors","subscribers_url":"https://api.github.com/repos/eqy/tvm/subscribers","subscription_url":"https://api.github.com/repos/eqy/tvm/subscription","commits_url":"https://api.github.com/repos/eqy/tvm/commits{/sha}","git_commits_url":"https://api.github.com/repos/eqy/tvm/git/commits{/sha}","comments_url":"https://api.github.com/repos/eqy/tvm/comments{/number}","issue_comment_url":"https://api.github.com/repos/eqy/tvm/issues/comments{/number}","contents_url":"https://api.github.com/repos/eqy/tvm/contents/{+path}","compare_url":"https://api.github.com/repos/eqy/tvm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eqy/tvm/merges","archive_url":"https://api.github.com/repos/eqy/tvm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eqy/tvm/downloads","issues_url":"https://api.github.com/repos/eqy/tvm/issues{/number}","pulls_url":"https://api.github.com/repos/eqy/tvm/pulls{/number}","milestones_url":"https://api.github.com/repos/eqy/tvm/milestones{/number}","notifications_url":"https://api.github.com/repos/eqy/tvm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eqy/tvm/labels{/name}","releases_url":"https://api.github.com/repos/eqy/tvm/releases{/id}","deployments_url":"https://api.github.com/repos/eqy/tvm/deployments","created_at":"2017-11-06T23:40:07Z","updated_at":"2018-07-06T04:39:18Z","pushed_at":"2018-07-06T18:34:31Z","git_url":"git://github.com/eqy/tvm.git","ssh_url":"git@github.com:eqy/tvm.git","clone_url":"https://github.com/eqy/tvm.git","svn_url":"https://github.com/eqy/tvm","homepage":"","size":5591,"stargazers_count":0,"watchers_count":0,"language":"C++","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":"dmlc:master","ref":"master","sha":"106bbb8d2f119ce7673b25afc046edd8262dcad1","user":{"login":"dmlc","id":11508361,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNTA4MzYx","avatar_url":"https://avatars2.githubusercontent.com/u/11508361?v=4","gravatar_id":"","url":"https://api.github.com/users/dmlc","html_url":"https://github.com/dmlc","followers_url":"https://api.github.com/users/dmlc/followers","following_url":"https://api.github.com/users/dmlc/following{/other_user}","gists_url":"https://api.github.com/users/dmlc/gists{/gist_id}","starred_url":"https://api.github.com/users/dmlc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmlc/subscriptions","organizations_url":"https://api.github.com/users/dmlc/orgs","repos_url":"https://api.github.com/users/dmlc/repos","events_url":"https://api.github.com/users/dmlc/events{/privacy}","received_events_url":"https://api.github.com/users/dmlc/received_events","type":"Organization","site_admin":false},"repo":{"id":70746484,"node_id":"MDEwOlJlcG9zaXRvcnk3MDc0NjQ4NA==","name":"tvm","full_name":"dmlc/tvm","owner":{"login":"dmlc","id":11508361,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNTA4MzYx","avatar_url":"https://avatars2.githubusercontent.com/u/11508361?v=4","gravatar_id":"","url":"https://api.github.com/users/dmlc","html_url":"https://github.com/dmlc","followers_url":"https://api.github.com/users/dmlc/followers","following_url":"https://api.github.com/users/dmlc/following{/other_user}","gists_url":"https://api.github.com/users/dmlc/gists{/gist_id}","starred_url":"https://api.github.com/users/dmlc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmlc/subscriptions","organizations_url":"https://api.github.com/users/dmlc/orgs","repos_url":"https://api.github.com/users/dmlc/repos","events_url":"https://api.github.com/users/dmlc/events{/privacy}","received_events_url":"https://api.github.com/users/dmlc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dmlc/tvm","description":"Open deep learning compiler stack for cpu, gpu and specialized accelerators","fork":false,"url":"https://api.github.com/repos/dmlc/tvm","forks_url":"https://api.github.com/repos/dmlc/tvm/forks","keys_url":"https://api.github.com/repos/dmlc/tvm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dmlc/tvm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dmlc/tvm/teams","hooks_url":"https://api.github.com/repos/dmlc/tvm/hooks","issue_events_url":"https://api.github.com/repos/dmlc/tvm/issues/events{/number}","events_url":"https://api.github.com/repos/dmlc/tvm/events","assignees_url":"https://api.github.com/repos/dmlc/tvm/assignees{/user}","branches_url":"https://api.github.com/repos/dmlc/tvm/branches{/branch}","tags_url":"https://api.github.com/repos/dmlc/tvm/tags","blobs_url":"https://api.github.com/repos/dmlc/tvm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dmlc/tvm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dmlc/tvm/git/refs{/sha}","trees_url":"https://api.github.com/repos/dmlc/tvm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dmlc/tvm/statuses/{sha}","languages_url":"https://api.github.com/repos/dmlc/tvm/languages","stargazers_url":"https://api.github.com/repos/dmlc/tvm/stargazers","contributors_url":"https://api.github.com/repos/dmlc/tvm/contributors","subscribers_url":"https://api.github.com/repos/dmlc/tvm/subscribers","subscription_url":"https://api.github.com/repos/dmlc/tvm/subscription","commits_url":"https://api.github.com/repos/dmlc/tvm/commits{/sha}","git_commits_url":"https://api.github.com/repos/dmlc/tvm/git/commits{/sha}","comments_url":"https://api.github.com/repos/dmlc/tvm/comments{/number}","issue_comment_url":"https://api.github.com/repos/dmlc/tvm/issues/comments{/number}","contents_url":"https://api.github.com/repos/dmlc/tvm/contents/{+path}","compare_url":"https://api.github.com/repos/dmlc/tvm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dmlc/tvm/merges","archive_url":"https://api.github.com/repos/dmlc/tvm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dmlc/tvm/downloads","issues_url":"https://api.github.com/repos/dmlc/tvm/issues{/number}","pulls_url":"https://api.github.com/repos/dmlc/tvm/pulls{/number}","milestones_url":"https://api.github.com/repos/dmlc/tvm/milestones{/number}","notifications_url":"https://api.github.com/repos/dmlc/tvm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dmlc/tvm/labels{/name}","releases_url":"https://api.github.com/repos/dmlc/tvm/releases{/id}","deployments_url":"https://api.github.com/repos/dmlc/tvm/deployments","created_at":"2016-10-12T22:20:28Z","updated_at":"2018-07-07T18:17:25Z","pushed_at":"2018-07-08T01:51:19Z","git_url":"git://github.com/dmlc/tvm.git","ssh_url":"git@github.com:dmlc/tvm.git","clone_url":"https://github.com/dmlc/tvm.git","svn_url":"https://github.com/dmlc/tvm","homepage":"https://tvm.ai","size":5566,"stargazers_count":1616,"watchers_count":1616,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":348,"mirror_url":null,"archived":false,"open_issues_count":38,"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":348,"open_issues":38,"watchers":1616,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dmlc/tvm/pulls/1387"},"html":{"href":"https://github.com/dmlc/tvm/pull/1387"},"issue":{"href":"https://api.github.com/repos/dmlc/tvm/issues/1387"},"comments":{"href":"https://api.github.com/repos/dmlc/tvm/issues/1387/comments"},"review_comments":{"href":"https://api.github.com/repos/dmlc/tvm/pulls/1387/comments"},"review_comment":{"href":"https://api.github.com/repos/dmlc/tvm/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dmlc/tvm/pulls/1387/commits"},"statuses":{"href":"https://api.github.com/repos/dmlc/tvm/statuses/964102cba574894ee26671bcb9a4e55d83ec0644"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"tqchen","id":2577440,"node_id":"MDQ6VXNlcjI1Nzc0NDA=","avatar_url":"https://avatars3.githubusercontent.com/u/2577440?v=4","gravatar_id":"","url":"https://api.github.com/users/tqchen","html_url":"https://github.com/tqchen","followers_url":"https://api.github.com/users/tqchen/followers","following_url":"https://api.github.com/users/tqchen/following{/other_user}","gists_url":"https://api.github.com/users/tqchen/gists{/gist_id}","starred_url":"https://api.github.com/users/tqchen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tqchen/subscriptions","organizations_url":"https://api.github.com/users/tqchen/orgs","repos_url":"https://api.github.com/users/tqchen/repos","events_url":"https://api.github.com/users/tqchen/events{/privacy}","received_events_url":"https://api.github.com/users/tqchen/received_events","type":"User","site_admin":false},"comments":2,"review_comments":0,"maintainer_can_modify":false,"commits":9,"additions":242,"deletions":48,"changed_files":8}}
{"actor":{"display_login":"tqchen"}}