{"action":"created","comment":{"url":"https://api.github.com/repos/amino-os/Amino.Run/pulls/comments/305548451","pull_request_review_id":264461448,"id":305548451,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMwNTU0ODQ1MQ==","diff_hunk":"@@ -28,41 +34,180 @@\n  * @author iyzhang\n  */\n public class KernelClient {\n+    private static final int MIN_METRIC_POLL_PERIOD_MS = 1000; /* Minimum metrics poll period */\n+    private static final int MAX_METRIC_POLL_PERIOD_MS = 512000; /* Maximum metrics poll period */\n+    private static final int STEP_SIZE_IN_BYTES = 1024; /* Step size in bytes */\n+    /* Random byte array used to send in heartbeats */\n+    private static final byte[] randomBytes = new byte[STEP_SIZE_IN_BYTES];\n+\n+    static {\n+        new Random().nextBytes(randomBytes);\n+    }\n+\n+    /* Data holder class used in heartbeats */\n+    public static class RandomData implements Serializable {\n+        private transient int len = STEP_SIZE_IN_BYTES; /* length of data to be sent to server */\n+\n+        private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException {\n+            s.writeInt(len);\n+            for (int i = 0; i < len; i += STEP_SIZE_IN_BYTES) {\n+                /* Write the same byte array again as this data is useless on receiver end */\n+                s.write(randomBytes);\n+            }\n+        }\n+\n+        private void readObject(java.io.ObjectInputStream s)\n+                throws java.io.IOException, ClassNotFoundException {\n+            len = s.readInt();\n+            for (int i = 0; i < len; i += STEP_SIZE_IN_BYTES) {\n+                /* Received data is useless. Just overwrites to same byte array */\n+                s.read(randomBytes);\n+            }\n+        }\n+    }\n+\n     /** Stub for the OMS */\n     private OMSServer oms;\n-    /** List of hostnames matched to kernel server stubs */\n-    private Hashtable<InetSocketAddress, KernelServer> servers;\n+\n+    /* Maximum number of continuous heartbeat miss allowed */\n+    private static final int MAX_HEARTBEAT_MISS_TIMES = 3;\n+\n+    /* Class to hold remote kernel server info. This class is accessible only within this outer class(KernelClient) */\n+    private final class KernelServerInfo {\n+        private InetSocketAddress serverAddress; /* Host address of kernel server */\n+        private KernelServer remoteRef; /* Remote reference to the kernel server */\n+        /* Below reference counts are used to remove a server when it fails to send heartbeats for\n+        MAX_HEARTBEAT_MISS_ALLOWED times continuously */\n+        /* Global reference count is incremented whenever heartbeat is attempted */\n+        private int refCount;\n+        private int refCountOnHeartBeat; /* Reference count upon successful heartbeats */\n+\n+        /* Minimum samples to consider data rates as consistent. */\n+        private static final int MIN_STABLE_DATA_RATE_TIMES = 10;\n+        private int stableDataRateTimes; /* Number of continuous stable data transfer rates */\n+        private RandomData data; /* Amount of random data sent to server in heartbeats */\n+\n+        private int metricPollPeriod = MIN_METRIC_POLL_PERIOD_MS; /* Poll period */\n+        private NodeMetric metric; /* Node metric to server */\n+        private ResettableTimer metricsTimer; /* Metric timer for the server */\n+\n+        private KernelServerInfo(\n+                InetSocketAddress serverAddress, KernelServer remoteRef, final NodeMetric metric) {\n+            this.serverAddress = serverAddress;\n+            this.remoteRef = remoteRef;\n+            this.metric = metric;\n+            data = new RandomData();\n+            metricsTimer =\n+                    new ResettableTimer(\n+                            new TimerTask() {\n+                                public void run() {\n+                                    measureMetrics(KernelServerInfo.this);\n+                                }\n+                            },\n+                            metricPollPeriod);\n+            metricsTimer.start();\n+        }\n+    }\n+\n+    /** Map of remote kernel server hostname to their kernel server info */\n+    private ConcurrentHashMap<InetSocketAddress, KernelServerInfo> servers;\n+\n+    /* Map of remote kernel server hostname to their metrics. It is maintained independent from servers map, so that\n+    this map can be serialized and sent to OMS as is */\n+    private ConcurrentHashMap<InetSocketAddress, NodeMetric> metrics;\n \n     private static final Logger logger = Logger.getLogger(KernelClient.class.getName());\n \n+    public ConcurrentHashMap<InetSocketAddress, NodeMetric> getMetrics() {\n+        return metrics;\n+    }\n+\n     /**\n-     * Add a host to the list of hosts that we've contacted\n+     * Adds remote kernel server information to cache for the given host\n      *\n      * @param host\n      */\n-    private KernelServer addHost(InetSocketAddress host) {\n+    private KernelServerInfo addHost(InetSocketAddress host) {\n         try {\n             Registry registry = LocateRegistry.getRegistry(host.getHostName(), host.getPort());\n             KernelServer server = (KernelServer) registry.lookup(\"io.amino.run.kernelserver\");\n-            servers.put(host, server);\n-            return server;\n+            NodeMetric metric = new NodeMetric();\n+            KernelServerInfo serverInfo = new KernelServerInfo(host, server, metric);\n+            servers.put(host, serverInfo);\n+            metrics.put(host, metric);","path":"core/src/main/java/amino/run/kernel/client/KernelClient.java","position":133,"original_position":133,"commit_id":"6c2fee73ca05f819502c1ed4558f555c7079e81b","original_commit_id":"6c2fee73ca05f819502c1ed4558f555c7079e81b","user":{"login":"quinton-hoole","id":43647096,"node_id":"MDQ6VXNlcjQzNjQ3MDk2","avatar_url":"https://avatars0.githubusercontent.com/u/43647096?v=4","gravatar_id":"","url":"https://api.github.com/users/quinton-hoole","html_url":"https://github.com/quinton-hoole","followers_url":"https://api.github.com/users/quinton-hoole/followers","following_url":"https://api.github.com/users/quinton-hoole/following{/other_user}","gists_url":"https://api.github.com/users/quinton-hoole/gists{/gist_id}","starred_url":"https://api.github.com/users/quinton-hoole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quinton-hoole/subscriptions","organizations_url":"https://api.github.com/users/quinton-hoole/orgs","repos_url":"https://api.github.com/users/quinton-hoole/repos","events_url":"https://api.github.com/users/quinton-hoole/events{/privacy}","received_events_url":"https://api.github.com/users/quinton-hoole/received_events","type":"User","site_admin":false},"body":"See above comment.  Merging would remove this duplication.","created_at":"2019-07-19T23:00:41Z","updated_at":"2019-07-19T23:00:41Z","html_url":"https://github.com/amino-os/Amino.Run/pull/794#discussion_r305548451","pull_request_url":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/amino-os/Amino.Run/pulls/comments/305548451"},"html":{"href":"https://github.com/amino-os/Amino.Run/pull/794#discussion_r305548451"},"pull_request":{"href":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794"}}},"pull_request":{"url":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794","id":284907405,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjg0OTA3NDA1","html_url":"https://github.com/amino-os/Amino.Run/pull/794","diff_url":"https://github.com/amino-os/Amino.Run/pull/794.diff","patch_url":"https://github.com/amino-os/Amino.Run/pull/794.patch","issue_url":"https://api.github.com/repos/amino-os/Amino.Run/issues/794","number":794,"state":"open","locked":false,"title":"[PR-1]Node level metrics[latency and data rate] measurement on Kernel Servers","user":{"login":"VenuReddy2103","id":35334869,"node_id":"MDQ6VXNlcjM1MzM0ODY5","avatar_url":"https://avatars1.githubusercontent.com/u/35334869?v=4","gravatar_id":"","url":"https://api.github.com/users/VenuReddy2103","html_url":"https://github.com/VenuReddy2103","followers_url":"https://api.github.com/users/VenuReddy2103/followers","following_url":"https://api.github.com/users/VenuReddy2103/following{/other_user}","gists_url":"https://api.github.com/users/VenuReddy2103/gists{/gist_id}","starred_url":"https://api.github.com/users/VenuReddy2103/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VenuReddy2103/subscriptions","organizations_url":"https://api.github.com/users/VenuReddy2103/orgs","repos_url":"https://api.github.com/users/VenuReddy2103/repos","events_url":"https://api.github.com/users/VenuReddy2103/events{/privacy}","received_events_url":"https://api.github.com/users/VenuReddy2103/received_events","type":"User","site_admin":false},"body":"This PR is to measure the latency and data rate from each node to each other node available and give these metrics to OMS in existing heartbeat between kernel server and OMS. These received metrics handling on OMS is not part of this PR.\r\nThis PR is same as old PR #742. Just raised based on new fork and closing the old PR.","created_at":"2019-06-04T10:20:39Z","updated_at":"2019-07-19T23:00:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4121bdaacbea052e8c9c51348672cbedd9a37fa1","assignee":{"login":"VenuReddy2103","id":35334869,"node_id":"MDQ6VXNlcjM1MzM0ODY5","avatar_url":"https://avatars1.githubusercontent.com/u/35334869?v=4","gravatar_id":"","url":"https://api.github.com/users/VenuReddy2103","html_url":"https://github.com/VenuReddy2103","followers_url":"https://api.github.com/users/VenuReddy2103/followers","following_url":"https://api.github.com/users/VenuReddy2103/following{/other_user}","gists_url":"https://api.github.com/users/VenuReddy2103/gists{/gist_id}","starred_url":"https://api.github.com/users/VenuReddy2103/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VenuReddy2103/subscriptions","organizations_url":"https://api.github.com/users/VenuReddy2103/orgs","repos_url":"https://api.github.com/users/VenuReddy2103/repos","events_url":"https://api.github.com/users/VenuReddy2103/events{/privacy}","received_events_url":"https://api.github.com/users/VenuReddy2103/received_events","type":"User","site_admin":false},"assignees":[{"login":"VenuReddy2103","id":35334869,"node_id":"MDQ6VXNlcjM1MzM0ODY5","avatar_url":"https://avatars1.githubusercontent.com/u/35334869?v=4","gravatar_id":"","url":"https://api.github.com/users/VenuReddy2103","html_url":"https://github.com/VenuReddy2103","followers_url":"https://api.github.com/users/VenuReddy2103/followers","following_url":"https://api.github.com/users/VenuReddy2103/following{/other_user}","gists_url":"https://api.github.com/users/VenuReddy2103/gists{/gist_id}","starred_url":"https://api.github.com/users/VenuReddy2103/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VenuReddy2103/subscriptions","organizations_url":"https://api.github.com/users/VenuReddy2103/orgs","repos_url":"https://api.github.com/users/VenuReddy2103/repos","events_url":"https://api.github.com/users/VenuReddy2103/events{/privacy}","received_events_url":"https://api.github.com/users/VenuReddy2103/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794/commits","review_comments_url":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794/comments","review_comment_url":"https://api.github.com/repos/amino-os/Amino.Run/pulls/comments{/number}","comments_url":"https://api.github.com/repos/amino-os/Amino.Run/issues/794/comments","statuses_url":"https://api.github.com/repos/amino-os/Amino.Run/statuses/6c2fee73ca05f819502c1ed4558f555c7079e81b","head":{"label":"VenuReddy2103:get-kernel-servers","ref":"get-kernel-servers","sha":"6c2fee73ca05f819502c1ed4558f555c7079e81b","user":{"login":"VenuReddy2103","id":35334869,"node_id":"MDQ6VXNlcjM1MzM0ODY5","avatar_url":"https://avatars1.githubusercontent.com/u/35334869?v=4","gravatar_id":"","url":"https://api.github.com/users/VenuReddy2103","html_url":"https://github.com/VenuReddy2103","followers_url":"https://api.github.com/users/VenuReddy2103/followers","following_url":"https://api.github.com/users/VenuReddy2103/following{/other_user}","gists_url":"https://api.github.com/users/VenuReddy2103/gists{/gist_id}","starred_url":"https://api.github.com/users/VenuReddy2103/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VenuReddy2103/subscriptions","organizations_url":"https://api.github.com/users/VenuReddy2103/orgs","repos_url":"https://api.github.com/users/VenuReddy2103/repos","events_url":"https://api.github.com/users/VenuReddy2103/events{/privacy}","received_events_url":"https://api.github.com/users/VenuReddy2103/received_events","type":"User","site_admin":false},"repo":{"id":187151553,"node_id":"MDEwOlJlcG9zaXRvcnkxODcxNTE1NTM=","name":"Amino.Run","full_name":"VenuReddy2103/Amino.Run","private":false,"owner":{"login":"VenuReddy2103","id":35334869,"node_id":"MDQ6VXNlcjM1MzM0ODY5","avatar_url":"https://avatars1.githubusercontent.com/u/35334869?v=4","gravatar_id":"","url":"https://api.github.com/users/VenuReddy2103","html_url":"https://github.com/VenuReddy2103","followers_url":"https://api.github.com/users/VenuReddy2103/followers","following_url":"https://api.github.com/users/VenuReddy2103/following{/other_user}","gists_url":"https://api.github.com/users/VenuReddy2103/gists{/gist_id}","starred_url":"https://api.github.com/users/VenuReddy2103/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VenuReddy2103/subscriptions","organizations_url":"https://api.github.com/users/VenuReddy2103/orgs","repos_url":"https://api.github.com/users/VenuReddy2103/repos","events_url":"https://api.github.com/users/VenuReddy2103/events{/privacy}","received_events_url":"https://api.github.com/users/VenuReddy2103/received_events","type":"User","site_admin":false},"html_url":"https://github.com/VenuReddy2103/Amino.Run","description":"Amino Distributed OS - Runtime Manager","fork":true,"url":"https://api.github.com/repos/VenuReddy2103/Amino.Run","forks_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/forks","keys_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/keys{/key_id}","collaborators_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/teams","hooks_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/hooks","issue_events_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/issues/events{/number}","events_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/events","assignees_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/assignees{/user}","branches_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/branches{/branch}","tags_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/tags","blobs_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/git/refs{/sha}","trees_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/git/trees{/sha}","statuses_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/statuses/{sha}","languages_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/languages","stargazers_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/stargazers","contributors_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/contributors","subscribers_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/subscribers","subscription_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/subscription","commits_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/commits{/sha}","git_commits_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/git/commits{/sha}","comments_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/comments{/number}","issue_comment_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/issues/comments{/number}","contents_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/contents/{+path}","compare_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/compare/{base}...{head}","merges_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/merges","archive_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/downloads","issues_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/issues{/number}","pulls_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/pulls{/number}","milestones_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/milestones{/number}","notifications_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/labels{/name}","releases_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/releases{/id}","deployments_url":"https://api.github.com/repos/VenuReddy2103/Amino.Run/deployments","created_at":"2019-05-17T05:22:47Z","updated_at":"2019-05-17T05:23:42Z","pushed_at":"2019-07-19T15:38:13Z","git_url":"git://github.com/VenuReddy2103/Amino.Run.git","ssh_url":"git@github.com:VenuReddy2103/Amino.Run.git","clone_url":"https://github.com/VenuReddy2103/Amino.Run.git","svn_url":"https://github.com/VenuReddy2103/Amino.Run","homepage":"","size":183315,"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,"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":"amino-os:master","ref":"master","sha":"ccfe56eda411180eef5cc2c6a876d1841a82f93d","user":{"login":"amino-os","id":50103076,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUwMTAzMDc2","avatar_url":"https://avatars1.githubusercontent.com/u/50103076?v=4","gravatar_id":"","url":"https://api.github.com/users/amino-os","html_url":"https://github.com/amino-os","followers_url":"https://api.github.com/users/amino-os/followers","following_url":"https://api.github.com/users/amino-os/following{/other_user}","gists_url":"https://api.github.com/users/amino-os/gists{/gist_id}","starred_url":"https://api.github.com/users/amino-os/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amino-os/subscriptions","organizations_url":"https://api.github.com/users/amino-os/orgs","repos_url":"https://api.github.com/users/amino-os/repos","events_url":"https://api.github.com/users/amino-os/events{/privacy}","received_events_url":"https://api.github.com/users/amino-os/received_events","type":"Organization","site_admin":false},"repo":{"id":109051447,"node_id":"MDEwOlJlcG9zaXRvcnkxMDkwNTE0NDc=","name":"Amino.Run","full_name":"amino-os/Amino.Run","private":false,"owner":{"login":"amino-os","id":50103076,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUwMTAzMDc2","avatar_url":"https://avatars1.githubusercontent.com/u/50103076?v=4","gravatar_id":"","url":"https://api.github.com/users/amino-os","html_url":"https://github.com/amino-os","followers_url":"https://api.github.com/users/amino-os/followers","following_url":"https://api.github.com/users/amino-os/following{/other_user}","gists_url":"https://api.github.com/users/amino-os/gists{/gist_id}","starred_url":"https://api.github.com/users/amino-os/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amino-os/subscriptions","organizations_url":"https://api.github.com/users/amino-os/orgs","repos_url":"https://api.github.com/users/amino-os/repos","events_url":"https://api.github.com/users/amino-os/events{/privacy}","received_events_url":"https://api.github.com/users/amino-os/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/amino-os/Amino.Run","description":"Amino Distributed OS - Runtime Manager","fork":false,"url":"https://api.github.com/repos/amino-os/Amino.Run","forks_url":"https://api.github.com/repos/amino-os/Amino.Run/forks","keys_url":"https://api.github.com/repos/amino-os/Amino.Run/keys{/key_id}","collaborators_url":"https://api.github.com/repos/amino-os/Amino.Run/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/amino-os/Amino.Run/teams","hooks_url":"https://api.github.com/repos/amino-os/Amino.Run/hooks","issue_events_url":"https://api.github.com/repos/amino-os/Amino.Run/issues/events{/number}","events_url":"https://api.github.com/repos/amino-os/Amino.Run/events","assignees_url":"https://api.github.com/repos/amino-os/Amino.Run/assignees{/user}","branches_url":"https://api.github.com/repos/amino-os/Amino.Run/branches{/branch}","tags_url":"https://api.github.com/repos/amino-os/Amino.Run/tags","blobs_url":"https://api.github.com/repos/amino-os/Amino.Run/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/amino-os/Amino.Run/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/amino-os/Amino.Run/git/refs{/sha}","trees_url":"https://api.github.com/repos/amino-os/Amino.Run/git/trees{/sha}","statuses_url":"https://api.github.com/repos/amino-os/Amino.Run/statuses/{sha}","languages_url":"https://api.github.com/repos/amino-os/Amino.Run/languages","stargazers_url":"https://api.github.com/repos/amino-os/Amino.Run/stargazers","contributors_url":"https://api.github.com/repos/amino-os/Amino.Run/contributors","subscribers_url":"https://api.github.com/repos/amino-os/Amino.Run/subscribers","subscription_url":"https://api.github.com/repos/amino-os/Amino.Run/subscription","commits_url":"https://api.github.com/repos/amino-os/Amino.Run/commits{/sha}","git_commits_url":"https://api.github.com/repos/amino-os/Amino.Run/git/commits{/sha}","comments_url":"https://api.github.com/repos/amino-os/Amino.Run/comments{/number}","issue_comment_url":"https://api.github.com/repos/amino-os/Amino.Run/issues/comments{/number}","contents_url":"https://api.github.com/repos/amino-os/Amino.Run/contents/{+path}","compare_url":"https://api.github.com/repos/amino-os/Amino.Run/compare/{base}...{head}","merges_url":"https://api.github.com/repos/amino-os/Amino.Run/merges","archive_url":"https://api.github.com/repos/amino-os/Amino.Run/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/amino-os/Amino.Run/downloads","issues_url":"https://api.github.com/repos/amino-os/Amino.Run/issues{/number}","pulls_url":"https://api.github.com/repos/amino-os/Amino.Run/pulls{/number}","milestones_url":"https://api.github.com/repos/amino-os/Amino.Run/milestones{/number}","notifications_url":"https://api.github.com/repos/amino-os/Amino.Run/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/amino-os/Amino.Run/labels{/name}","releases_url":"https://api.github.com/repos/amino-os/Amino.Run/releases{/id}","deployments_url":"https://api.github.com/repos/amino-os/Amino.Run/deployments","created_at":"2017-10-31T20:56:43Z","updated_at":"2019-07-19T22:19:01Z","pushed_at":"2019-07-19T22:18:58Z","git_url":"git://github.com/amino-os/Amino.Run.git","ssh_url":"git@github.com:amino-os/Amino.Run.git","clone_url":"https://github.com/amino-os/Amino.Run.git","svn_url":"https://github.com/amino-os/Amino.Run","homepage":"","size":183270,"stargazers_count":17,"watchers_count":17,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":84,"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":9,"open_issues":84,"watchers":17,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794"},"html":{"href":"https://github.com/amino-os/Amino.Run/pull/794"},"issue":{"href":"https://api.github.com/repos/amino-os/Amino.Run/issues/794"},"comments":{"href":"https://api.github.com/repos/amino-os/Amino.Run/issues/794/comments"},"review_comments":{"href":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794/comments"},"review_comment":{"href":"https://api.github.com/repos/amino-os/Amino.Run/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/amino-os/Amino.Run/pulls/794/commits"},"statuses":{"href":"https://api.github.com/repos/amino-os/Amino.Run/statuses/6c2fee73ca05f819502c1ed4558f555c7079e81b"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"quinton-hoole"}}