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 BEF2F200AC8 for ; Tue, 7 Jun 2016 13:05:11 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id BDAD0160A35; Tue, 7 Jun 2016 11:05:11 +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 E94AD160A4F for ; Tue, 7 Jun 2016 13:05:10 +0200 (CEST) Received: (qmail 66066 invoked by uid 500); 7 Jun 2016 11:05:06 -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 64823 invoked by uid 99); 7 Jun 2016 11:05:06 -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; Tue, 07 Jun 2016 11:05:06 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 14D32E08B6; Tue, 7 Jun 2016 11:05:06 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: rnewson@apache.org To: commits@couchdb.apache.org Date: Tue, 07 Jun 2016 11:05:48 -0000 Message-Id: In-Reply-To: <05a811a245ff4d31adf398f97210b371@git.apache.org> References: <05a811a245ff4d31adf398f97210b371@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [44/44] couch-replicator commit: updated refs/heads/63012-defensive to 1afa5ea archived-at: Tue, 07 Jun 2016 11:05:11 -0000 Remove defensive programming We now explicitly demonitor, so we should never get a DOWN message unless we have a job with a pid. Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/commit/1afa5ea0 Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/tree/1afa5ea0 Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/diff/1afa5ea0 Branch: refs/heads/63012-defensive Commit: 1afa5ea0cfe1375e44035d00d8c1dbb31b06ecf8 Parents: 5ca0376 Author: Robert Newson Authored: Tue Jun 7 12:04:08 2016 +0100 Committer: Robert Newson Committed: Tue Jun 7 12:04:08 2016 +0100 ---------------------------------------------------------------------- src/couch_replicator_scheduler.erl | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/blob/1afa5ea0/src/couch_replicator_scheduler.erl ---------------------------------------------------------------------- diff --git a/src/couch_replicator_scheduler.erl b/src/couch_replicator_scheduler.erl index 851aae9..8e30806 100644 --- a/src/couch_replicator_scheduler.erl +++ b/src/couch_replicator_scheduler.erl @@ -126,27 +126,19 @@ handle_info(reschedule, State) -> {noreply, State#state{timer = Timer}}; handle_info({'DOWN', _Ref, process, Pid, normal}, State) -> - case job_by_pid(Pid) of - {ok, #job{}=Job} -> - remove_job_int(Job); - _Else -> - ok - end, + {ok, Job} = job_by_pid(Pid), + couch_log:notice("~p: Job ~p completed normally", [?MODULE, Job#job.id]), + remove_job_int(Job), {noreply, State}; handle_info({'DOWN', _Ref, process, Pid, Reason}, State) -> - case job_by_pid(Pid) of - {ok, #job{}=Job0} -> - couch_log:notice("~p: Job ~p died with reason: ~p", - [?MODULE, Job0#job.id, Reason]), - Job1 = update_history(Job0#job{pid = undefined}, crashed, os:timestamp()), - true = ets:insert(?MODULE, Job1), - start_pending_jobs(State#state.max_jobs), - {noreply, State}; - {error, not_found} -> - % removed in remove_job and should not be reinserted. - {noreply, State} - end; + {ok, Job0} = job_by_pid(Pid), + couch_log:notice("~p: Job ~p died with reason: ~p", + [?MODULE, Job0#job.id, Reason]), + Job1 = update_history(Job0#job{pid = undefined}, crashed, os:timestamp()), + true = ets:insert(?MODULE, Job1), + start_pending_jobs(State#state.max_jobs), + {noreply, State}; handle_info(_, State) -> {noreply, State}. @@ -257,6 +249,7 @@ stop_job_int(#job{pid = undefined}) -> stop_job_int(#job{} = Job0) -> ok = couch_replicator_scheduler_sup:terminate_child(Job0#job.pid), + demonitor(Job0#job.pid, [flush]), Job1 = update_history(Job0#job{pid = undefined}, stopped, os:timestamp()), true = ets:insert(?MODULE, Job1), couch_log:notice("~p: Job ~p stopped as ~p",