From 688cf651f9b7867bd54e80ac978c8827eea698b9 Mon Sep 17 00:00:00 2001 From: Adam Kocoloski Date: Mon, 21 Sep 2009 20:29:22 +0000 Subject: attempt at gentler replication shutdown when one of the DBs is deleted git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@817403 13f79535-47bb-0310-9956-ffa450edef68 --- src/couchdb/couch_rep_missing_revs.erl | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/couchdb/couch_rep_missing_revs.erl') diff --git a/src/couchdb/couch_rep_missing_revs.erl b/src/couchdb/couch_rep_missing_revs.erl index 59ab30ec..847a00db 100644 --- a/src/couchdb/couch_rep_missing_revs.erl +++ b/src/couchdb/couch_rep_missing_revs.erl @@ -131,8 +131,7 @@ handle_changes_loop_exit(normal, State) -> {noreply, State#state{complete=true, changes_loop=nil}} end; handle_changes_loop_exit(Reason, State) -> - ?LOG_ERROR("changes_loop died with reason ~p", [Reason]), - {stop, changes_loop_died, State#state{changes_loop=nil}}. + {stop, Reason, State#state{changes_loop=nil}}. changes_loop(OurServer, SourceChangesServer, Target) -> case couch_rep_changes_feed:next(SourceChangesServer) of @@ -156,11 +155,15 @@ get_missing_revs(#http_db{}=Target, Changes) -> body = {IdRevsList} }, {Resp} = couch_rep_httpc:request(Request), - {MissingRevs} = proplists:get_value(<<"missing_revs">>, Resp), - X = [{Id, dict:fetch(Id, SeqDict), couch_doc:parse_revs(RevStrs)} || - {Id,RevStrs} <- MissingRevs], - {HighSeq, X}; - + case proplists:get_value(<<"missing_revs">>, Resp) of + {MissingRevs} -> + X = [{Id, dict:fetch(Id, SeqDict), couch_doc:parse_revs(RevStrs)} || + {Id,RevStrs} <- MissingRevs], + {HighSeq, X}; + _ -> + exit({target_error, proplists:get_value(<<"error">>, Resp)}) + end; + get_missing_revs(Target, Changes) -> Transform = fun({[{<<"seq">>,_}, {<<"id">>,Id}, {<<"changes">>,C}]}) -> {Id, [R || {[{<<"rev">>, R}]} <- C]} end, -- cgit v1.2.3