Repository: couchdb-couch-index
Updated Branches:
  refs/heads/master 8ec83cf48 -> aa8e6f957


Extract commit_compacted function


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/commit/b8bfca7f
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/tree/b8bfca7f
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/diff/b8bfca7f

Branch: refs/heads/master
Commit: b8bfca7ff0edb6790c57f5d082e296865ff7ff52
Parents: 8ec83cf
Author: ILYA Khlopotov <iil...@ca.ibm.com>
Authored: Fri May 13 08:22:55 2016 -0700
Committer: ILYA Khlopotov <iil...@ca.ibm.com>
Committed: Tue May 17 11:47:30 2016 -0700

----------------------------------------------------------------------
 src/couch_index.erl | 46 +++++++++++++++++++++++++---------------------
 1 file changed, 25 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/blob/b8bfca7f/src/couch_index.erl
----------------------------------------------------------------------
diff --git a/src/couch_index.erl b/src/couch_index.erl
index 2b19cca..25fc62a 100644
--- a/src/couch_index.erl
+++ b/src/couch_index.erl
@@ -191,9 +191,7 @@ handle_call(get_compactor_pid, _From, State) ->
 handle_call({compacted, NewIdxState}, _From, State) ->
     #st{
         mod=Mod,
-        idx_state=OldIdxState,
-        updater=Updater,
-        commit_delay=Delay
+        idx_state=OldIdxState
     } = State,
     assert_signature_match(Mod, OldIdxState, NewIdxState),
     NewSeq = Mod:get(update_seq, NewIdxState),
@@ -202,26 +200,10 @@ handle_call({compacted, NewIdxState}, _From, State) ->
     % up to date with the current index. Otherwise indexes could roll back
     % (perhaps considerably) to previous points in history.
     case NewSeq >= OldSeq of
-        true ->
-            {ok, NewIdxState1} = Mod:swap_compacted(OldIdxState, NewIdxState),
-            % Restart the indexer if it's running.
-            case couch_index_updater:is_running(Updater) of
-                true -> ok = couch_index_updater:restart(Updater, 
NewIdxState1);
-                false -> ok
-            end,
-            case State#st.committed of
-                true -> erlang:send_after(Delay, self(), commit);
-                false -> ok
-            end,
-            {reply, ok, State#st{
-                idx_state=NewIdxState1,
-                committed=false
-            }};
-        _ ->
-            {reply, recompact, State}
+        true -> {reply, ok, commit_compacted(NewIdxState, State)};
+        false -> {reply, recompact, State}
     end.
 
-
 handle_cast({config_change, NewDelay}, State) ->
     MsDelay = 1000 * list_to_integer(NewDelay),
     {noreply, State#st{commit_delay=MsDelay}};
@@ -407,3 +389,25 @@ assert_signature_match(Mod, OldIdxState, NewIdxState) ->
         {Sig, Sig} -> ok;
         _ -> erlang:error(signature_mismatch)
     end.
+
+commit_compacted(NewIdxState, State) ->
+    #st{
+        mod=Mod,
+        idx_state=OldIdxState,
+        updater=Updater,
+        commit_delay=Delay
+    } = State,
+    {ok, NewIdxState1} = Mod:swap_compacted(OldIdxState, NewIdxState),
+    % Restart the indexer if it's running.
+    case couch_index_updater:is_running(Updater) of
+        true -> ok = couch_index_updater:restart(Updater, NewIdxState1);
+        false -> ok
+    end,
+    case State#st.committed of
+        true -> erlang:send_after(Delay, self(), commit);
+        false -> ok
+    end,
+    State#st{
+        idx_state=NewIdxState1,
+        committed=false
+     }.

Reply via email to