{"action":"created","comment":{"url":"https://api.github.com/repos/basho/riak_cs/pulls/comments/41223900","id":41223900,"diff_hunk":"@@ -1,119 +1,135 @@\n-# Riak CS 2.1.0 Release Notes\n+#Riak S2 (Riak CS) 2.1.0 Release Notes\n \n-## General Information\n-\n-This release includes several garbage collection refinements, metrics\n-system and several other new features. Riak CS 2.1 is supposed to work\n-with both Riak 2.0.5 and 2.1.1.\n-\n-## Additions\n-\n-- Add several options to manual garbage collection batch command, for\n-  more flexible operation and to address race condition between\n-  replication and garbage collection. Specifically, `--leeway` for\n-  temporary leeway period, `--start` and `--end` for target period,\n-  `--max-workers` for temporary\n-  concurrency. [riak_cs/#1147](https://github.com/basho/riak_cs/pull/1147),\n-  [riak_cs/#1148](https://github.com/basho/riak_cs/pull/1148),\n-  [riak_cs/#1149](https://github.com/basho/riak_cs/pull/1149).\n-\n-- Refactor and rename `riak_cs_gc_d`, which is garbage collection\n-  daemon by splitting user-facing GC execution state machine and\n-  working GC daemon\n-  [riak_cs/#1144](https://github.com/basho/riak_cs/pull/1144).\n-\n-- Add several internal operation tools to help diagnose or address\n-  issues. [riak_cs/#1145](https://github.com/basho/riak_cs/pull/1145),\n-  [riak_cs/#1134](https://github.com/basho/riak_cs/pull/1134),\n-  [riak_cs/#1133](https://github.com/basho/riak_cs/pull/1133).\n-\n-- More detailed storage calculation has been introduced. Not only\n-  active manifests but stale manifests such as waiting for garbage\n-  collection, or currently being written objects will also be taken\n-  into account as new storage stats items. This will help accounting\n-  disk usage in more detail, although it does not take state of blocks\n-  whether they are halfway uploaded, or halfway deleted, or not.  This\n-  is still off by default, but can be turned on by setting\n-  `detailed_storage_calc` in\n-  `advanced.config`. [riak_cs/#1120](https://github.com/basho/riak_cs/pull/1120),\n-  [riak_cs/#1123](https://github.com/basho/riak_cs/pull/1123),\n-\n-- Module-level hook point for limiting user access and quota usage has\n-  been introduced, with very preliminary simple node-wide limiting\n-  example modules. Operators can make, plug in or combine different\n-  modules as quota-limiting, rate-limiting or bandwidth-limiting\n-  depeding on their unique\n-  requirements. [riak_cs/#1118](https://github.com/basho/riak_cs/pull/1118)\n-\n-\n-## New `riak-cs-admin gc` command\n-\n-Riak CS 2.0 and older has a race condition where fullsync replication\n-and garbage collection may resurrect deleted blocks without any\n-reference to delete them again. Also, combined with realtime\n-replication in case replication of GC bucket entry object dropped from\n-RTQ, blocks may remain in the sink side without being collected.\n-\n-To address these issues, Riak CS 2.1 introduced deterministic garbage\n-collection to avoid fullsync replication and garbage collection run\n-concurrently and working on same blocks and manifests. Operators can\n-specify the range of time period that garbage collector works on, to\n-collect deleted objects synchronously on both sink and source sides.\n-\n-For Riak CS 2.0 or older, the way to avoid this issue is as follows.\n-\n-Set `{delete_mode, keep}` at `riak_kv` section in `advanced.config` of\n-Riak. Instead this makes all tombstones remain forever in Riak, keys\n-of all deleted blocks remain in cluster consuming fair amount of\n-memory. Then blocks brought by fullsync will be ignored according to\n-the vector clock in sink side.\n-\n-For Riak CS 2.1, by using deterministic garbage collection this issue\n-can be addressed as follows.\n-\n-Deterministic garbage collection enables operator to control where the\n-garbage collector moves on - by specifying the target range of GC\n-bucket key range, with start and end timestamp, like:\n-\n-```\n-riak-cs-admin gc batch --end=20150801T000000Z\n-```\n-\n-This command means, garbage collector scans time slot starting from\n-`epoch_start` defined in `advanced.config` (or its default `<<\"0\">>`)\n-and deletes all blocks and manifests deleted in that time slot. After\n-this garbage collection finished in both sink and source sides, The\n-state of all manifests and blocks to be deleted are totally\n-aligned. With this state fullsync replication may run without any\n-inconsistency.\n+Released October 6, 2015.\n \n-This command is also useful to run garbage collection in incremental\n-trial-and-error manner by specifying start key of garbage collection\n-period like this:\n+This is a backwards-compatible* release that introduces a new metrics system, garbage collection refinements, and several other new features. Riak S2 2.1 is designed to work with both Riak KV 2.0.5+ and 2.1.1+.\n \n-```\n-riak-cs-admin gc batch --start=20150801T000000Z --end=20150901T000000Z\n-```\n-\n-See [this gist](https://gist.github.com/shino/1741d0fb7edd00cdd2ea)\n-for another case involving RTQ object drops.\n+**Note:** This release is backwards compatible only with the Riak S2 2.x series.\n \n-(TBD) A tool to know the state of GC bucket will be also added later.\n+###Riak KV 2.1.1 Usage Note\n+Riak KV 2.1.1 includes a copy of `riak_cs_kv_multi_backend`, therefore there is no need to add lines specifying special `multi_backend` and `add_paths` configurations in advanced.config.\n \n-## Usage combined with Riak 2.1\n-\n-Since Riak 2.1 includes a copy of `riak_cs_kv_multi_backend`, there\n-are no need to add long lines specifying special `multi_backend` and\n-`add_paths` configurations in Riak's `advanced.config`. Instead just\n-set\n+Instead, you can set the following in riak.conf:\n \n ```\n storage_backend = prefix_multi\n cs_version = 20100\n ```\n \n-in `riak.conf`. But if storage calculation is needed in your use case,\n-`add_paths` config is still needed to load MapReduce codes into Riak.\n+If you need storage calculation, you will still require the `add_paths` config to load MapReduce codes into Riak KV.\n+\n+\n+##New Features\n+###Metrics\n+New metrics have been added that enable you to determine the health of your Riak S2 system, as well as get reports on your storage utilization per bucket or user. The following stats items are available:\n+  * All calls, latencies, and counters in the S3 API\n+  * All calls, latencies, and counters in Stanchion\n+  * All Riak Erlang client operations, latencies, and counters\n+  * Information about the counts (active, idle, and overflow) for the process pool and connection pool\n+  * System information, versions, port count, and process count\n+  * Memory information about the riak-cs virtual machine\n+  * HTTP listener information: active sockets and waiting acceptors\n+\n+**Note:** stats item names from prior to 2.0.x are not preserved; they have been renamed or removed. No backward consistency is maintained. Please see [the documentation](http://docs.basho.com/riakcs/latest/cookbooks/Metrics/) for more information.\n+\n+* [[PR 1189](https://github.com/basho/riak_cs/pull/1189)]\n+* [[PR 1180](https://github.com/basho/riak_cs/pull/1180)]\n+* [[PR 1214](https://github.com/basho/riak_cs/pull/1214)]\n+* [[PR 1194](https://github.com/basho/riak_cs/pull/1194)]\n+* [[PR 99](https://github.com/basho/stanchion/pull/99)]\n+\n+Additional storage usage metrics are also available. . These metrics are gathered during storage calculation. Gathering these metrics is off by default, but you can turn it on by setting `detailed_storage_calc` to `true` in advanced.config. When you enable this option, you have access to information about how many manifests are `writing`, `pending_delete`, `scheduled_delete` and `active` which is not visible via the API.\n+\n+**Note:** Metrics do not always correctly reflect actual disk usage. For instance, `writing` may indicate more space than is actually used. Or, for example, if an upload was cancelled in the middle, the calculation does not know how much actual storage space is consumed. In the same way, `scheduled_delete` also may not reflect the exact amount of disk usage because blocks might already be partially deleted by garbage collection.\n+\n+* [[PR 1120](https://github.com/basho/riak_cs/pull/1120)]\n+\n+###`riak-cs-admin`\n+The following administration CLIs have been replaced by the [`riak-cs-admin` command](http://docs.basho.com/riakcs/latest/cookbooks/command-line-tools/):\n+\n+* `riak-cs-storage`\n+* `riak-cs-gc`\n+* `riak-cs-access`\n+* `riak-cs-stanchion`\n+\n+The commands listed above are deprecated and will be removed in future releases.\n+\n+* [[PR 1175](https://github.com/basho/riak_cs/pull/1175)]\n+\n+###Garbage Collection Refinements\n+Several new options have been added to the `riak-cs-admin gc` command:\n+\n+* `active_delete_threshold` is an option to avoid delegating manifests and block deletion to garbage collector. This option relieves garbage collector from having to delete small objects. This can optimise performance in cases where both garbage collector does not catch up with DELETE Object API calls and garbage collector's elapsed time is dominated by small objects.[[PR 1174](https://github.com/basho/riak_cs/pull/1174)]\n+* `--start` and `--end` options have been added to the `riak-cs-admin gc batch` command to specify start and end in manual batch execution. Note that the `--start` flag on the command line will overwrite the `epoch_start` option in advanced.config. [[PR 1147 ](https://github.com/basho/riak_cs/pull/1147)]\n+* `--leeway` has been added to create a temporary leeway period whose values are used only once and not repeated at the next run, and `--max-workers` has been added to allow you to override the concurrency value temporarily for a single run of garbage collector. [[PR 1147 ](https://github.com/basho/riak_cs/pull/1147)]\n+* Riak S2 2.0 (and older) has a race condition where fullsync replication and garbage collection may resurrect deleted blocks without any way to delete them again. When real-time replication and replication of a garbage collection bucket entry object being dropped from the real-time queue are combined, blocks may remain on the sink side without being collected. Riak S2 2.1 introduces deterministic garbage collection to avoid fullsync replication. Additionally, garbage collection and fullsync replication run concurrently, and work on the same blocks and manifests. You can now specify the range of time using the `--start` and `--end` flags with `riak-cs-admin gc batch` for garbage collector in order to collect deleted objects synchronously on both sink and source sides. [[PR 1147 ](https://github.com/basho/riak_cs/pull/1147)]\n+* `riak-cs-admin gc earliest-keys` is available so you can find the oldest entry after `epoch_start` in garbage collection. With this option, you can stay informed of garbage collection progress. [[PR 1160](https://github.com/basho/riak_cs/pull/1160)]\n+\n+More information on garbage collection can be found in the [documentation](http://docs.basho.com/riakcs/latest/cookbooks/garbage-collection/).\n+\n+\n+##Additions\n+###Open Source\n+* A MapReduce optimisation in fetching Riak objects was introduced in Riak 2.1. Now, Riak CS 2.1 introduces an option to use that optimisation in storage calculation. It is off by default, but it can be used by setting `use_2i_for_storage_calc` as `true` in advanced.config. This reduced 50% of I/O in LevelDB. [[PR 1089](https://github.com/basho/riak_cs/pull/1089)]\n+* Erlang/OTP 17 support is now included. [[PR 1245](https://github.com/basho/riak_cs/pull/1245) and [PR 1040](https://github.com/basho/stanchion/pull/1040)]\n+* A module-level hook point for limiting user access and quota usage is now available with very preliminary, simple, node-wide limiting example modules. Operators can make, plug in, or combine different modules as quota-limiting, rate-limiting or bandwidth-limiting depending on their unique requirements. [[PR 1118](https://github.com/basho/riak_cs/pull/1118)]\n+*  An orphaned block scanner is now available. [[PR 1133](https://github.com/basho/riak_cs/pull/1133)]\n+* `riak-cs-admin audit-bucket-ownership` is a new tool to check integrity between users and buckets added. For example, it can be used in cases where a bucket is visible when listing buckets but not accessible, or a bucket is visible and exists but could not be deleted. [[PR 1202](https://github.com/basho/riak_cs/pull/1202)]\n+* The following log rotation items have been added to cuttlefish:\n+    * log.console.size\n+    * log.console.rotation\n+    * log.console.rotation.keep\n+    * log.error.rotation\n+    * log.error.rotation.keep\n+    * log.error.size\n+\n+[[PR 1164](https://github.com/basho/riak_cs/pull/1164) and [PR 97](https://github.com/basho/stanchion/pull/97)]\n+\n+* `riak_cs_wm_common` now has a default callback of `multiple_choices`, which prevents `code_server` from becoming a bottleneck. [[PR 1181](https://github.com/basho/riak_cs/pull/1181)]\n+* An option has been added to replace the `N=all user GET` option with `N=quorum` just before authentication. This option improves latency, especially in the presence of slow (or actually-failing) nodes blocking the whole request flow because of N=all. When enabled, a user's owned-bucket list is never pruned after a bucket is deleted, instead it is just marked as deleted. [[PR 1191](https://github.com/basho/riak_cs/pull/1191)]\n+* An info log has been added when starting a storage calculation batch. [[PR 1238](https://github.com/basho/riak_cs/pull/1238)]\n+* `GET Bucket` requests now have clearer responses. A 501 stub for Bucket lifecycle and a  simple stub for Bucket requestPayment have been added. [[PR 1223](https://github.com/basho/riak_cs/pull/1223)]\n+* Several user-friendly features have been added to [`riak-cs-debug`](http://docs.basho.com/riakcs/latest/cookbooks/command-line-tools/): fine-grained information gathering options, user-defined filtering for configuration files, and verbose output for failed commands. [[PR 1236](https://github.com/basho/riak_cs/pull/1236)]\n+\n+###Enterprise\n+* MDC has `proxy_get`, which make block objects propagate to site clusters when they are requested. Now, multibag configuration with MDC supports `proxy_get`. [[PR 1171](https://github.com/basho/riak_cs/pull/1171) and [PR 25](https://github.com/basho/riak_cs_multibag/pull/25)]\n+* Configuration options to replicate blocks in realtime replication (`replicate_cs_blocks_realtime`) and to replicate block tombstones in realtime replication (`replicate_cs_block_tombstone`) are now available. `replicate_cs_blocks_realtime` relieves the load in fullsync replication (there will be a longer realtime queue in realtime replication and risk of dropping manifests or other important keys), and it is set to `false` by default. `replicate_cs_block_tombstone` causes source block deletes caused by garbage collection to be replicated to the sink cluster. This option is set to `true` by default. Both configuration options are set in the advanced.config of the Riak node, rather than in the Riak CS configuration. [[PR 678](https://github.com/basho/riak_repl/pull/678)]\n+* Several internal operation tools have been added to help diagnose or address\n+  issues. [[PR 1145](https://github.com/basho/riak_cs/pull/1145),\n+  [PR 1134](https://github.com/basho/riak_cs/pull/1134), and\n+  [PR 1133](https://github.com/basho/riak_cs/pull/1133)]\n+* Added a generic function for manual operations to resolve siblings of manifests and blocks, which will assist Basho Client Service Engineers with troubleshooting and solving issues. [[PR 1188](https://github.com/basho/riak_cs/pull/1188)]\n+\n+\n+##Changes\n+* Dependency versions have been updated in Riak S2 and Stanchion as follows: cuttlefish 2.0.4, node_package 2.0.3, riak-erlang-client 2.1.1, lager 2.1.1, lager_syslog 2.1.1, eper 0.92 (Basho patched), cluster_info 2.0.3, riak_repl_pb_api 2.1.1, and riak_cs_multibag 2.1.0. [[PR 1190](https://github.com/basho/riak_cs/pull/1190), [PR 1197 ](https://github.com/basho/riak_cs/pull/1197) , and [PR 27](https://github.com/basho/riak_cs_multibag/pull/27)].","path":"RELEASE-NOTES.md","position":210,"original_position":210,"commit_id":"c839c10809544bad15938c451ec48a1d6233dfe7","original_commit_id":"c839c10809544bad15938c451ec48a1d6233dfe7","user":{"login":"kuenishi","id":11440,"avatar_url":"https://avatars.githubusercontent.com/u/11440?v=3","gravatar_id":"","url":"https://api.github.com/users/kuenishi","html_url":"https://github.com/kuenishi","followers_url":"https://api.github.com/users/kuenishi/followers","following_url":"https://api.github.com/users/kuenishi/following{/other_user}","gists_url":"https://api.github.com/users/kuenishi/gists{/gist_id}","starred_url":"https://api.github.com/users/kuenishi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kuenishi/subscriptions","organizations_url":"https://api.github.com/users/kuenishi/orgs","repos_url":"https://api.github.com/users/kuenishi/repos","events_url":"https://api.github.com/users/kuenishi/events{/privacy}","received_events_url":"https://api.github.com/users/kuenishi/received_events","type":"User","site_admin":false},"body":"Lately we updated to lager 2.2.0 in https://github.com/basho/riak_cs/pull/1245 and https://github.com/basho/stanchion/pull/104 .","created_at":"2015-10-06T03:54:50Z","updated_at":"2015-10-06T03:54:50Z","html_url":"https://github.com/basho/riak_cs/pull/1256#discussion_r41223900","pull_request_url":"https://api.github.com/repos/basho/riak_cs/pulls/1256","_links":{"self":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/comments/41223900"},"html":{"href":"https://github.com/basho/riak_cs/pull/1256#discussion_r41223900"},"pull_request":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/1256"}}},"pull_request":{"url":"https://api.github.com/repos/basho/riak_cs/pulls/1256","id":46593484,"html_url":"https://github.com/basho/riak_cs/pull/1256","diff_url":"https://github.com/basho/riak_cs/pull/1256.diff","patch_url":"https://github.com/basho/riak_cs/pull/1256.patch","issue_url":"https://api.github.com/repos/basho/riak_cs/issues/1256","number":1256,"state":"open","locked":false,"title":"Update release notes for 2.1.0","user":{"login":"laurenrother","id":2624486,"avatar_url":"https://avatars.githubusercontent.com/u/2624486?v=3","gravatar_id":"","url":"https://api.github.com/users/laurenrother","html_url":"https://github.com/laurenrother","followers_url":"https://api.github.com/users/laurenrother/followers","following_url":"https://api.github.com/users/laurenrother/following{/other_user}","gists_url":"https://api.github.com/users/laurenrother/gists{/gist_id}","starred_url":"https://api.github.com/users/laurenrother/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/laurenrother/subscriptions","organizations_url":"https://api.github.com/users/laurenrother/orgs","repos_url":"https://api.github.com/users/laurenrother/repos","events_url":"https://api.github.com/users/laurenrother/events{/privacy}","received_events_url":"https://api.github.com/users/laurenrother/received_events","type":"User","site_admin":false},"body":"Add information for new features, changes, additions, and bugfixes completed for distribution with Riak S2 2.1.0 release.","created_at":"2015-10-02T00:40:46Z","updated_at":"2015-10-06T03:54:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9df18a88d95ee03dfa2fd2c20c7fa7e5b9917254","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/basho/riak_cs/pulls/1256/commits","review_comments_url":"https://api.github.com/repos/basho/riak_cs/pulls/1256/comments","review_comment_url":"https://api.github.com/repos/basho/riak_cs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/basho/riak_cs/issues/1256/comments","statuses_url":"https://api.github.com/repos/basho/riak_cs/statuses/c839c10809544bad15938c451ec48a1d6233dfe7","head":{"label":"laurenrother:2.1releasenotes","ref":"2.1releasenotes","sha":"c839c10809544bad15938c451ec48a1d6233dfe7","user":{"login":"laurenrother","id":2624486,"avatar_url":"https://avatars.githubusercontent.com/u/2624486?v=3","gravatar_id":"","url":"https://api.github.com/users/laurenrother","html_url":"https://github.com/laurenrother","followers_url":"https://api.github.com/users/laurenrother/followers","following_url":"https://api.github.com/users/laurenrother/following{/other_user}","gists_url":"https://api.github.com/users/laurenrother/gists{/gist_id}","starred_url":"https://api.github.com/users/laurenrother/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/laurenrother/subscriptions","organizations_url":"https://api.github.com/users/laurenrother/orgs","repos_url":"https://api.github.com/users/laurenrother/repos","events_url":"https://api.github.com/users/laurenrother/events{/privacy}","received_events_url":"https://api.github.com/users/laurenrother/received_events","type":"User","site_admin":false},"repo":{"id":34757595,"name":"riak_cs","full_name":"laurenrother/riak_cs","owner":{"login":"laurenrother","id":2624486,"avatar_url":"https://avatars.githubusercontent.com/u/2624486?v=3","gravatar_id":"","url":"https://api.github.com/users/laurenrother","html_url":"https://github.com/laurenrother","followers_url":"https://api.github.com/users/laurenrother/followers","following_url":"https://api.github.com/users/laurenrother/following{/other_user}","gists_url":"https://api.github.com/users/laurenrother/gists{/gist_id}","starred_url":"https://api.github.com/users/laurenrother/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/laurenrother/subscriptions","organizations_url":"https://api.github.com/users/laurenrother/orgs","repos_url":"https://api.github.com/users/laurenrother/repos","events_url":"https://api.github.com/users/laurenrother/events{/privacy}","received_events_url":"https://api.github.com/users/laurenrother/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/laurenrother/riak_cs","description":"Riak CS is simple, available cloud storage built on Riak.","fork":true,"url":"https://api.github.com/repos/laurenrother/riak_cs","forks_url":"https://api.github.com/repos/laurenrother/riak_cs/forks","keys_url":"https://api.github.com/repos/laurenrother/riak_cs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/laurenrother/riak_cs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/laurenrother/riak_cs/teams","hooks_url":"https://api.github.com/repos/laurenrother/riak_cs/hooks","issue_events_url":"https://api.github.com/repos/laurenrother/riak_cs/issues/events{/number}","events_url":"https://api.github.com/repos/laurenrother/riak_cs/events","assignees_url":"https://api.github.com/repos/laurenrother/riak_cs/assignees{/user}","branches_url":"https://api.github.com/repos/laurenrother/riak_cs/branches{/branch}","tags_url":"https://api.github.com/repos/laurenrother/riak_cs/tags","blobs_url":"https://api.github.com/repos/laurenrother/riak_cs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/laurenrother/riak_cs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/laurenrother/riak_cs/git/refs{/sha}","trees_url":"https://api.github.com/repos/laurenrother/riak_cs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/laurenrother/riak_cs/statuses/{sha}","languages_url":"https://api.github.com/repos/laurenrother/riak_cs/languages","stargazers_url":"https://api.github.com/repos/laurenrother/riak_cs/stargazers","contributors_url":"https://api.github.com/repos/laurenrother/riak_cs/contributors","subscribers_url":"https://api.github.com/repos/laurenrother/riak_cs/subscribers","subscription_url":"https://api.github.com/repos/laurenrother/riak_cs/subscription","commits_url":"https://api.github.com/repos/laurenrother/riak_cs/commits{/sha}","git_commits_url":"https://api.github.com/repos/laurenrother/riak_cs/git/commits{/sha}","comments_url":"https://api.github.com/repos/laurenrother/riak_cs/comments{/number}","issue_comment_url":"https://api.github.com/repos/laurenrother/riak_cs/issues/comments{/number}","contents_url":"https://api.github.com/repos/laurenrother/riak_cs/contents/{+path}","compare_url":"https://api.github.com/repos/laurenrother/riak_cs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/laurenrother/riak_cs/merges","archive_url":"https://api.github.com/repos/laurenrother/riak_cs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/laurenrother/riak_cs/downloads","issues_url":"https://api.github.com/repos/laurenrother/riak_cs/issues{/number}","pulls_url":"https://api.github.com/repos/laurenrother/riak_cs/pulls{/number}","milestones_url":"https://api.github.com/repos/laurenrother/riak_cs/milestones{/number}","notifications_url":"https://api.github.com/repos/laurenrother/riak_cs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/laurenrother/riak_cs/labels{/name}","releases_url":"https://api.github.com/repos/laurenrother/riak_cs/releases{/id}","created_at":"2015-04-28T21:46:21Z","updated_at":"2015-04-28T21:46:22Z","pushed_at":"2015-10-02T15:56:24Z","git_url":"git://github.com/laurenrother/riak_cs.git","ssh_url":"git@github.com:laurenrother/riak_cs.git","clone_url":"https://github.com/laurenrother/riak_cs.git","svn_url":"https://github.com/laurenrother/riak_cs","homepage":"http://docs.basho.com/riakcs/latest/","size":10669,"stargazers_count":0,"watchers_count":0,"language":"Erlang","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":"develop"}},"base":{"label":"basho:2.1","ref":"2.1","sha":"79c0152d64d45e4c01c9e6bcd15da89a2336b54d","user":{"login":"basho","id":176293,"avatar_url":"https://avatars.githubusercontent.com/u/176293?v=3","gravatar_id":"","url":"https://api.github.com/users/basho","html_url":"https://github.com/basho","followers_url":"https://api.github.com/users/basho/followers","following_url":"https://api.github.com/users/basho/following{/other_user}","gists_url":"https://api.github.com/users/basho/gists{/gist_id}","starred_url":"https://api.github.com/users/basho/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/basho/subscriptions","organizations_url":"https://api.github.com/users/basho/orgs","repos_url":"https://api.github.com/users/basho/repos","events_url":"https://api.github.com/users/basho/events{/privacy}","received_events_url":"https://api.github.com/users/basho/received_events","type":"Organization","site_admin":false},"repo":{"id":2513151,"name":"riak_cs","full_name":"basho/riak_cs","owner":{"login":"basho","id":176293,"avatar_url":"https://avatars.githubusercontent.com/u/176293?v=3","gravatar_id":"","url":"https://api.github.com/users/basho","html_url":"https://github.com/basho","followers_url":"https://api.github.com/users/basho/followers","following_url":"https://api.github.com/users/basho/following{/other_user}","gists_url":"https://api.github.com/users/basho/gists{/gist_id}","starred_url":"https://api.github.com/users/basho/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/basho/subscriptions","organizations_url":"https://api.github.com/users/basho/orgs","repos_url":"https://api.github.com/users/basho/repos","events_url":"https://api.github.com/users/basho/events{/privacy}","received_events_url":"https://api.github.com/users/basho/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/basho/riak_cs","description":"Riak CS is simple, available cloud storage built on Riak.","fork":false,"url":"https://api.github.com/repos/basho/riak_cs","forks_url":"https://api.github.com/repos/basho/riak_cs/forks","keys_url":"https://api.github.com/repos/basho/riak_cs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/basho/riak_cs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/basho/riak_cs/teams","hooks_url":"https://api.github.com/repos/basho/riak_cs/hooks","issue_events_url":"https://api.github.com/repos/basho/riak_cs/issues/events{/number}","events_url":"https://api.github.com/repos/basho/riak_cs/events","assignees_url":"https://api.github.com/repos/basho/riak_cs/assignees{/user}","branches_url":"https://api.github.com/repos/basho/riak_cs/branches{/branch}","tags_url":"https://api.github.com/repos/basho/riak_cs/tags","blobs_url":"https://api.github.com/repos/basho/riak_cs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/basho/riak_cs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/basho/riak_cs/git/refs{/sha}","trees_url":"https://api.github.com/repos/basho/riak_cs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/basho/riak_cs/statuses/{sha}","languages_url":"https://api.github.com/repos/basho/riak_cs/languages","stargazers_url":"https://api.github.com/repos/basho/riak_cs/stargazers","contributors_url":"https://api.github.com/repos/basho/riak_cs/contributors","subscribers_url":"https://api.github.com/repos/basho/riak_cs/subscribers","subscription_url":"https://api.github.com/repos/basho/riak_cs/subscription","commits_url":"https://api.github.com/repos/basho/riak_cs/commits{/sha}","git_commits_url":"https://api.github.com/repos/basho/riak_cs/git/commits{/sha}","comments_url":"https://api.github.com/repos/basho/riak_cs/comments{/number}","issue_comment_url":"https://api.github.com/repos/basho/riak_cs/issues/comments{/number}","contents_url":"https://api.github.com/repos/basho/riak_cs/contents/{+path}","compare_url":"https://api.github.com/repos/basho/riak_cs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/basho/riak_cs/merges","archive_url":"https://api.github.com/repos/basho/riak_cs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/basho/riak_cs/downloads","issues_url":"https://api.github.com/repos/basho/riak_cs/issues{/number}","pulls_url":"https://api.github.com/repos/basho/riak_cs/pulls{/number}","milestones_url":"https://api.github.com/repos/basho/riak_cs/milestones{/number}","notifications_url":"https://api.github.com/repos/basho/riak_cs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/basho/riak_cs/labels{/name}","releases_url":"https://api.github.com/repos/basho/riak_cs/releases{/id}","created_at":"2011-10-04T16:16:25Z","updated_at":"2015-10-05T14:09:17Z","pushed_at":"2015-10-06T03:26:11Z","git_url":"git://github.com/basho/riak_cs.git","ssh_url":"git@github.com:basho/riak_cs.git","clone_url":"https://github.com/basho/riak_cs.git","svn_url":"https://github.com/basho/riak_cs","homepage":"http://docs.basho.com/riakcs/latest/","size":23764,"stargazers_count":390,"watchers_count":390,"language":"Erlang","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":63,"mirror_url":null,"open_issues_count":149,"forks":63,"open_issues":149,"watchers":390,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/1256"},"html":{"href":"https://github.com/basho/riak_cs/pull/1256"},"issue":{"href":"https://api.github.com/repos/basho/riak_cs/issues/1256"},"comments":{"href":"https://api.github.com/repos/basho/riak_cs/issues/1256/comments"},"review_comments":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/1256/comments"},"review_comment":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/1256/commits"},"statuses":{"href":"https://api.github.com/repos/basho/riak_cs/statuses/c839c10809544bad15938c451ec48a1d6233dfe7"}}}}