summaryrefslogtreecommitdiff
path: root/src/couchdb/couch_rep_missing_revs.erl
diff options
context:
space:
mode:
authorAdam Kocoloski <kocolosk@apache.org>2009-09-21 20:29:22 +0000
committerAdam Kocoloski <kocolosk@apache.org>2009-09-21 20:29:22 +0000
commit688cf651f9b7867bd54e80ac978c8827eea698b9 (patch)
treee71971b9b1ecdf40f88c54b2b2cd4b4f8f849489 /src/couchdb/couch_rep_missing_revs.erl
parentce97451ef23bc74d1d8855c04f456eac35315b90 (diff)
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
Diffstat (limited to 'src/couchdb/couch_rep_missing_revs.erl')
-rw-r--r--src/couchdb/couch_rep_missing_revs.erl17
1 files changed, 10 insertions, 7 deletions
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,