diff options
author | Peng Hui Jiang <jiangphcn@apache.org> | 2018-09-05 11:39:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-05 11:39:18 +0800 |
commit | 485e9ca62135808b4f82d18733efd051cf1563d4 (patch) | |
tree | 71bb9f22f308820a724c5ceb7e54fb26f6d5462e | |
parent | 32ff5f7cca3f20527fcb5b3aac45062ce45f85a6 (diff) | |
parent | 1a75eecfff740713d6c9b474745e6cb40f5a52c3 (diff) | |
download | couchdb-485e9ca62135808b4f82d18733efd051cf1563d4.tar.gz |
Merge pull request #1568 from cloudant/log-changes-rewind-reasons
Log error when changes forced to rewind to beginning
-rw-r--r-- | src/couch/src/couch_db.erl | 11 | ||||
-rw-r--r-- | src/fabric/src/fabric_view_changes.erl | 10 | ||||
-rw-r--r-- | src/mem3/src/mem3_rep.erl | 7 |
3 files changed, 24 insertions, 4 deletions
diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl index 8e932b2ed..55664e964 100644 --- a/src/couch/src/couch_db.erl +++ b/src/couch/src/couch_db.erl @@ -1448,9 +1448,17 @@ calculate_start_seq(Db, _Node, {Seq, Uuid, EpochNode}) -> true -> case is_owner(EpochNode, Seq, get_epochs(Db)) of true -> Seq; - false -> 0 + false -> + couch_log:warning("~p calculate_start_seq not owner " + "db: ~p, seq: ~p, uuid: ~p, epoch_node: ~p, epochs: ~p", + [?MODULE, Db#db.name, Seq, Uuid, EpochNode, + get_epochs(Db)]), + 0 end; false -> + couch_log:warning("~p calculate_start_seq uuid prefix mismatch " + "db: ~p, seq: ~p, uuid: ~p, epoch_node: ~p", + [?MODULE, Db#db.name, Seq, Uuid, EpochNode]), %% The file was rebuilt, most likely in a different %% order, so rewind. 0 @@ -1882,6 +1890,7 @@ calculate_start_seq_test_() -> setup_start_seq() -> meck:new(couch_db_engine, [passthrough]), meck:expect(couch_db_engine, get_uuid, fun(_) -> <<"foo">> end), + ok = meck:expect(couch_log, warning, 2, ok), Epochs = [ {node2, 10}, {node1, 1} diff --git a/src/fabric/src/fabric_view_changes.erl b/src/fabric/src/fabric_view_changes.erl index 37397447b..7288f1aa5 100644 --- a/src/fabric/src/fabric_view_changes.erl +++ b/src/fabric/src/fabric_view_changes.erl @@ -456,11 +456,13 @@ do_unpack_seqs(Opaque, DbName) -> end. -get_old_seq(#shard{range=R}, SinceSeqs) -> +get_old_seq(#shard{range=R}=Shard, SinceSeqs) -> case lists:keyfind(R, 2, SinceSeqs) of - {_Node, R, Seq} when is_number(Seq) -> + {Node, R, Seq} when is_number(Seq) -> % Unfortunately we don't have access to the db % uuid so we can't set a replacememnt here. + couch_log:warning("~p get_old_seq missing uuid " + "node: ~p, range: ~p, seq: ~p", [?MODULE, Node, R, Seq]), 0; {Node, R, {Seq, Uuid}} -> % This update seq is using the old format that @@ -471,7 +473,9 @@ get_old_seq(#shard{range=R}, SinceSeqs) -> % This is the newest sequence format that we % can use for replacement. {Seq, Uuid, EpochNode}; - _ -> + Error -> + couch_log:warning("~p get_old_seq error: ~p, shard: ~p, seqs: ~p", + [?MODULE, Error, Shard, SinceSeqs]), 0 end. diff --git a/src/mem3/src/mem3_rep.erl b/src/mem3/src/mem3_rep.erl index 03178cf5c..5920f3bd4 100644 --- a/src/mem3/src/mem3_rep.erl +++ b/src/mem3/src/mem3_rep.erl @@ -173,6 +173,9 @@ find_source_seq(SrcDb, TgtNode, TgtUUIDPrefix, TgtSeq) -> SrcNode = atom_to_binary(node(), utf8), find_source_seq_int(Doc, SrcNode, TgtNode, TgtUUID, TgtSeq); {not_found, _} -> + couch_log:warning("~p find_source_seq repl doc not_found " + "src_db: ~p, tgt_node: ~p, tgt_uuid_prefix: ~p, tgt_seq: ~p", + [?MODULE, SrcDb, TgtNode, TgtUUIDPrefix, TgtSeq]), 0 end. @@ -202,6 +205,10 @@ find_source_seq_int(#doc{body={Props}}, SrcNode0, TgtNode0, TgtUUID, TgtSeq) -> [{Entry} | _] -> couch_util:get_value(<<"source_seq">>, Entry); [] -> + couch_log:warning("~p find_source_seq_int nil useable history " + "src_node: ~p, tgt_node: ~p, tgt_uuid: ~p, tgt_seq: ~p, " + "src_history: ~p", + [?MODULE, SrcNode, TgtNode, TgtUUID, TgtSeq, SrcHistory]), 0 end. |