{"action":"created","comment":{"url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/comments/119486388","pull_request_review_id":41362782,"id":119486388,"diff_hunk":"@@ -0,0 +1,217 @@\n+/*\n+ * Copyright 2015, Google Inc. All rights reserved.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are\n+ * met:\n+ *\n+ *    * Redistributions of source code must retain the above copyright\n+ * notice, this list of conditions and the following disclaimer.\n+ *    * Redistributions in binary form must reproduce the above\n+ * copyright notice, this list of conditions and the following disclaimer\n+ * in the documentation and/or other materials provided with the\n+ * distribution.\n+ *\n+ *    * Neither the name of Google Inc. nor the names of its\n+ * contributors may be used to endorse or promote products derived from\n+ * this software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+package io.grpc.examples.helloworld;\n+\n+import io.grpc.Server;\n+import io.grpc.ServerBuilder;\n+import io.grpc.stub.StreamObserver;\n+import java.io.IOException;\n+import java.util.logging.Logger;\n+\n+// import java classes\n+import java.net.URI;\n+import java.io.IOException;\n+import java.util.concurrent.CountDownLatch;\n+import java.util.Date;\n+import java.text.SimpleDateFormat;\n+\n+// import zookeeper classes\n+import org.apache.zookeeper.KeeperException;\n+import org.apache.zookeeper.WatchedEvent;\n+import org.apache.zookeeper.Watcher;\n+import org.apache.zookeeper.Watcher.Event.KeeperState;\n+import org.apache.zookeeper.ZooKeeper;\n+import org.apache.zookeeper.AsyncCallback.StatCallback;\n+import org.apache.zookeeper.KeeperException.Code;\n+import org.apache.zookeeper.data.Stat;\n+import org.apache.zookeeper.CreateMode;\n+import org.apache.zookeeper.ZooDefs;\n+import org.apache.zookeeper.data.Stat;\n+\n+class ZookeeperConnection {\n+  private static final Logger logger = Logger.getLogger(\"ZooKeeper\");\n+\n+  // declare zookeeper instance to access ZooKeeper ensemble\n+  private ZooKeeper zoo;\n+\n+  public void ZookeeperConnection() {\n+  }\n+\n+  // Method to connect zookeeper ensemble.\n+  public boolean connect(String zk_uri_str, String server_ip, String port_str) throws IOException,InterruptedException {\n+    final CountDownLatch connectedSignal = new CountDownLatch(1);\n+    String zkhostport;\n+    try {\n+      URI zk_uri = new URI(zk_uri_str);\n+      zkhostport = zk_uri.getHost().toString() + \":\" + Integer.toString(zk_uri.getPort());\n+    } catch (Exception e) {\n+      logger.severe(\"Could not parse zk URI \" + zk_uri_str);\n+      return false;\n+    }\n+\n+    zoo = new ZooKeeper(zkhostport, 5000, new Watcher() {\n+      public void process(WatchedEvent we) {\n+        if (we.getState() == KeeperState.SyncConnected) {\n+          connectedSignal.countDown();\n+        }\n+      }\n+    });\n+    /* Wait for zookeeper connection */\n+    connectedSignal.await();\n+\n+    String path = \"/grpc_hello_world_service\";\n+    Stat stat;\n+    String current_time = new SimpleDateFormat(\"yyyy.MM.dd.HH.mm.ss\").format(new Date());\n+    try {\n+      stat = zoo.exists(path, true);\n+      if (stat == null) {\n+        zoo.create(path, current_time.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);\n+      }\n+    } catch (Exception e) {\n+      logger.severe(\"Failed to create path\");\n+      return false;\n+    }\n+\n+    String server_addr = path + \"/\" + server_ip + \":\" + port_str;\n+    try {\n+      stat = zoo.exists(server_addr, true);\n+      if (stat == null) {\n+        try {\n+          zoo.create(server_addr, current_time.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);\n+        } catch (Exception e) {\n+          logger.severe(\"Failed to create server_data\");\n+          return false;\n+        }\n+      } else {\n+        try {\n+          zoo.setData(server_addr, current_time.getBytes(), stat.getVersion());\n+        } catch (Exception e) {\n+          logger.severe(\"Failed to update server_data\");\n+          return false;\n+        }\n+      }\n+    } catch (Exception e) {\n+      logger.severe(\"Failed to add server_data\");\n+      return false;\n+    }\n+    return true;\n+  }\n+\n+  // Method to disconnect from zookeeper server\n+  public void close() throws InterruptedException {\n+    zoo.close();\n+  }\n+}\n+\n+/**\n+ * Server that manages startup/shutdown of a {@code Greeter} server.\n+ */\n+public class HelloWorldServer {\n+  static String port_str;\n+  private static final Logger logger = Logger.getLogger(HelloWorldServer.class.getName());\n+\n+  private Server server;\n+\n+  private void start(String port) throws IOException {\n+    /* The port on which the server should run */\n+    server = ServerBuilder.forPort(Integer.parseInt(port))\n+        .addService(new GreeterImpl())\n+        .build()\n+        .start();\n+    logger.info(\"Server started, listening on \" + port);\n+    Runtime.getRuntime().addShutdownHook(new Thread() {\n+      @Override\n+      public void run() {\n+        // Use stderr here since the logger may have been reset by its JVM shutdown hook.\n+        System.err.println(\"*** shutting down gRPC server since JVM is shutting down\");\n+        HelloWorldServer.this.stop();\n+        System.err.println(\"*** server shut down\");\n+      }\n+    });\n+  }\n+\n+  private void stop() {\n+    if (server != null) {\n+      server.shutdown();\n+    }\n+  }\n+\n+  /**\n+   * Await termination on the main thread since the grpc library uses daemon threads.\n+   */\n+  private void blockUntilShutdown() throws InterruptedException {\n+    if (server != null) {\n+      server.awaitTermination();\n+    }\n+  }\n+\n+\n+  /**\n+   * Main launches the server from the command line.\n+   */\n+  public static void main(String[] args) throws IOException, InterruptedException {\n+    /* Argument parsing */\n+    if (args.length != 2) {\n+      System.out.println(\"Usage: helloworld_server PORT zk://ADDR:PORT\");\n+      return;\n+    }\n+\n+    String zk_addr;\n+\n+    try {\n+      port_str = new String(args[0]);\n+      zk_addr = new String(args[1]);\n+    } catch (Exception e) {\n+      System.out.println(\"Usage: helloworld_server PORT zk://ADDR:PORT\");\n+      return;\n+    }\n+\n+    ZookeeperConnection zk_conn = new ZookeeperConnection();\n+    if (!zk_conn.connect(zk_addr, \"localhost\", port_str)) {\n+      return;\n+    }\n+\n+    final HelloWorldServer server = new HelloWorldServer();\n+    server.start(port_str);\n+    server.blockUntilShutdown();\n+  }\n+\n+  static class GreeterImpl extends GreeterGrpc.GreeterImplBase {\n+\n+    @Override\n+    public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {\n+      HelloReply reply = HelloReply.newBuilder().setMessage(\"Hello \" + req.getName()+ \" from \" + port_str).build() ;","path":"examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java","position":212,"original_position":212,"commit_id":"8c555b417e813134528386dd285e7f438eaa2b7b","original_commit_id":"8c555b417e813134528386dd285e7f438eaa2b7b","user":{"login":"ericgribkoff","id":5067076,"avatar_url":"https://avatars1.githubusercontent.com/u/5067076?v=3","gravatar_id":"","url":"https://api.github.com/users/ericgribkoff","html_url":"https://github.com/ericgribkoff","followers_url":"https://api.github.com/users/ericgribkoff/followers","following_url":"https://api.github.com/users/ericgribkoff/following{/other_user}","gists_url":"https://api.github.com/users/ericgribkoff/gists{/gist_id}","starred_url":"https://api.github.com/users/ericgribkoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericgribkoff/subscriptions","organizations_url":"https://api.github.com/users/ericgribkoff/orgs","repos_url":"https://api.github.com/users/ericgribkoff/repos","events_url":"https://api.github.com/users/ericgribkoff/events{/privacy}","received_events_url":"https://api.github.com/users/ericgribkoff/received_events","type":"User","site_admin":false},"body":"Missing space after `req.getName()` and before `+`, and has extra space before semi-colon.","created_at":"2017-05-31T22:08:45Z","updated_at":"2017-05-31T22:12:25Z","html_url":"https://github.com/makdharma/grpc-zookeeper-lb/pull/1#discussion_r119486388","pull_request_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/comments/119486388"},"html":{"href":"https://github.com/makdharma/grpc-zookeeper-lb/pull/1#discussion_r119486388"},"pull_request":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1","id":123367419,"html_url":"https://github.com/makdharma/grpc-zookeeper-lb/pull/1","diff_url":"https://github.com/makdharma/grpc-zookeeper-lb/pull/1.diff","patch_url":"https://github.com/makdharma/grpc-zookeeper-lb/pull/1.patch","issue_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/1","number":1,"state":"open","locked":false,"title":"Zookeeper load balancer example","user":{"login":"makdharma","id":17325098,"avatar_url":"https://avatars3.githubusercontent.com/u/17325098?v=3","gravatar_id":"","url":"https://api.github.com/users/makdharma","html_url":"https://github.com/makdharma","followers_url":"https://api.github.com/users/makdharma/followers","following_url":"https://api.github.com/users/makdharma/following{/other_user}","gists_url":"https://api.github.com/users/makdharma/gists{/gist_id}","starred_url":"https://api.github.com/users/makdharma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/makdharma/subscriptions","organizations_url":"https://api.github.com/users/makdharma/orgs","repos_url":"https://api.github.com/users/makdharma/repos","events_url":"https://api.github.com/users/makdharma/events{/privacy}","received_events_url":"https://api.github.com/users/makdharma/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-05-31T20:58:52Z","updated_at":"2017-05-31T22:12:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d64d7b7f9d879813236dbac17a9c0ea37e3fc707","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1/commits","review_comments_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1/comments","review_comment_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/comments{/number}","comments_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/1/comments","statuses_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/statuses/8c555b417e813134528386dd285e7f438eaa2b7b","head":{"label":"makdharma:test","ref":"test","sha":"8c555b417e813134528386dd285e7f438eaa2b7b","user":{"login":"makdharma","id":17325098,"avatar_url":"https://avatars3.githubusercontent.com/u/17325098?v=3","gravatar_id":"","url":"https://api.github.com/users/makdharma","html_url":"https://github.com/makdharma","followers_url":"https://api.github.com/users/makdharma/followers","following_url":"https://api.github.com/users/makdharma/following{/other_user}","gists_url":"https://api.github.com/users/makdharma/gists{/gist_id}","starred_url":"https://api.github.com/users/makdharma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/makdharma/subscriptions","organizations_url":"https://api.github.com/users/makdharma/orgs","repos_url":"https://api.github.com/users/makdharma/repos","events_url":"https://api.github.com/users/makdharma/events{/privacy}","received_events_url":"https://api.github.com/users/makdharma/received_events","type":"User","site_admin":false},"repo":{"id":92963610,"name":"grpc-zookeeper-lb","full_name":"makdharma/grpc-zookeeper-lb","owner":{"login":"makdharma","id":17325098,"avatar_url":"https://avatars3.githubusercontent.com/u/17325098?v=3","gravatar_id":"","url":"https://api.github.com/users/makdharma","html_url":"https://github.com/makdharma","followers_url":"https://api.github.com/users/makdharma/followers","following_url":"https://api.github.com/users/makdharma/following{/other_user}","gists_url":"https://api.github.com/users/makdharma/gists{/gist_id}","starred_url":"https://api.github.com/users/makdharma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/makdharma/subscriptions","organizations_url":"https://api.github.com/users/makdharma/orgs","repos_url":"https://api.github.com/users/makdharma/repos","events_url":"https://api.github.com/users/makdharma/events{/privacy}","received_events_url":"https://api.github.com/users/makdharma/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/makdharma/grpc-zookeeper-lb","description":"Toy example of using Zookeeper for load balancing with gRPC","fork":false,"url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb","forks_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/forks","keys_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/teams","hooks_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/hooks","issue_events_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/events{/number}","events_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/events","assignees_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/assignees{/user}","branches_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/branches{/branch}","tags_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/tags","blobs_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/refs{/sha}","trees_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/statuses/{sha}","languages_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/languages","stargazers_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/stargazers","contributors_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/contributors","subscribers_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/subscribers","subscription_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/subscription","commits_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/commits{/sha}","git_commits_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/commits{/sha}","comments_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/comments{/number}","issue_comment_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/comments{/number}","contents_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/contents/{+path}","compare_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/merges","archive_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/downloads","issues_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues{/number}","pulls_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls{/number}","milestones_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/milestones{/number}","notifications_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/labels{/name}","releases_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/releases{/id}","deployments_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/deployments","created_at":"2017-05-31T15:57:40Z","updated_at":"2017-05-31T15:57:40Z","pushed_at":"2017-05-31T20:58:53Z","git_url":"git://github.com/makdharma/grpc-zookeeper-lb.git","ssh_url":"git@github.com:makdharma/grpc-zookeeper-lb.git","clone_url":"https://github.com/makdharma/grpc-zookeeper-lb.git","svn_url":"https://github.com/makdharma/grpc-zookeeper-lb","homepage":null,"size":72,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"makdharma:master","ref":"master","sha":"3c45d8419e46cf55a4897f9efacf50c5cf61288a","user":{"login":"makdharma","id":17325098,"avatar_url":"https://avatars3.githubusercontent.com/u/17325098?v=3","gravatar_id":"","url":"https://api.github.com/users/makdharma","html_url":"https://github.com/makdharma","followers_url":"https://api.github.com/users/makdharma/followers","following_url":"https://api.github.com/users/makdharma/following{/other_user}","gists_url":"https://api.github.com/users/makdharma/gists{/gist_id}","starred_url":"https://api.github.com/users/makdharma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/makdharma/subscriptions","organizations_url":"https://api.github.com/users/makdharma/orgs","repos_url":"https://api.github.com/users/makdharma/repos","events_url":"https://api.github.com/users/makdharma/events{/privacy}","received_events_url":"https://api.github.com/users/makdharma/received_events","type":"User","site_admin":false},"repo":{"id":92963610,"name":"grpc-zookeeper-lb","full_name":"makdharma/grpc-zookeeper-lb","owner":{"login":"makdharma","id":17325098,"avatar_url":"https://avatars3.githubusercontent.com/u/17325098?v=3","gravatar_id":"","url":"https://api.github.com/users/makdharma","html_url":"https://github.com/makdharma","followers_url":"https://api.github.com/users/makdharma/followers","following_url":"https://api.github.com/users/makdharma/following{/other_user}","gists_url":"https://api.github.com/users/makdharma/gists{/gist_id}","starred_url":"https://api.github.com/users/makdharma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/makdharma/subscriptions","organizations_url":"https://api.github.com/users/makdharma/orgs","repos_url":"https://api.github.com/users/makdharma/repos","events_url":"https://api.github.com/users/makdharma/events{/privacy}","received_events_url":"https://api.github.com/users/makdharma/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/makdharma/grpc-zookeeper-lb","description":"Toy example of using Zookeeper for load balancing with gRPC","fork":false,"url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb","forks_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/forks","keys_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/teams","hooks_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/hooks","issue_events_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/events{/number}","events_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/events","assignees_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/assignees{/user}","branches_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/branches{/branch}","tags_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/tags","blobs_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/refs{/sha}","trees_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/statuses/{sha}","languages_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/languages","stargazers_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/stargazers","contributors_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/contributors","subscribers_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/subscribers","subscription_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/subscription","commits_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/commits{/sha}","git_commits_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/git/commits{/sha}","comments_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/comments{/number}","issue_comment_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/comments{/number}","contents_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/contents/{+path}","compare_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/merges","archive_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/downloads","issues_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues{/number}","pulls_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls{/number}","milestones_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/milestones{/number}","notifications_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/labels{/name}","releases_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/releases{/id}","deployments_url":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/deployments","created_at":"2017-05-31T15:57:40Z","updated_at":"2017-05-31T15:57:40Z","pushed_at":"2017-05-31T20:58:53Z","git_url":"git://github.com/makdharma/grpc-zookeeper-lb.git","ssh_url":"git@github.com:makdharma/grpc-zookeeper-lb.git","clone_url":"https://github.com/makdharma/grpc-zookeeper-lb.git","svn_url":"https://github.com/makdharma/grpc-zookeeper-lb","homepage":null,"size":72,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1"},"html":{"href":"https://github.com/makdharma/grpc-zookeeper-lb/pull/1"},"issue":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/1"},"comments":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/makdharma/grpc-zookeeper-lb/statuses/8c555b417e813134528386dd285e7f438eaa2b7b"}}}}
{"actor":{"display_login":"ericgribkoff"}}