You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2014/08/06 20:18:16 UTC
[26/27] couch-replicator commit: updated refs/heads/windsor-merge to
75e5ba1
Owner must be live
BugzID: 31712
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/22e9ff48
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/tree/22e9ff48
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/diff/22e9ff48
Branch: refs/heads/windsor-merge
Commit: 22e9ff4838b29f0a1080a82a4845808caf96fa6c
Parents: f90b6e0
Author: Robert Newson <rn...@apache.org>
Authored: Mon Jun 16 13:37:58 2014 +0100
Committer: Robert Newson <rn...@apache.org>
Committed: Thu Jul 31 11:56:46 2014 +0100
----------------------------------------------------------------------
src/couch_replicator_manager.erl | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-couch-replicator/blob/22e9ff48/src/couch_replicator_manager.erl
----------------------------------------------------------------------
diff --git a/src/couch_replicator_manager.erl b/src/couch_replicator_manager.erl
index bcb6462..c145b75 100644
--- a/src/couch_replicator_manager.erl
+++ b/src/couch_replicator_manager.erl
@@ -380,7 +380,7 @@ rescan(#state{scan_pid = ScanPid} = State) ->
process_update(State, DbName, {Change}) ->
{RepProps} = JsonRepDoc = get_json_value(doc, Change),
DocId = get_json_value(<<"_id">>, RepProps),
- case {is_owner(DbName, DocId), get_json_value(deleted, Change, false)} of
+ case {owner(DbName, DocId), get_json_value(deleted, Change, false)} of
{_, true} ->
rep_doc_deleted(DbName, DocId),
State;
@@ -405,12 +405,11 @@ process_update(State, DbName, {Change}) ->
end
end.
-
-is_owner(<<"shards/", _/binary>>=DbName, DocId) ->
- mem3_util:owner(mem3:dbname(DbName), DocId);
-is_owner(_, _) ->
- true.
-
+owner(DbName, DocId) ->
+ Live = [node()|nodes()],
+ Nodes = lists:sort([N || #shard{node=N} <- mem3:shards(DbName, DocId),
+ lists:member(N, Live)]),
+ node() =:= hd(mem3_util:rotate_list({DbName, DocId}, Nodes)).
rep_db_update_error(Error, DbName, DocId) ->
case Error of