{"action":"created","comment":{"url":"https://api.github.com/repos/apache/cassandra/pulls/comments/194581551","pull_request_review_id":127781404,"id":194581551,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NDU4MTU1MQ==","diff_hunk":"@@ -0,0 +1,283 @@\n+/*\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements.  See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership.  The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License.  You may obtain a copy of the License at\n+ *\n+ *     http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.cassandra.locator;\n+\n+import java.util.ArrayList;\n+import java.util.Collection;\n+import java.util.Collections;\n+import java.util.Comparator;\n+import java.util.Iterator;\n+import java.util.List;\n+import java.util.Objects;\n+import java.util.function.Predicate;\n+\n+import com.google.common.base.Preconditions;\n+import com.google.common.collect.ImmutableList;\n+import com.google.common.collect.Iterables;\n+\n+public class ReplicaList extends Replicas\n+{\n+    static final ReplicaList EMPTY = new ReplicaList(ImmutableList.of());\n+\n+    private final List<Replica> replicaList;\n+\n+    public ReplicaList()\n+    {\n+        this(new ArrayList<>());\n+    }\n+\n+    public ReplicaList(int capacity)\n+    {\n+        this(new ArrayList<>(capacity));\n+    }\n+\n+    public ReplicaList(ReplicaList from)\n+    {\n+        this(new ArrayList<>(from.replicaList));\n+    }\n+\n+    public ReplicaList(Replicas from)\n+    {\n+        this(new ArrayList<>(from.size()));\n+        addAll(from);\n+    }\n+\n+    public ReplicaList(Collection<Replica> from)\n+    {\n+        this(new ArrayList<>(from));\n+    }\n+\n+    private ReplicaList(List<Replica> replicaList)\n+    {\n+        this.replicaList = replicaList;\n+    }\n+\n+    public boolean equals(Object o)\n+    {\n+        if (this == o) return true;\n+        if (o == null || getClass() != o.getClass()) return false;\n+        ReplicaList that = (ReplicaList) o;\n+        return Objects.equals(replicaList, that.replicaList);\n+    }\n+\n+    public int hashCode()\n+    {\n+        return replicaList.hashCode();\n+    }\n+\n+    @Override\n+    public String toString()\n+    {\n+        return replicaList.toString();\n+    }\n+\n+    @Override\n+    public boolean add(Replica replica)\n+    {\n+        Preconditions.checkNotNull(replica);\n+        return replicaList.add(replica);\n+    }\n+\n+    @Override\n+    public void addAll(Iterable<Replica> replicas)\n+    {\n+        Iterables.addAll(replicaList, replicas);\n+    }\n+\n+    @Override\n+    public int size()\n+    {\n+        return replicaList.size();\n+    }\n+\n+    @Override\n+    protected Collection<Replica> getUnmodifiableCollection()\n+    {\n+        return Collections.unmodifiableCollection(replicaList);\n+    }\n+\n+    @Override\n+    public Iterator<Replica> iterator()\n+    {\n+        return replicaList.iterator();\n+    }\n+\n+    public Replica get(int idx)\n+    {\n+        return replicaList.get(idx);\n+    }\n+\n+    @Override\n+    public void removeEndpoint(InetAddressAndPort endpoint)\n+    {\n+        for (int i=replicaList.size()-1; i>=0; i--)\n+        {\n+            if (replicaList.get(i).getEndpoint().equals(endpoint))\n+            {\n+                replicaList.remove(i);\n+            }\n+        }\n+    }\n+\n+    @Override\n+    public void removeReplica(Replica replica)\n+    {\n+        replicaList.remove(replica);\n+    }\n+\n+    @Override\n+    public boolean containsEndpoint(InetAddressAndPort endpoint)\n+    {\n+        for (int i=0; i<size(); i++)\n+        {\n+            if (replicaList.get(i).getEndpoint().equals(endpoint))\n+                return true;\n+        }\n+        return false;\n+    }\n+\n+    public ReplicaList filter(Predicate<Replica> predicate)\n+    {\n+        ArrayList<Replica> newReplicaList = size() < 10 ? new ArrayList<>(size()) : new ArrayList<>();\n+        for (int i=0; i<size(); i++)\n+        {\n+            Replica replica = replicaList.get(i);\n+            if (predicate.test(replica))\n+            {\n+                newReplicaList.add(replica);\n+            }\n+        }\n+        return new ReplicaList(newReplicaList);\n+    }\n+\n+    public void sort(Comparator<Replica> comparator)\n+    {\n+        replicaList.sort(comparator);\n+    }\n+\n+    public static ReplicaList intersectEndpoints(ReplicaList l1, ReplicaList l2)\n+    {\n+        Replicas.checkFull(l1);\n+        Replicas.checkFull(l2);\n+        // Note: we don't use Guava Sets.intersection() for 3 reasons:\n+        //   1) retainAll would be inefficient if l1 and l2 are large but in practice both are the replicas for a range and\n+        //   so will be very small (< RF). In that case, retainAll is in fact more efficient.\n+        //   2) we do ultimately need a list so converting everything to sets don't make sense\n+        //   3) l1 and l2 are sorted by proximity. The use of retainAll  maintain that sorting in the result, while using sets wouldn't.\n+        Collection<InetAddressAndPort> endpoints = l2.asEndpointList();\n+        return l1.filter(r -> endpoints.contains(r.getEndpoint()));\n+    }\n+\n+    public static ReplicaList of()\n+    {\n+        return new ReplicaList(0);\n+    }\n+\n+    public static ReplicaList of(Replica replica)\n+    {\n+        ReplicaList replicaList = new ReplicaList(1);\n+        replicaList.add(replica);\n+        return replicaList;\n+    }\n+\n+    public static ReplicaList of(Replica... replicas)\n+    {\n+        ReplicaList replicaList = new ReplicaList(replicas.length);\n+        for (Replica replica: replicas)\n+        {\n+            replicaList.add(replica);\n+        }\n+        return replicaList;\n+    }\n+\n+    public ReplicaList subList(int fromIndex, int toIndex)\n+    {\n+        return new ReplicaList(replicaList.subList(fromIndex, toIndex));\n+    }\n+\n+    public ReplicaList normalizeByRange()\n+    {\n+        if (Iterables.all(this, Replica::isFull))\n+        {\n+            ReplicaList normalized = new ReplicaList(size());\n+            for (Replica replica: this)\n+            {\n+                replica.addNormalizeByRange(normalized);\n+            }\n+\n+            return normalized;\n+        }\n+        else\n+        {\n+            // FIXME: add support for transient replicas\n+            throw new UnsupportedOperationException(\"transient replicas are currently unsupported\");\n+        }\n+    }\n+\n+    public static ReplicaList immutableCopyOf(Replicas replicas)\n+    {\n+        return new ReplicaList(ImmutableList.<Replica>builder().addAll(replicas).build());\n+    }\n+\n+    public static ReplicaList immutableCopyOf(ReplicaList replicas)\n+    {\n+        return new ReplicaList(ImmutableList.copyOf(replicas.replicaList));\n+    }\n+\n+    public static ReplicaList immutableCopyOf(Replica... replicas)\n+    {\n+        return new ReplicaList(ImmutableList.copyOf(replicas));\n+    }\n+\n+    public static ReplicaList empty()\n+    {\n+        return new ReplicaList();\n+    }\n+\n+    public static ReplicaList fullStandIns(Collection<InetAddressAndPort> endpoints)\n+    {\n+        ReplicaList replicaList = new ReplicaList(endpoints.size());\n+        for (InetAddressAndPort endpoint: endpoints)\n+        {\n+            replicaList.add(Replica.fullStandin(endpoint));\n+        }\n+        return replicaList;\n+    }\n+\n+    public static ReplicaList fullStandIns(Iterable<InetAddressAndPort> endpoints)\n+    {\n+        ReplicaList replicaList = new ReplicaList();\n+        for (InetAddressAndPort endpoint: endpoints)\n+        {\n+            replicaList.add(Replica.fullStandin(endpoint));\n+        }\n+        return replicaList;\n+    }\n+\n+    /**\n+     * For allocating ReplicaLists where the final size is unknown, but\n+     * should be less than the given size. Prevents overallocations in cases\n+     * where there are less than the default ArrayList size, and defers to the\n+     * ArrayList algorithem where there might be more","path":"src/java/org/apache/cassandra/locator/ReplicaList.java","position":null,"original_position":277,"commit_id":"903f6242a2d7790dfdbb1d0d54cc608ca8b752ee","original_commit_id":"47f9d320806e2c55e397d64eb93d64cb9a0bb2fc","user":{"login":"bdeggleston","id":658086,"node_id":"MDQ6VXNlcjY1ODA4Ng==","avatar_url":"https://avatars3.githubusercontent.com/u/658086?v=4","gravatar_id":"","url":"https://api.github.com/users/bdeggleston","html_url":"https://github.com/bdeggleston","followers_url":"https://api.github.com/users/bdeggleston/followers","following_url":"https://api.github.com/users/bdeggleston/following{/other_user}","gists_url":"https://api.github.com/users/bdeggleston/gists{/gist_id}","starred_url":"https://api.github.com/users/bdeggleston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdeggleston/subscriptions","organizations_url":"https://api.github.com/users/bdeggleston/orgs","repos_url":"https://api.github.com/users/bdeggleston/repos","events_url":"https://api.github.com/users/bdeggleston/events{/privacy}","received_events_url":"https://api.github.com/users/bdeggleston/received_events","type":"User","site_admin":false},"body":"fixed","created_at":"2018-06-11T23:57:19Z","updated_at":"2018-06-11T23:57:19Z","html_url":"https://github.com/apache/cassandra/pull/224#discussion_r194581551","pull_request_url":"https://api.github.com/repos/apache/cassandra/pulls/224","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/apache/cassandra/pulls/comments/194581551"},"html":{"href":"https://github.com/apache/cassandra/pull/224#discussion_r194581551"},"pull_request":{"href":"https://api.github.com/repos/apache/cassandra/pulls/224"}},"in_reply_to_id":191572253},"pull_request":{"url":"https://api.github.com/repos/apache/cassandra/pulls/224","id":187012265,"node_id":"MDExOlB1bGxSZXF1ZXN0MTg3MDEyMjY1","html_url":"https://github.com/apache/cassandra/pull/224","diff_url":"https://github.com/apache/cassandra/pull/224.diff","patch_url":"https://github.com/apache/cassandra/pull/224.patch","issue_url":"https://api.github.com/repos/apache/cassandra/issues/224","number":224,"state":"open","locked":false,"title":"14405 replicas","user":{"login":"bdeggleston","id":658086,"node_id":"MDQ6VXNlcjY1ODA4Ng==","avatar_url":"https://avatars3.githubusercontent.com/u/658086?v=4","gravatar_id":"","url":"https://api.github.com/users/bdeggleston","html_url":"https://github.com/bdeggleston","followers_url":"https://api.github.com/users/bdeggleston/followers","following_url":"https://api.github.com/users/bdeggleston/following{/other_user}","gists_url":"https://api.github.com/users/bdeggleston/gists{/gist_id}","starred_url":"https://api.github.com/users/bdeggleston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdeggleston/subscriptions","organizations_url":"https://api.github.com/users/bdeggleston/orgs","repos_url":"https://api.github.com/users/bdeggleston/repos","events_url":"https://api.github.com/users/bdeggleston/events{/privacy}","received_events_url":"https://api.github.com/users/bdeggleston/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-05-09T19:06:55Z","updated_at":"2018-06-11T23:57:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apache/cassandra/pulls/224/commits","review_comments_url":"https://api.github.com/repos/apache/cassandra/pulls/224/comments","review_comment_url":"https://api.github.com/repos/apache/cassandra/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/cassandra/issues/224/comments","statuses_url":"https://api.github.com/repos/apache/cassandra/statuses/903f6242a2d7790dfdbb1d0d54cc608ca8b752ee","head":{"label":"bdeggleston:14405-replicas","ref":"14405-replicas","sha":"903f6242a2d7790dfdbb1d0d54cc608ca8b752ee","user":{"login":"bdeggleston","id":658086,"node_id":"MDQ6VXNlcjY1ODA4Ng==","avatar_url":"https://avatars3.githubusercontent.com/u/658086?v=4","gravatar_id":"","url":"https://api.github.com/users/bdeggleston","html_url":"https://github.com/bdeggleston","followers_url":"https://api.github.com/users/bdeggleston/followers","following_url":"https://api.github.com/users/bdeggleston/following{/other_user}","gists_url":"https://api.github.com/users/bdeggleston/gists{/gist_id}","starred_url":"https://api.github.com/users/bdeggleston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdeggleston/subscriptions","organizations_url":"https://api.github.com/users/bdeggleston/orgs","repos_url":"https://api.github.com/users/bdeggleston/repos","events_url":"https://api.github.com/users/bdeggleston/events{/privacy}","received_events_url":"https://api.github.com/users/bdeggleston/received_events","type":"User","site_admin":false},"repo":{"id":23359822,"node_id":"MDEwOlJlcG9zaXRvcnkyMzM1OTgyMg==","name":"cassandra","full_name":"bdeggleston/cassandra","owner":{"login":"bdeggleston","id":658086,"node_id":"MDQ6VXNlcjY1ODA4Ng==","avatar_url":"https://avatars3.githubusercontent.com/u/658086?v=4","gravatar_id":"","url":"https://api.github.com/users/bdeggleston","html_url":"https://github.com/bdeggleston","followers_url":"https://api.github.com/users/bdeggleston/followers","following_url":"https://api.github.com/users/bdeggleston/following{/other_user}","gists_url":"https://api.github.com/users/bdeggleston/gists{/gist_id}","starred_url":"https://api.github.com/users/bdeggleston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bdeggleston/subscriptions","organizations_url":"https://api.github.com/users/bdeggleston/orgs","repos_url":"https://api.github.com/users/bdeggleston/repos","events_url":"https://api.github.com/users/bdeggleston/events{/privacy}","received_events_url":"https://api.github.com/users/bdeggleston/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bdeggleston/cassandra","description":"Mirror of Apache Cassandra","fork":true,"url":"https://api.github.com/repos/bdeggleston/cassandra","forks_url":"https://api.github.com/repos/bdeggleston/cassandra/forks","keys_url":"https://api.github.com/repos/bdeggleston/cassandra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bdeggleston/cassandra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bdeggleston/cassandra/teams","hooks_url":"https://api.github.com/repos/bdeggleston/cassandra/hooks","issue_events_url":"https://api.github.com/repos/bdeggleston/cassandra/issues/events{/number}","events_url":"https://api.github.com/repos/bdeggleston/cassandra/events","assignees_url":"https://api.github.com/repos/bdeggleston/cassandra/assignees{/user}","branches_url":"https://api.github.com/repos/bdeggleston/cassandra/branches{/branch}","tags_url":"https://api.github.com/repos/bdeggleston/cassandra/tags","blobs_url":"https://api.github.com/repos/bdeggleston/cassandra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bdeggleston/cassandra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bdeggleston/cassandra/git/refs{/sha}","trees_url":"https://api.github.com/repos/bdeggleston/cassandra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bdeggleston/cassandra/statuses/{sha}","languages_url":"https://api.github.com/repos/bdeggleston/cassandra/languages","stargazers_url":"https://api.github.com/repos/bdeggleston/cassandra/stargazers","contributors_url":"https://api.github.com/repos/bdeggleston/cassandra/contributors","subscribers_url":"https://api.github.com/repos/bdeggleston/cassandra/subscribers","subscription_url":"https://api.github.com/repos/bdeggleston/cassandra/subscription","commits_url":"https://api.github.com/repos/bdeggleston/cassandra/commits{/sha}","git_commits_url":"https://api.github.com/repos/bdeggleston/cassandra/git/commits{/sha}","comments_url":"https://api.github.com/repos/bdeggleston/cassandra/comments{/number}","issue_comment_url":"https://api.github.com/repos/bdeggleston/cassandra/issues/comments{/number}","contents_url":"https://api.github.com/repos/bdeggleston/cassandra/contents/{+path}","compare_url":"https://api.github.com/repos/bdeggleston/cassandra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bdeggleston/cassandra/merges","archive_url":"https://api.github.com/repos/bdeggleston/cassandra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bdeggleston/cassandra/downloads","issues_url":"https://api.github.com/repos/bdeggleston/cassandra/issues{/number}","pulls_url":"https://api.github.com/repos/bdeggleston/cassandra/pulls{/number}","milestones_url":"https://api.github.com/repos/bdeggleston/cassandra/milestones{/number}","notifications_url":"https://api.github.com/repos/bdeggleston/cassandra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bdeggleston/cassandra/labels{/name}","releases_url":"https://api.github.com/repos/bdeggleston/cassandra/releases{/id}","deployments_url":"https://api.github.com/repos/bdeggleston/cassandra/deployments","created_at":"2014-08-26T17:05:26Z","updated_at":"2018-04-25T21:18:06Z","pushed_at":"2018-06-11T23:57:16Z","git_url":"git://github.com/bdeggleston/cassandra.git","ssh_url":"git@github.com:bdeggleston/cassandra.git","clone_url":"https://github.com/bdeggleston/cassandra.git","svn_url":"https://github.com/bdeggleston/cassandra","homepage":"http://cassandra.apache.org","size":272523,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"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":1,"watchers":0,"default_branch":"trunk"}},"base":{"label":"apache:trunk","ref":"trunk","sha":"4413fdbd3e9350c5f5dac5ef4dc517fd9b5064ad","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":206424,"node_id":"MDEwOlJlcG9zaXRvcnkyMDY0MjQ=","name":"cassandra","full_name":"apache/cassandra","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},"private":false,"html_url":"https://github.com/apache/cassandra","description":"Mirror of Apache Cassandra","fork":false,"url":"https://api.github.com/repos/apache/cassandra","forks_url":"https://api.github.com/repos/apache/cassandra/forks","keys_url":"https://api.github.com/repos/apache/cassandra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/cassandra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/cassandra/teams","hooks_url":"https://api.github.com/repos/apache/cassandra/hooks","issue_events_url":"https://api.github.com/repos/apache/cassandra/issues/events{/number}","events_url":"https://api.github.com/repos/apache/cassandra/events","assignees_url":"https://api.github.com/repos/apache/cassandra/assignees{/user}","branches_url":"https://api.github.com/repos/apache/cassandra/branches{/branch}","tags_url":"https://api.github.com/repos/apache/cassandra/tags","blobs_url":"https://api.github.com/repos/apache/cassandra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/cassandra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/cassandra/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/cassandra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/cassandra/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/cassandra/languages","stargazers_url":"https://api.github.com/repos/apache/cassandra/stargazers","contributors_url":"https://api.github.com/repos/apache/cassandra/contributors","subscribers_url":"https://api.github.com/repos/apache/cassandra/subscribers","subscription_url":"https://api.github.com/repos/apache/cassandra/subscription","commits_url":"https://api.github.com/repos/apache/cassandra/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/cassandra/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/cassandra/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/cassandra/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/cassandra/contents/{+path}","compare_url":"https://api.github.com/repos/apache/cassandra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/cassandra/merges","archive_url":"https://api.github.com/repos/apache/cassandra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/cassandra/downloads","issues_url":"https://api.github.com/repos/apache/cassandra/issues{/number}","pulls_url":"https://api.github.com/repos/apache/cassandra/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/cassandra/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/cassandra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/cassandra/labels{/name}","releases_url":"https://api.github.com/repos/apache/cassandra/releases{/id}","deployments_url":"https://api.github.com/repos/apache/cassandra/deployments","created_at":"2009-05-21T02:10:09Z","updated_at":"2018-06-11T20:05:58Z","pushed_at":"2018-06-11T23:57:20Z","git_url":"git://github.com/apache/cassandra.git","ssh_url":"git@github.com:apache/cassandra.git","clone_url":"https://github.com/apache/cassandra.git","svn_url":"https://github.com/apache/cassandra","homepage":"http://cassandra.apache.org","size":267745,"stargazers_count":4443,"watchers_count":4443,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2041,"mirror_url":null,"archived":false,"open_issues_count":83,"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":2041,"open_issues":83,"watchers":4443,"default_branch":"trunk"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/cassandra/pulls/224"},"html":{"href":"https://github.com/apache/cassandra/pull/224"},"issue":{"href":"https://api.github.com/repos/apache/cassandra/issues/224"},"comments":{"href":"https://api.github.com/repos/apache/cassandra/issues/224/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/cassandra/pulls/224/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/cassandra/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/cassandra/pulls/224/commits"},"statuses":{"href":"https://api.github.com/repos/apache/cassandra/statuses/903f6242a2d7790dfdbb1d0d54cc608ca8b752ee"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"bdeggleston"}}