{"action":"created","comment":{"url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/comments/59535832","id":59535832,"diff_hunk":"@@ -0,0 +1,154 @@\n+/*\n+ * Changes for SnappyData additions and modifications.\n+ *\n+ * Portions Copyright (c) 2016 SnappyData, Inc. All rights reserved.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\"); you\n+ * may not use this file except in compliance with the License. You\n+ * 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\n+ * implied. See the License for the specific language governing\n+ * permissions and limitations under the License. See accompanying\n+ * LICENSE file.\n+ */\n+\n+package org.apache.spark.sql\n+\n+import java.util.concurrent.{ScheduledExecutorService, TimeUnit}\n+\n+import scala.collection.mutable\n+\n+import io.snappydata.Constant._\n+\n+import org.apache.spark.SparkContext\n+import org.apache.spark.sql.execution.ConnectionPool\n+import org.apache.spark.sql.execution.columnar.ExternalStoreUtils\n+import org.apache.spark.sql.sources.ConnectionProperties\n+import org.apache.spark.util.ThreadUtils\n+\n+\n+object SnappyAnalyticsService {\n+\tprivate var tableStats = scala.collection.mutable.Map[String, MemoryAnalytics]()\n+\tprivate var analyticsExecutor: ScheduledExecutorService =\n+\t\tThreadUtils.newDaemonSingleThreadScheduledExecutor(\"SnappyAnalyticsService\")\n+\tprivate var connProperties: ConnectionProperties = null\n+\tprivate val readWriteLock = new LockUtils.ReadWriteLock()\n+\n+\tdef start(sc: SparkContext): Unit = {\n+\t\tconnProperties =\n+\t\t\t\tExternalStoreUtils.validateAndGetAllProps(sc, mutable.Map.empty[String, String])\n+\t\tval delayInMillisconds = sc.getConf.getOption(\"spark.snappy.analyticsService.interval\")\n+\t\t\t\t.getOrElse(DEFAULT_ANALYTICS_SERVICE_INTERVAL).toString\n+\t\tif (analyticsExecutor.isShutdown) {\n+\t\t\tanalyticsExecutor =\n+\t\t\t\t\tThreadUtils.newDaemonSingleThreadScheduledExecutor(\"SnappyAnalyticsService\")\n+\t\t}\n+\t\tanalyticsExecutor.scheduleWithFixedDelay(\n+\t\t\tgetTotalMemoryUsagePerTable, DEFAULT_ANALYTICS_SERVICE_INTERVAL,\n+\t\t\tdelayInMillisconds.toLong, TimeUnit.MILLISECONDS)\n+\t}\n+\n+\tdef stop: Unit = {\n+\t\tif (!analyticsExecutor.isShutdown) {\n+\t\t\tanalyticsExecutor.shutdownNow()\n+\t\t\tanalyticsExecutor.awaitTermination(DEFAULT_ANALYTICS_SERVICE_INTERVAL, TimeUnit.MILLISECONDS)\n+\t\t}\n+\t}\n+\n+\tprivate def getTotalMemoryUsagePerTable = new Runnable {\n+\t\toverride def run(): Unit = {\n+\t\t\tval currentTableStats = scala.collection.mutable.Map[String, MemoryAnalytics]()\n+\t\t\tval stmt = \"select TABLE_NAME,\" +\n+\t\t\t\t\t\" SUM(ENTRY_SIZE), \" +\n+\t\t\t\t\t\"SUM(KEY_SIZE), \" +\n+\t\t\t\t\t\"SUM(VALUE_SIZE),\" +\n+\t\t\t\t\t\"SUM(VALUE_SIZE_OFFHEAP),\" +\n+\t\t\t\t\t\"SUM(TOTAL_SIZE)\" +\n+\t\t\t\t\t\"from SYS.MEMORYANALYTICS \" +\n+\t\t\t\t\t\"WHERE table_name not like 'HIVE_METASTORE%'  group by TABLE_NAME\"\n+\t\t\tval connection = ConnectionPool.getPoolConnection(\"SYS.MEMORYANALYTICS\",\n+\t\t\t\tconnProperties.dialect, connProperties.poolProps, connProperties.connProps,\n+\t\t\t\tconnProperties.hikariCP)\n+\t\t\tval rs = connection.prepareStatement(stmt).executeQuery()\n+\t\t\twhile (rs.next()) {\n+\t\t\t\tval name = rs.getString(1)\n+\t\t\t\tval entrySize = convertToBytes(rs.getString(2))\n+\t\t\t\tval keySize = convertToBytes(rs.getString(3))\n+\t\t\t\tval valueSize = convertToBytes(rs.getString(4))\n+\t\t\t\tval valueSizeOffHeap = convertToBytes(rs.getString(5))\n+\t\t\t\tval totalSize = convertToBytes(rs.getString(6))\n+\t\t\t\tcurrentTableStats.put(name,\n+\t\t\t\t\tnew MemoryAnalytics(entrySize, keySize, valueSize, valueSizeOffHeap, totalSize))\n+\t\t\t}\n+\n+\t\t\treadWriteLock.executeInWriteLock(tableStats = currentTableStats)\n+\t\t\trs.close()\n+\t\t\tconnection.close()\n+\t\t}\n+\t}\n+\n+\tprivate def convertToBytes(value: String): Long = (value.toDouble * 1024).toLong\n+\n+\tprivate def getRowBufferName(columnStoreName: String): String = {\n+\t\tDEFAULT_SCHEMA +\n+\t\t\t\t(columnStoreName.replace(SHADOW_TABLE_SUFFIX, \"\").\n+\t\t\t\t\t\treplace(INTERNAL_SCHEMA_NAME, \"\")).trim\n+\t}\n+\n+\tprivate def isColumnTable(tablename: String): Boolean =\n+\t\ttablename.startsWith(INTERNAL_SCHEMA_NAME) && tablename.endsWith(SHADOW_TABLE_SUFFIX)\n+\n+\n+\tprivate def getValue(tableName: String, isColumnTable: Boolean = false): Long = {","path":"snappy-core/src/main/scala/org/apache/spark/sql/SnappyAnalyticsService.scala","position":107,"original_position":107,"commit_id":"e005d4e5b75249b6e87648e0eee521dbaf052c6a","original_commit_id":"e005d4e5b75249b6e87648e0eee521dbaf052c6a","user":{"login":"rishitesh","id":793775,"avatar_url":"https://avatars.githubusercontent.com/u/793775?v=3","gravatar_id":"","url":"https://api.github.com/users/rishitesh","html_url":"https://github.com/rishitesh","followers_url":"https://api.github.com/users/rishitesh/followers","following_url":"https://api.github.com/users/rishitesh/following{/other_user}","gists_url":"https://api.github.com/users/rishitesh/gists{/gist_id}","starred_url":"https://api.github.com/users/rishitesh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rishitesh/subscriptions","organizations_url":"https://api.github.com/users/rishitesh/orgs","repos_url":"https://api.github.com/users/rishitesh/repos","events_url":"https://api.github.com/users/rishitesh/events{/privacy}","received_events_url":"https://api.github.com/users/rishitesh/received_events","type":"User","site_admin":false},"body":"getValue() sounds a generic name and suggests all kind of metrics can be obtained, where as it only returns size. If possible declare constants for metrics and pass the required metrics to this method. \r\n\r\nprivate def getValue(tableName: String, isColumnTable: Boolean = false, metricsName : String):","created_at":"2016-04-13T12:04:59Z","updated_at":"2016-04-13T12:04:59Z","html_url":"https://github.com/SnappyDataInc/snappydata/pull/212#discussion_r59535832","pull_request_url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212","_links":{"self":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/comments/59535832"},"html":{"href":"https://github.com/SnappyDataInc/snappydata/pull/212#discussion_r59535832"},"pull_request":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212"}}},"pull_request":{"url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212","id":65658998,"html_url":"https://github.com/SnappyDataInc/snappydata/pull/212","diff_url":"https://github.com/SnappyDataInc/snappydata/pull/212.diff","patch_url":"https://github.com/SnappyDataInc/snappydata/pull/212.patch","issue_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/212","number":212,"state":"open","locked":false,"title":"Snap 626","user":{"login":"nthanvi","id":13985470,"avatar_url":"https://avatars.githubusercontent.com/u/13985470?v=3","gravatar_id":"","url":"https://api.github.com/users/nthanvi","html_url":"https://github.com/nthanvi","followers_url":"https://api.github.com/users/nthanvi/followers","following_url":"https://api.github.com/users/nthanvi/following{/other_user}","gists_url":"https://api.github.com/users/nthanvi/gists{/gist_id}","starred_url":"https://api.github.com/users/nthanvi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nthanvi/subscriptions","organizations_url":"https://api.github.com/users/nthanvi/orgs","repos_url":"https://api.github.com/users/nthanvi/repos","events_url":"https://api.github.com/users/nthanvi/events{/privacy}","received_events_url":"https://api.github.com/users/nthanvi/received_events","type":"User","site_admin":false},"body":"## Changes proposed in this pull request\r\n\r\n1. Added a new service that read row and column table size from store at regular interval.\r\n\r\n2. the column table and row table value count is provided to sizeInBytes field so that query optimization can calculate the query cost correctly\r\n\r\n3. Added a new tab \"Snappy\" in spark UI tab and it show rows and column tables sizes  from snappy store.\r\nrows table shows only the table name and size\r\ncolumn table shows table name , row  buffer size, column table size and total size\r\n\r\n## Patch testing\r\nadded a unit test\r\n\r\n## Other PRs \r\n\r\n(Does this change required changes in other projects- store, spark, spark-jobserver, aqp? Add the links of PR of the other subprojects that are related to this change)\r\nNo\r\n","created_at":"2016-04-07T16:22:48Z","updated_at":"2016-04-13T12:04:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"222e7072f519f1b0beb6f9cf478f6ebd1827db3e","assignee":{"login":"sumwale","id":11540628,"avatar_url":"https://avatars.githubusercontent.com/u/11540628?v=3","gravatar_id":"","url":"https://api.github.com/users/sumwale","html_url":"https://github.com/sumwale","followers_url":"https://api.github.com/users/sumwale/followers","following_url":"https://api.github.com/users/sumwale/following{/other_user}","gists_url":"https://api.github.com/users/sumwale/gists{/gist_id}","starred_url":"https://api.github.com/users/sumwale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sumwale/subscriptions","organizations_url":"https://api.github.com/users/sumwale/orgs","repos_url":"https://api.github.com/users/sumwale/repos","events_url":"https://api.github.com/users/sumwale/events{/privacy}","received_events_url":"https://api.github.com/users/sumwale/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212/commits","review_comments_url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212/comments","review_comment_url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/212/comments","statuses_url":"https://api.github.com/repos/SnappyDataInc/snappydata/statuses/e005d4e5b75249b6e87648e0eee521dbaf052c6a","head":{"label":"SnappyDataInc:SNAP-626","ref":"SNAP-626","sha":"e005d4e5b75249b6e87648e0eee521dbaf052c6a","user":{"login":"SnappyDataInc","id":11342682,"avatar_url":"https://avatars.githubusercontent.com/u/11342682?v=3","gravatar_id":"","url":"https://api.github.com/users/SnappyDataInc","html_url":"https://github.com/SnappyDataInc","followers_url":"https://api.github.com/users/SnappyDataInc/followers","following_url":"https://api.github.com/users/SnappyDataInc/following{/other_user}","gists_url":"https://api.github.com/users/SnappyDataInc/gists{/gist_id}","starred_url":"https://api.github.com/users/SnappyDataInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SnappyDataInc/subscriptions","organizations_url":"https://api.github.com/users/SnappyDataInc/orgs","repos_url":"https://api.github.com/users/SnappyDataInc/repos","events_url":"https://api.github.com/users/SnappyDataInc/events{/privacy}","received_events_url":"https://api.github.com/users/SnappyDataInc/received_events","type":"Organization","site_admin":false},"repo":{"id":42580991,"name":"snappydata","full_name":"SnappyDataInc/snappydata","owner":{"login":"SnappyDataInc","id":11342682,"avatar_url":"https://avatars.githubusercontent.com/u/11342682?v=3","gravatar_id":"","url":"https://api.github.com/users/SnappyDataInc","html_url":"https://github.com/SnappyDataInc","followers_url":"https://api.github.com/users/SnappyDataInc/followers","following_url":"https://api.github.com/users/SnappyDataInc/following{/other_user}","gists_url":"https://api.github.com/users/SnappyDataInc/gists{/gist_id}","starred_url":"https://api.github.com/users/SnappyDataInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SnappyDataInc/subscriptions","organizations_url":"https://api.github.com/users/SnappyDataInc/orgs","repos_url":"https://api.github.com/users/SnappyDataInc/repos","events_url":"https://api.github.com/users/SnappyDataInc/events{/privacy}","received_events_url":"https://api.github.com/users/SnappyDataInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SnappyDataInc/snappydata","description":"SnappyData: OLTP + OLAP Database built on Apache Spark","fork":false,"url":"https://api.github.com/repos/SnappyDataInc/snappydata","forks_url":"https://api.github.com/repos/SnappyDataInc/snappydata/forks","keys_url":"https://api.github.com/repos/SnappyDataInc/snappydata/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SnappyDataInc/snappydata/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SnappyDataInc/snappydata/teams","hooks_url":"https://api.github.com/repos/SnappyDataInc/snappydata/hooks","issue_events_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/events{/number}","events_url":"https://api.github.com/repos/SnappyDataInc/snappydata/events","assignees_url":"https://api.github.com/repos/SnappyDataInc/snappydata/assignees{/user}","branches_url":"https://api.github.com/repos/SnappyDataInc/snappydata/branches{/branch}","tags_url":"https://api.github.com/repos/SnappyDataInc/snappydata/tags","blobs_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/refs{/sha}","trees_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SnappyDataInc/snappydata/statuses/{sha}","languages_url":"https://api.github.com/repos/SnappyDataInc/snappydata/languages","stargazers_url":"https://api.github.com/repos/SnappyDataInc/snappydata/stargazers","contributors_url":"https://api.github.com/repos/SnappyDataInc/snappydata/contributors","subscribers_url":"https://api.github.com/repos/SnappyDataInc/snappydata/subscribers","subscription_url":"https://api.github.com/repos/SnappyDataInc/snappydata/subscription","commits_url":"https://api.github.com/repos/SnappyDataInc/snappydata/commits{/sha}","git_commits_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/commits{/sha}","comments_url":"https://api.github.com/repos/SnappyDataInc/snappydata/comments{/number}","issue_comment_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/comments{/number}","contents_url":"https://api.github.com/repos/SnappyDataInc/snappydata/contents/{+path}","compare_url":"https://api.github.com/repos/SnappyDataInc/snappydata/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SnappyDataInc/snappydata/merges","archive_url":"https://api.github.com/repos/SnappyDataInc/snappydata/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SnappyDataInc/snappydata/downloads","issues_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues{/number}","pulls_url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls{/number}","milestones_url":"https://api.github.com/repos/SnappyDataInc/snappydata/milestones{/number}","notifications_url":"https://api.github.com/repos/SnappyDataInc/snappydata/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SnappyDataInc/snappydata/labels{/name}","releases_url":"https://api.github.com/repos/SnappyDataInc/snappydata/releases{/id}","deployments_url":"https://api.github.com/repos/SnappyDataInc/snappydata/deployments","created_at":"2015-09-16T10:36:36Z","updated_at":"2016-04-11T21:22:37Z","pushed_at":"2016-04-13T11:46:59Z","git_url":"git://github.com/SnappyDataInc/snappydata.git","ssh_url":"git@github.com:SnappyDataInc/snappydata.git","clone_url":"https://github.com/SnappyDataInc/snappydata.git","svn_url":"https://github.com/SnappyDataInc/snappydata","homepage":"http://www.snappydata.io","size":142152,"stargazers_count":246,"watchers_count":246,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":28,"mirror_url":null,"open_issues_count":13,"forks":28,"open_issues":13,"watchers":246,"default_branch":"master"}},"base":{"label":"SnappyDataInc:master","ref":"master","sha":"e33060d67e5f41a188495be006d47d58dd34e6f0","user":{"login":"SnappyDataInc","id":11342682,"avatar_url":"https://avatars.githubusercontent.com/u/11342682?v=3","gravatar_id":"","url":"https://api.github.com/users/SnappyDataInc","html_url":"https://github.com/SnappyDataInc","followers_url":"https://api.github.com/users/SnappyDataInc/followers","following_url":"https://api.github.com/users/SnappyDataInc/following{/other_user}","gists_url":"https://api.github.com/users/SnappyDataInc/gists{/gist_id}","starred_url":"https://api.github.com/users/SnappyDataInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SnappyDataInc/subscriptions","organizations_url":"https://api.github.com/users/SnappyDataInc/orgs","repos_url":"https://api.github.com/users/SnappyDataInc/repos","events_url":"https://api.github.com/users/SnappyDataInc/events{/privacy}","received_events_url":"https://api.github.com/users/SnappyDataInc/received_events","type":"Organization","site_admin":false},"repo":{"id":42580991,"name":"snappydata","full_name":"SnappyDataInc/snappydata","owner":{"login":"SnappyDataInc","id":11342682,"avatar_url":"https://avatars.githubusercontent.com/u/11342682?v=3","gravatar_id":"","url":"https://api.github.com/users/SnappyDataInc","html_url":"https://github.com/SnappyDataInc","followers_url":"https://api.github.com/users/SnappyDataInc/followers","following_url":"https://api.github.com/users/SnappyDataInc/following{/other_user}","gists_url":"https://api.github.com/users/SnappyDataInc/gists{/gist_id}","starred_url":"https://api.github.com/users/SnappyDataInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SnappyDataInc/subscriptions","organizations_url":"https://api.github.com/users/SnappyDataInc/orgs","repos_url":"https://api.github.com/users/SnappyDataInc/repos","events_url":"https://api.github.com/users/SnappyDataInc/events{/privacy}","received_events_url":"https://api.github.com/users/SnappyDataInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SnappyDataInc/snappydata","description":"SnappyData: OLTP + OLAP Database built on Apache Spark","fork":false,"url":"https://api.github.com/repos/SnappyDataInc/snappydata","forks_url":"https://api.github.com/repos/SnappyDataInc/snappydata/forks","keys_url":"https://api.github.com/repos/SnappyDataInc/snappydata/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SnappyDataInc/snappydata/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SnappyDataInc/snappydata/teams","hooks_url":"https://api.github.com/repos/SnappyDataInc/snappydata/hooks","issue_events_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/events{/number}","events_url":"https://api.github.com/repos/SnappyDataInc/snappydata/events","assignees_url":"https://api.github.com/repos/SnappyDataInc/snappydata/assignees{/user}","branches_url":"https://api.github.com/repos/SnappyDataInc/snappydata/branches{/branch}","tags_url":"https://api.github.com/repos/SnappyDataInc/snappydata/tags","blobs_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/refs{/sha}","trees_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SnappyDataInc/snappydata/statuses/{sha}","languages_url":"https://api.github.com/repos/SnappyDataInc/snappydata/languages","stargazers_url":"https://api.github.com/repos/SnappyDataInc/snappydata/stargazers","contributors_url":"https://api.github.com/repos/SnappyDataInc/snappydata/contributors","subscribers_url":"https://api.github.com/repos/SnappyDataInc/snappydata/subscribers","subscription_url":"https://api.github.com/repos/SnappyDataInc/snappydata/subscription","commits_url":"https://api.github.com/repos/SnappyDataInc/snappydata/commits{/sha}","git_commits_url":"https://api.github.com/repos/SnappyDataInc/snappydata/git/commits{/sha}","comments_url":"https://api.github.com/repos/SnappyDataInc/snappydata/comments{/number}","issue_comment_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/comments{/number}","contents_url":"https://api.github.com/repos/SnappyDataInc/snappydata/contents/{+path}","compare_url":"https://api.github.com/repos/SnappyDataInc/snappydata/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SnappyDataInc/snappydata/merges","archive_url":"https://api.github.com/repos/SnappyDataInc/snappydata/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SnappyDataInc/snappydata/downloads","issues_url":"https://api.github.com/repos/SnappyDataInc/snappydata/issues{/number}","pulls_url":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls{/number}","milestones_url":"https://api.github.com/repos/SnappyDataInc/snappydata/milestones{/number}","notifications_url":"https://api.github.com/repos/SnappyDataInc/snappydata/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SnappyDataInc/snappydata/labels{/name}","releases_url":"https://api.github.com/repos/SnappyDataInc/snappydata/releases{/id}","deployments_url":"https://api.github.com/repos/SnappyDataInc/snappydata/deployments","created_at":"2015-09-16T10:36:36Z","updated_at":"2016-04-11T21:22:37Z","pushed_at":"2016-04-13T11:46:59Z","git_url":"git://github.com/SnappyDataInc/snappydata.git","ssh_url":"git@github.com:SnappyDataInc/snappydata.git","clone_url":"https://github.com/SnappyDataInc/snappydata.git","svn_url":"https://github.com/SnappyDataInc/snappydata","homepage":"http://www.snappydata.io","size":142152,"stargazers_count":246,"watchers_count":246,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":28,"mirror_url":null,"open_issues_count":13,"forks":28,"open_issues":13,"watchers":246,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212"},"html":{"href":"https://github.com/SnappyDataInc/snappydata/pull/212"},"issue":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/212"},"comments":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/issues/212/comments"},"review_comments":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212/comments"},"review_comment":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/pulls/212/commits"},"statuses":{"href":"https://api.github.com/repos/SnappyDataInc/snappydata/statuses/e005d4e5b75249b6e87648e0eee521dbaf052c6a"}}}}