This is an automated email from the ASF dual-hosted git repository. rnewson pushed a commit to branch auto-delete-3 in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit c7a019c2c36842d922cd5e3e51816b96d00510cc Author: Robert Newson <[email protected]> AuthorDate: Mon May 12 09:56:04 2025 +0100 use subrange uuid when known --- src/fabric/src/fabric_drop_seq.erl | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/fabric/src/fabric_drop_seq.erl b/src/fabric/src/fabric_drop_seq.erl index 466826cdc..e6bb24c43 100644 --- a/src/fabric/src/fabric_drop_seq.erl +++ b/src/fabric/src/fabric_drop_seq.erl @@ -267,7 +267,13 @@ parse_peer_checkpoint_docs_cb(_Else, Acc) -> merge_peers(_Key, {Uuid1, Val1}, {Uuid2, Val2}) when Uuid1 == undefined orelse Uuid2 == undefined, is_integer(Val1), is_integer(Val2) -> - {undefined, min(Val1, Val2)}; + { + if + is_binary(Uuid1) -> Uuid1; + true -> Uuid2 + end, + min(Val1, Val2) + }; merge_peers(_Key, {Uuid1, Val1}, {Uuid2, Val2}) when is_integer(Val1), is_integer(Val2) -> PrefixLen = min(byte_size(Uuid1), byte_size(Uuid2)), true = binary:longest_common_prefix([Uuid1, Uuid2]) == PrefixLen, @@ -702,19 +708,29 @@ substitute_splits_test() -> substitute_splits(Shards, PeerCheckpoints) ). -go_int_test() -> +go_int_test_() -> Range = [0, 10], Subrange1 = [0, 5], Subrange2 = [6, 10], Node1 = '[email protected]', Shards = [#shard{range = Subrange1, node = Node1}, #shard{range = Subrange2, node = Node1}], - PeerCheckpoints = #{{Range, Node1} => {<<"uuid1">>, 12}}, - ShardSyncHistory = #{}, - ?assertEqual( - {Shards, #{ - {Subrange1, Node1} => {undefined, 12}, {Subrange2, Node1} => {undefined, 12} - }}, - go_int(Shards, PeerCheckpoints, ShardSyncHistory) - ). + [ + ?_assertEqual( + {Shards, #{ + {Subrange1, Node1} => {undefined, 12}, {Subrange2, Node1} => {undefined, 12} + }}, + go_int(Shards, #{{Range, Node1} => {<<"uuid1">>, 12}}, #{}) + ), + ?_assertEqual( + {Shards, #{ + {Subrange1, Node1} => {<<"uuid2">>, 10}, {Subrange2, Node1} => {undefined, 12} + }}, + go_int( + Shards, + #{{Range, Node1} => {<<"uuid1">>, 12}, {Subrange1, Node1} => {<<"uuid2">>, 10}}, + #{} + ) + ) + ]. -endif.
