Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 54CD9200C54 for ; Wed, 1 Mar 2017 17:37:41 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 53889160B70; Wed, 1 Mar 2017 16:37:41 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 04FD6160B8D for ; Wed, 1 Mar 2017 17:37:39 +0100 (CET) Received: (qmail 68185 invoked by uid 500); 1 Mar 2017 16:37:37 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 66716 invoked by uid 99); 1 Mar 2017 16:37:36 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Mar 2017 16:37:36 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 71A56DFDAC; Wed, 1 Mar 2017 16:37:36 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: kocolosk@apache.org To: commits@couchdb.apache.org Date: Wed, 01 Mar 2017 16:38:03 -0000 Message-Id: <900a400b718c420ab37bf7bdfa83e16f@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [29/43] couch-mrview commit: updated refs/heads/2971-count-distinct to f7c3c24 archived-at: Wed, 01 Mar 2017 16:37:41 -0000 Update with couch_index_updater:update/3 Handle '$gen_cast' messages in receive Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/commit/0d382f5f Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/tree/0d382f5f Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/diff/0d382f5f Branch: refs/heads/2971-count-distinct Commit: 0d382f5fd210b3413b3e4c07ad65458004821bf6 Parents: 1d5c6a5 Author: Jay Doane Authored: Mon Oct 10 13:19:56 2016 -0700 Committer: Jay Doane Committed: Mon Oct 10 13:19:56 2016 -0700 ---------------------------------------------------------------------- src/couch_mrview_compactor.erl | 47 ++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/blob/0d382f5f/src/couch_mrview_compactor.erl ---------------------------------------------------------------------- diff --git a/src/couch_mrview_compactor.erl b/src/couch_mrview_compactor.erl index d5ea763..50e7eae 100644 --- a/src/couch_mrview_compactor.erl +++ b/src/couch_mrview_compactor.erl @@ -149,32 +149,41 @@ compact(State) -> recompact(State) -> - RetryCount = config:get_integer("view_compaction", "recompact_retry_count", - ?DEFAULT_RECOMPACT_RETRY_COUNT), - recompact(State, RetryCount). - -recompact(State, 0) -> - couch_log:error("couch_mrview_compactor:recompact max retries exceeded ~p", - [State]), - {ok, State}; -recompact(State, Attempt) -> + recompact(State, recompact_retry_count()). + +recompact(_State, 0) -> + erlang:error(exceeded_recompact_retry_count); + +recompact(State, RetryCount) -> + Self = self(), link(State#mrst.fd), {Pid, Ref} = erlang:spawn_monitor(fun() -> - couch_index_updater:update(couch_mrview_index, State) + couch_index_updater:update(Self, couch_mrview_index, State) end), + recompact_loop(Pid, Ref, State, RetryCount). + +recompact_loop(Pid, Ref, State, RetryCount) -> receive - {'DOWN', Ref, _, _, Result} -> + {'$gen_cast', {new_state, State2}} -> + % We've made progress so reset RetryCount + recompact_loop(Pid, Ref, State2, recompact_retry_count()); + {'DOWN', Ref, _, _, {updated, Pid, State2}} -> unlink(State#mrst.fd), - case Result of - {updated, Pid, State2} -> - {ok, State2}; - Error -> - couch_log:info("couch_mrview_compactor:recompact error ~p", - [Error]), - recompact(State, Attempt - 1) - end + {ok, State2}; + {'DOWN', Ref, _, _, Reason} -> + unlink(State#mrst.fd), + couch_log:warning("Error during recompaction: ~r", [Reason]), + recompact(State, RetryCount - 1) end. +recompact_retry_count() -> + config:get_integer( + "view_compaction", + "recompact_retry_count", + ?DEFAULT_RECOMPACT_RETRY_COUNT + ). + + compact_log(LogBtree, BufferSize, Acc0) -> FoldFun = fun(KV, Acc) -> #acc{btree = Bt, kvs = Kvs, kvs_size = KvsSize} = Acc,