{"action":"created","comment":{"url":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/comments/106896183","pull_request_review_id":27838303,"id":106896183,"diff_hunk":"@@ -0,0 +1,329 @@\n+/*\n+ * Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * 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 com.hazelcast.jet.impl.connector;\n+\n+import com.hazelcast.cache.impl.CacheProxy;\n+import com.hazelcast.client.cache.impl.ClientCacheProxy;\n+import com.hazelcast.client.config.ClientConfig;\n+import com.hazelcast.client.impl.HazelcastClientProxy;\n+import com.hazelcast.client.proxy.ClientMapProxy;\n+import com.hazelcast.core.DistributedObject;\n+import com.hazelcast.core.HazelcastInstance;\n+import com.hazelcast.core.Partition;\n+import com.hazelcast.jet.AbstractProcessor;\n+import com.hazelcast.jet.Distributed;\n+import com.hazelcast.jet.Processor;\n+import com.hazelcast.jet.ProcessorMetaSupplier;\n+import com.hazelcast.jet.ProcessorSupplier;\n+import com.hazelcast.jet.Processors;\n+import com.hazelcast.jet.Traverser;\n+import com.hazelcast.jet.impl.util.CircularListCursor;\n+import com.hazelcast.map.impl.proxy.MapProxyImpl;\n+import com.hazelcast.nio.Address;\n+\n+import javax.annotation.Nonnull;\n+import javax.cache.Cache;\n+import java.util.AbstractMap;\n+import java.util.Collections;\n+import java.util.Iterator;\n+import java.util.List;\n+import java.util.Map;\n+import java.util.function.Function;\n+import java.util.stream.IntStream;\n+\n+import static com.hazelcast.client.HazelcastClient.newHazelcastClient;\n+import static com.hazelcast.jet.Util.entry;\n+import static java.util.Collections.emptyList;\n+import static java.util.stream.Collectors.groupingBy;\n+import static java.util.stream.Collectors.mapping;\n+import static java.util.stream.Collectors.toList;\n+import static java.util.stream.IntStream.range;\n+\n+public final class ReadWithPartitionIteratorP extends AbstractProcessor {\n+\n+    private static final int DEFAULT_FETCH_SIZE = 16384;\n+\n+    private final Traverser<Map.Entry> outputTraverser;\n+\n+    ReadWithPartitionIteratorP(Function<Integer, Iterator<Map.Entry>> partitionToIterator,\n+                               List<Integer> partitions) {\n+        final CircularListCursor<Iterator<Map.Entry>> iteratorCursor = new CircularListCursor<>(\n+                partitions.stream().map(partitionToIterator).collect(toList())\n+        );\n+        this.outputTraverser = () -> {\n+            do {\n+                final Iterator<Map.Entry> currIterator = iteratorCursor.value();\n+                if (currIterator.hasNext()) {\n+                    iteratorCursor.advance();\n+                    return currIterator.next();\n+                }\n+                iteratorCursor.remove();\n+            } while (iteratorCursor.advance());\n+            return null;\n+        };\n+    }\n+\n+    public static ProcessorMetaSupplier readMap(String mapName) {\n+        return readMap(mapName, DEFAULT_FETCH_SIZE);\n+    }\n+\n+    public static ProcessorMetaSupplier readMap(String mapName, int fetchSize) {\n+        return new LocalClusterMetaSupplier(fetchSize,\n+                instance -> instance.getMap(mapName));\n+    }\n+\n+    public static ProcessorMetaSupplier readMap(String mapName, ClientConfig clientConfig) {\n+        return readMap(mapName, DEFAULT_FETCH_SIZE, clientConfig);\n+    }\n+\n+    public static ProcessorMetaSupplier readMap(String mapName, int fetchSize, ClientConfig clientConfig) {\n+        return new RemoteClusterMetaSupplier(fetchSize, clientConfig,\n+                instance -> instance.getMap(mapName));\n+    }\n+\n+    public static ProcessorMetaSupplier readCache(String cacheName) {\n+        return readCache(cacheName, DEFAULT_FETCH_SIZE);\n+    }\n+\n+    public static ProcessorMetaSupplier readCache(String cacheName, int fetchSize) {\n+        return new LocalClusterMetaSupplier(fetchSize,\n+                instance -> instance.getCacheManager().getCache(cacheName));\n+    }\n+\n+    public static ProcessorMetaSupplier readCache(String cacheName, ClientConfig clientConfig) {\n+        return readCache(cacheName, DEFAULT_FETCH_SIZE, clientConfig);\n+    }\n+\n+    public static ProcessorMetaSupplier readCache(String cacheName, int fetchSize, ClientConfig clientConfig) {\n+        return new RemoteClusterMetaSupplier(fetchSize, clientConfig,\n+                instance -> instance.getCacheManager().getCache(cacheName));\n+    }\n+\n+    @Override\n+    public boolean complete() {\n+        return emitCooperatively(outputTraverser);\n+    }\n+\n+    @Override\n+    public boolean isCooperative() {\n+        return false;\n+    }\n+\n+    private static List<Processor> getProcessors(int count, List<Integer> ownedPartitions,\n+                                                 Function<Integer, Iterator<Map.Entry>> partitionToIterator) {\n+        Map<Integer, List<Integer>> processorToPartitions =\n+                range(0, ownedPartitions.size())\n+                        .mapToObj(i -> entry(i, ownedPartitions.get(i)))\n+                        .collect(groupingBy(e -> e.getKey() % count, mapping(Map.Entry::getValue, toList())));\n+        range(0, count).forEach(processor -> processorToPartitions.computeIfAbsent(processor, x -> emptyList()));\n+        return processorToPartitions\n+                .values().stream()\n+                .map(partitions -> !partitions.isEmpty()\n+                        ? new ReadWithPartitionIteratorP(partitionToIterator, partitions)\n+                        : new Processors.NoopP()\n+                )\n+                .collect(toList());\n+    }\n+\n+    private static Iterator<Map.Entry> partitionIterator(DistributedObject distributedObject, int fetchSize, int partitionId) {","path":"hazelcast-jet-core/src/main/java/com/hazelcast/jet/impl/connector/ReadWithPartitionIteratorP.java","position":142,"original_position":142,"commit_id":"b561c1c739196f1604b3539abce723955fb95dd2","original_commit_id":"b561c1c739196f1604b3539abce723955fb95dd2","user":{"login":"cangencer","id":510278,"avatar_url":"https://avatars3.githubusercontent.com/u/510278?v=3","gravatar_id":"","url":"https://api.github.com/users/cangencer","html_url":"https://github.com/cangencer","followers_url":"https://api.github.com/users/cangencer/followers","following_url":"https://api.github.com/users/cangencer/following{/other_user}","gists_url":"https://api.github.com/users/cangencer/gists{/gist_id}","starred_url":"https://api.github.com/users/cangencer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cangencer/subscriptions","organizations_url":"https://api.github.com/users/cangencer/orgs","repos_url":"https://api.github.com/users/cangencer/repos","events_url":"https://api.github.com/users/cangencer/events{/privacy}","received_events_url":"https://api.github.com/users/cangencer/received_events","type":"User","site_admin":false},"body":"would be nicer to replace this method with a `Function<DistributedObject, Iterator<Map.Entry>>` instead.","created_at":"2017-03-20T13:11:09Z","updated_at":"2017-03-20T13:41:16Z","html_url":"https://github.com/hazelcast/hazelcast-jet/pull/357#discussion_r106896183","pull_request_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357","_links":{"self":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/comments/106896183"},"html":{"href":"https://github.com/hazelcast/hazelcast-jet/pull/357#discussion_r106896183"},"pull_request":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357"}}},"pull_request":{"url":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357","id":111404712,"html_url":"https://github.com/hazelcast/hazelcast-jet/pull/357","diff_url":"https://github.com/hazelcast/hazelcast-jet/pull/357.diff","patch_url":"https://github.com/hazelcast/hazelcast-jet/pull/357.patch","issue_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/issues/357","number":357,"state":"open","locked":false,"title":"Combined Map/Cache read/write processors","user":{"login":"gurbuzali","id":1741680,"avatar_url":"https://avatars0.githubusercontent.com/u/1741680?v=3","gravatar_id":"","url":"https://api.github.com/users/gurbuzali","html_url":"https://github.com/gurbuzali","followers_url":"https://api.github.com/users/gurbuzali/followers","following_url":"https://api.github.com/users/gurbuzali/following{/other_user}","gists_url":"https://api.github.com/users/gurbuzali/gists{/gist_id}","starred_url":"https://api.github.com/users/gurbuzali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gurbuzali/subscriptions","organizations_url":"https://api.github.com/users/gurbuzali/orgs","repos_url":"https://api.github.com/users/gurbuzali/repos","events_url":"https://api.github.com/users/gurbuzali/events{/privacy}","received_events_url":"https://api.github.com/users/gurbuzali/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-03-18T10:10:22Z","updated_at":"2017-03-20T13:41:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bfe542f8f449540dcb133422733a527083fccb8e","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/hazelcast/hazelcast-jet/milestones/4","html_url":"https://github.com/hazelcast/hazelcast-jet/milestone/4","labels_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/milestones/4/labels","id":2277164,"number":4,"title":"0.4","description":"","creator":{"login":"cangencer","id":510278,"avatar_url":"https://avatars3.githubusercontent.com/u/510278?v=3","gravatar_id":"","url":"https://api.github.com/users/cangencer","html_url":"https://github.com/cangencer","followers_url":"https://api.github.com/users/cangencer/followers","following_url":"https://api.github.com/users/cangencer/following{/other_user}","gists_url":"https://api.github.com/users/cangencer/gists{/gist_id}","starred_url":"https://api.github.com/users/cangencer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cangencer/subscriptions","organizations_url":"https://api.github.com/users/cangencer/orgs","repos_url":"https://api.github.com/users/cangencer/repos","events_url":"https://api.github.com/users/cangencer/events{/privacy}","received_events_url":"https://api.github.com/users/cangencer/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":1,"state":"open","created_at":"2017-01-25T13:37:59Z","updated_at":"2017-03-18T10:15:32Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357/commits","review_comments_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357/comments","review_comment_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/issues/357/comments","statuses_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/statuses/b561c1c739196f1604b3539abce723955fb95dd2","head":{"label":"gurbuzali:read-write-cache","ref":"read-write-cache","sha":"b561c1c739196f1604b3539abce723955fb95dd2","user":{"login":"gurbuzali","id":1741680,"avatar_url":"https://avatars0.githubusercontent.com/u/1741680?v=3","gravatar_id":"","url":"https://api.github.com/users/gurbuzali","html_url":"https://github.com/gurbuzali","followers_url":"https://api.github.com/users/gurbuzali/followers","following_url":"https://api.github.com/users/gurbuzali/following{/other_user}","gists_url":"https://api.github.com/users/gurbuzali/gists{/gist_id}","starred_url":"https://api.github.com/users/gurbuzali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gurbuzali/subscriptions","organizations_url":"https://api.github.com/users/gurbuzali/orgs","repos_url":"https://api.github.com/users/gurbuzali/repos","events_url":"https://api.github.com/users/gurbuzali/events{/privacy}","received_events_url":"https://api.github.com/users/gurbuzali/received_events","type":"User","site_admin":false},"repo":{"id":81182323,"name":"hazelcast-jet","full_name":"gurbuzali/hazelcast-jet","owner":{"login":"gurbuzali","id":1741680,"avatar_url":"https://avatars0.githubusercontent.com/u/1741680?v=3","gravatar_id":"","url":"https://api.github.com/users/gurbuzali","html_url":"https://github.com/gurbuzali","followers_url":"https://api.github.com/users/gurbuzali/followers","following_url":"https://api.github.com/users/gurbuzali/following{/other_user}","gists_url":"https://api.github.com/users/gurbuzali/gists{/gist_id}","starred_url":"https://api.github.com/users/gurbuzali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gurbuzali/subscriptions","organizations_url":"https://api.github.com/users/gurbuzali/orgs","repos_url":"https://api.github.com/users/gurbuzali/repos","events_url":"https://api.github.com/users/gurbuzali/events{/privacy}","received_events_url":"https://api.github.com/users/gurbuzali/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gurbuzali/hazelcast-jet","description":"A general purpose distributed data processing engine, built on top of Hazelcast.","fork":true,"url":"https://api.github.com/repos/gurbuzali/hazelcast-jet","forks_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/forks","keys_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/teams","hooks_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/hooks","issue_events_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/issues/events{/number}","events_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/events","assignees_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/assignees{/user}","branches_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/branches{/branch}","tags_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/tags","blobs_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/git/refs{/sha}","trees_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/statuses/{sha}","languages_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/languages","stargazers_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/stargazers","contributors_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/contributors","subscribers_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/subscribers","subscription_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/subscription","commits_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/commits{/sha}","git_commits_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/git/commits{/sha}","comments_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/comments{/number}","issue_comment_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/issues/comments{/number}","contents_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/contents/{+path}","compare_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/merges","archive_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/downloads","issues_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/issues{/number}","pulls_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/pulls{/number}","milestones_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/milestones{/number}","notifications_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/labels{/name}","releases_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/releases{/id}","deployments_url":"https://api.github.com/repos/gurbuzali/hazelcast-jet/deployments","created_at":"2017-02-07T07:59:00Z","updated_at":"2017-02-07T07:59:04Z","pushed_at":"2017-03-20T13:03:18Z","git_url":"git://github.com/gurbuzali/hazelcast-jet.git","ssh_url":"git@github.com:gurbuzali/hazelcast-jet.git","clone_url":"https://github.com/gurbuzali/hazelcast-jet.git","svn_url":"https://github.com/gurbuzali/hazelcast-jet","homepage":"http://jet.hazelcast.org","size":4357,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hazelcast:master","ref":"master","sha":"852feb951cfea8f6a89c83caaf99c2520f4af286","user":{"login":"hazelcast","id":1453152,"avatar_url":"https://avatars1.githubusercontent.com/u/1453152?v=3","gravatar_id":"","url":"https://api.github.com/users/hazelcast","html_url":"https://github.com/hazelcast","followers_url":"https://api.github.com/users/hazelcast/followers","following_url":"https://api.github.com/users/hazelcast/following{/other_user}","gists_url":"https://api.github.com/users/hazelcast/gists{/gist_id}","starred_url":"https://api.github.com/users/hazelcast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hazelcast/subscriptions","organizations_url":"https://api.github.com/users/hazelcast/orgs","repos_url":"https://api.github.com/users/hazelcast/repos","events_url":"https://api.github.com/users/hazelcast/events{/privacy}","received_events_url":"https://api.github.com/users/hazelcast/received_events","type":"Organization","site_admin":false},"repo":{"id":48046454,"name":"hazelcast-jet","full_name":"hazelcast/hazelcast-jet","owner":{"login":"hazelcast","id":1453152,"avatar_url":"https://avatars1.githubusercontent.com/u/1453152?v=3","gravatar_id":"","url":"https://api.github.com/users/hazelcast","html_url":"https://github.com/hazelcast","followers_url":"https://api.github.com/users/hazelcast/followers","following_url":"https://api.github.com/users/hazelcast/following{/other_user}","gists_url":"https://api.github.com/users/hazelcast/gists{/gist_id}","starred_url":"https://api.github.com/users/hazelcast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hazelcast/subscriptions","organizations_url":"https://api.github.com/users/hazelcast/orgs","repos_url":"https://api.github.com/users/hazelcast/repos","events_url":"https://api.github.com/users/hazelcast/events{/privacy}","received_events_url":"https://api.github.com/users/hazelcast/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hazelcast/hazelcast-jet","description":"A general purpose distributed data processing engine, built on top of Hazelcast.","fork":false,"url":"https://api.github.com/repos/hazelcast/hazelcast-jet","forks_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/forks","keys_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/teams","hooks_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/hooks","issue_events_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/issues/events{/number}","events_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/events","assignees_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/assignees{/user}","branches_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/branches{/branch}","tags_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/tags","blobs_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/git/refs{/sha}","trees_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/statuses/{sha}","languages_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/languages","stargazers_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/stargazers","contributors_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/contributors","subscribers_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/subscribers","subscription_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/subscription","commits_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/commits{/sha}","git_commits_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/git/commits{/sha}","comments_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/comments{/number}","issue_comment_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/issues/comments{/number}","contents_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/contents/{+path}","compare_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/merges","archive_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/downloads","issues_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/issues{/number}","pulls_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls{/number}","milestones_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/milestones{/number}","notifications_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/labels{/name}","releases_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/releases{/id}","deployments_url":"https://api.github.com/repos/hazelcast/hazelcast-jet/deployments","created_at":"2015-12-15T14:01:14Z","updated_at":"2017-03-19T14:26:47Z","pushed_at":"2017-03-20T13:03:20Z","git_url":"git://github.com/hazelcast/hazelcast-jet.git","ssh_url":"git@github.com:hazelcast/hazelcast-jet.git","clone_url":"https://github.com/hazelcast/hazelcast-jet.git","svn_url":"https://github.com/hazelcast/hazelcast-jet","homepage":"http://jet.hazelcast.org","size":4702,"stargazers_count":112,"watchers_count":112,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":31,"mirror_url":null,"open_issues_count":12,"forks":31,"open_issues":12,"watchers":112,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357"},"html":{"href":"https://github.com/hazelcast/hazelcast-jet/pull/357"},"issue":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/issues/357"},"comments":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/issues/357/comments"},"review_comments":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357/comments"},"review_comment":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/pulls/357/commits"},"statuses":{"href":"https://api.github.com/repos/hazelcast/hazelcast-jet/statuses/b561c1c739196f1604b3539abce723955fb95dd2"}}}}
{"actor":{"display_login":"cangencer"}}