{"action":"created","comment":{"url":"https://api.github.com/repos/basho/riak_cs/pulls/comments/30300822","id":30300822,"diff_hunk":"@@ -0,0 +1,285 @@\n+%% ---------------------------------------------------------------------\n+%%\n+%% Copyright (c) 2007-2015 Basho Technologies, Inc.  All Rights Reserved.\n+%%\n+%% This file is provided to you under the Apache License,\n+%% Version 2.0 (the \"License\"); you may not use this file\n+%% except in compliance with the License.  You may obtain\n+%% 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,\n+%% software distributed under the License is distributed on an\n+%% \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n+%% KIND, either express or implied.  See the License for the\n+%% specific language governing permissions and limitations\n+%% under the License.\n+%%\n+%% ---------------------------------------------------------------------\n+%%\n+%% State Diagram\n+%%\n+%% start -> idle -(start)-> running\n+%%            ^               |\n+%%            +----(finish)---+\n+%%            +----(stop)-----+\n+%%\n+%% Message excange chart (not a sequence, but just a list)\n+%%\n+%%  Message\\  sdr/rcver  gc_manager    gc_batch\n+%%   spawn_link)                   --->\n+%%   cancel)                       --->\n+%%   finished)                     <---\n+%%\n+-module(riak_cs_gc_manager).\n+\n+-behaviour(gen_fsm).\n+\n+%% Console API\n+-export([start_batch/1,\n+         cancel_batch/0,\n+         set_interval/1,\n+         status/0,\n+         pp_status/0]).\n+\n+%% FSM API\n+-export([start_link/0, finished/1]).\n+\n+-ifdef(TEST).\n+-export([test_link/0]).\n+-endif.\n+\n+%% gen_fsm callbacks\n+-export([init/1,\n+         handle_event/3,\n+         handle_sync_event/4, handle_info/3, terminate/3, code_change/4]).\n+\n+-export([idle/2, idle/3,\n+         running/2, running/3]).\n+\n+-type statename() :: idle | running.\n+-export_type([statename/0]).\n+\n+-include(\"riak_cs_gc.hrl\").\n+\n+-define(SERVER, ?MODULE).\n+\n+%%%===================================================================\n+%%% API\n+%%%===================================================================\n+\n+start_batch(Options) ->\n+    gen_fsm:sync_send_event(?SERVER, {start, Options}, infinity).\n+\n+cancel_batch() ->\n+    gen_fsm:sync_send_event(?SERVER, cancel, infinity).\n+\n+-spec status() -> {ok, {statename(), #gc_manager_state{}}}.\n+status() ->\n+    gen_fsm:sync_send_all_state_event(?SERVER, status, infinity).\n+\n+-spec pp_status() -> {ok, {statename(), proplists:proplist()}}.\n+pp_status() ->\n+    {ok, {StateName, State}} = status(),\n+    D = lists:zip(record_info(fields, gc_manager_state),\n+                  tl(tuple_to_list(State))),\n+    Details = lists:flatten(lists:map(fun({Type, Value}) ->\n+                                              translate(Type, Value)\n+                                      end, D)),\n+    {ok, {StateName,\n+          [{leeway, riak_cs_gc:leeway_seconds()}] ++ Details}}.\n+\n+%% @doc Adjust the interval at which the daemon attempts to perform\n+%% a garbage collection sweep. Setting the interval to a value of\n+%% `infinity' effectively disable garbage collection. The daemon still\n+%% runs, but does not carry out any file deletion.\n+-spec set_interval(term()) -> ok | {error, term()}.\n+set_interval(Interval) when is_integer(Interval)\n+                            orelse Interval =:= infinity ->\n+    gen_fsm:sync_send_all_state_event(?SERVER, {set_interval, Interval}, infinity).\n+\n+start_link() ->\n+    gen_fsm:start_link({local, ?SERVER}, ?MODULE, [], []).\n+\n+-ifdef(TEST).\n+test_link() ->\n+    gen_fsm:start_link({local, ?SERVER}, ?MODULE, [testing], []).\n+\n+-endif.\n+\n+\n+finished(Report) ->\n+    gen_fsm:sync_send_event(?SERVER, {finished, Report}, infinity).\n+\n+%%%===================================================================\n+%%% gen_fsm callbacks\n+%%%===================================================================\n+\n+init([]) ->\n+    process_flag(trap_exit, true),\n+    InitialDelay = riak_cs_gc:initial_gc_delay(),\n+    State = case riak_cs_gc:gc_interval() of\n+                infinity ->\n+                    #gc_manager_state{};\n+                Interval when is_integer(Interval) ->\n+                    Next = riak_cs_gc:timestamp() + InitialDelay,\n+                    TimerRef = erlang:send_after(InitialDelay * 1000, self(), {start, []}),\n+                    #gc_manager_state{next=Next,\n+                                      interval=Interval,\n+                                      initial_delay=InitialDelay,\n+                                      timer_ref=TimerRef}\n+        end,\n+    {ok, idle, State};\n+init([testing]) ->\n+    {ok, idle, #gc_manager_state{}}.\n+\n+%%--------------------------------------------------------------------\n+%% @private\n+%% @doc All gen_fsm:send_event/2 call should be ignored\n+idle(_Event, State) ->\n+    {next_state, idle, State}.\n+running(_Event, State) ->\n+    {next_state, running, State}.\n+\n+%% @private\n+%% @doc\n+idle({start, Options}, _From, State) ->\n+    MaxWorkers =  riak_cs_gc:gc_max_workers(),\n+    %% StartKey = proplists:get_value(start, Options,\n+    %%                                riak_cs_gc:epoch_start()),\n+    BatchStart = riak_cs_gc:timestamp(),\n+    %% EndKey = proplists:get_value('end', Options, BatchStart),\n+    Leeway = proplists:get_value(leeway, Options,\n+                                 riak_cs_gc:leeway_seconds()),\n+\n+    %% set many items to GCDState here\n+    GCDState = #gc_batch_state{\n+                  batch_start=BatchStart,\n+                  leeway=Leeway,\n+                  max_workers=MaxWorkers},\n+\n+    case riak_cs_gc_batch:start_link(GCDState) of\n+        {ok, Pid} ->\n+            {reply, ok, running,\n+             State#gc_manager_state{gc_batch_pid=Pid,\n+                                    current_batch=GCDState}};\n+        Error ->\n+            {reply, Error, idle, State}\n+    end;\n+idle(_, _From, State) ->\n+    {reply, {error, idle}, idle, State}.\n+\n+running(cancel, _From, State = #gc_manager_state{gc_batch_pid=Pid}) ->\n+    %% stop gc_batch here\n+    catch riak_cs_gc_batch:stop(Pid),\n+    NextState=schedule_next(State),\n+    {reply, ok, idle, NextState#gc_manager_state{gc_batch_pid=undefined}};\n+running({finished, Report}, _From, State = #gc_manager_state{batch_history=H}) ->\n+    %% Add report to history\n+    NextState=schedule_next(State),\n+    {reply, ok, idle,\n+     NextState#gc_manager_state{gc_batch_pid=undefined,\n+                                batch_history=[Report|H]}};\n+running(_Event, _From, State) ->\n+    Reply = {error, running},\n+    {reply, Reply, running, State}.\n+\n+%% @private\n+%% @doc Not used.\n+handle_event(_Event, StateName, State) ->\n+    {next_state, StateName, State}.\n+\n+%% @private\n+%% @doc\n+handle_sync_event({set_interval, Initerval}, _From, StateName, State) ->","path":"src/riak_cs_gc_manager.erl","position":195,"original_position":195,"commit_id":"bf40bf1a842b051b3dd93b355fa80601828eaab5","original_commit_id":"bf40bf1a842b051b3dd93b355fa80601828eaab5","user":{"login":"shino","id":10225,"avatar_url":"https://avatars.githubusercontent.com/u/10225?v=3","gravatar_id":"","url":"https://api.github.com/users/shino","html_url":"https://github.com/shino","followers_url":"https://api.github.com/users/shino/followers","following_url":"https://api.github.com/users/shino/following{/other_user}","gists_url":"https://api.github.com/users/shino/gists{/gist_id}","starred_url":"https://api.github.com/users/shino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shino/subscriptions","organizations_url":"https://api.github.com/users/shino/orgs","repos_url":"https://api.github.com/users/shino/repos","events_url":"https://api.github.com/users/shino/events{/privacy}","received_events_url":"https://api.github.com/users/shino/received_events","type":"User","site_admin":false},"body":"It's better to set application environment variable here. I guess original (before refactoring) code lacks it... :sweat_smile: \r\n\r\nMore simply, just set app env var and remove interval field from state record is alternative.","created_at":"2015-05-14T06:39:27Z","updated_at":"2015-05-14T06:39:27Z","html_url":"https://github.com/basho/riak_cs/pull/1144#discussion_r30300822","pull_request_url":"https://api.github.com/repos/basho/riak_cs/pulls/1144","_links":{"self":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/comments/30300822"},"html":{"href":"https://github.com/basho/riak_cs/pull/1144#discussion_r30300822"},"pull_request":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/1144"}}},"pull_request":{"url":"https://api.github.com/repos/basho/riak_cs/pulls/1144","id":34918479,"html_url":"https://github.com/basho/riak_cs/pull/1144","diff_url":"https://github.com/basho/riak_cs/pull/1144.diff","patch_url":"https://github.com/basho/riak_cs/pull/1144.patch","issue_url":"https://api.github.com/repos/basho/riak_cs/issues/1144","number":1144,"state":"open","locked":false,"title":"Extract out console facing FSM from riak_cs_gc_d","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":"riak_cs_gc_d used to have bunch of complex states not only name of\r\nstates exposed in gen_fsm, but also many elements in gc_d_state\r\nrecord. This commit extracts operator-facing states such as idle,\r\npaused, running from riak_cs_gc_d. riak_cs_gc_d is not a long-running\r\nworker under supervision tree any more, but riak_cs_gc_manager is.\r\nThe lifecycle of riak_cs_gc_d is now as long as one GC batch - if the\r\nGC has finished then riak_cs_gc_d process terminates.\r\n\r\nSee comments in both riak_cs_gc_d.erl and riak_cs_gc_manager.erl for\r\ndetail state diagram and description.","created_at":"2015-05-07T14:03:43Z","updated_at":"2015-05-14T06:39:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"94c451dc2e5a9f66147890e8330444cc50050676","assignee":null,"milestone":{"url":"https://api.github.com/repos/basho/riak_cs/milestones/18","html_url":"https://github.com/basho/riak_cs/milestones/2.1.0","labels_url":"https://api.github.com/repos/basho/riak_cs/milestones/18/labels","id":1087473,"number":18,"title":"2.1.0","description":"","creator":{"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},"open_issues":2,"closed_issues":8,"state":"open","created_at":"2015-04-28T13:37:13Z","updated_at":"2015-05-13T06:07:55Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/basho/riak_cs/pulls/1144/commits","review_comments_url":"https://api.github.com/repos/basho/riak_cs/pulls/1144/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/1144/comments","statuses_url":"https://api.github.com/repos/basho/riak_cs/statuses/bf40bf1a842b051b3dd93b355fa80601828eaab5","head":{"label":"basho:refactor/split-gc-d","ref":"refactor/split-gc-d","sha":"bf40bf1a842b051b3dd93b355fa80601828eaab5","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-05-12T06:39:19Z","pushed_at":"2015-05-14T05:26:34Z","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":23394,"stargazers_count":369,"watchers_count":369,"language":"Erlang","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":55,"mirror_url":null,"open_issues_count":147,"forks":55,"open_issues":147,"watchers":369,"default_branch":"develop"}},"base":{"label":"basho:develop","ref":"develop","sha":"83a7eb2b07a2ad4b3aa5f56953eacb99be825dac","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-05-12T06:39:19Z","pushed_at":"2015-05-14T05:26:34Z","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":23394,"stargazers_count":369,"watchers_count":369,"language":"Erlang","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":55,"mirror_url":null,"open_issues_count":147,"forks":55,"open_issues":147,"watchers":369,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/1144"},"html":{"href":"https://github.com/basho/riak_cs/pull/1144"},"issue":{"href":"https://api.github.com/repos/basho/riak_cs/issues/1144"},"comments":{"href":"https://api.github.com/repos/basho/riak_cs/issues/1144/comments"},"review_comments":{"href":"https://api.github.com/repos/basho/riak_cs/pulls/1144/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/1144/commits"},"statuses":{"href":"https://api.github.com/repos/basho/riak_cs/statuses/bf40bf1a842b051b3dd93b355fa80601828eaab5"}}}}