basho / riak_kv

Riak Key/Value Store
Apache License 2.0
653 stars 233 forks source link

Allow nextgenrepl to real-time replicate reaps (#6) #1879

Open martinsumner opened 1 year ago

martinsumner commented 1 year ago

This is to address the issue of reaping across sync'd clusters. Without this feature it is necessary to disable full-sync whilst independently replicating on each cluster.

Now if reaping via riak_kv_reaper the reap will be replicated assuming the riak_kv.repl_reap flag has been enabled. At the receiving cluster the reap will not be replicated any further.

There are some API changes to support this. The find_tombs aae_fold will now return Keys/Clocks and not Keys/DeleteHash. The ReapReference for riak_kv_repaer will now expect a clock (version vector) not a DeleteHash, and will also now expect an additional boolean to indicate if this repl is a replication candidate (it will be false for all pushed reaps).

The object encoding for nextgenrepl now has a flag to indicate a reap, with a special encoding for reap references.

Clarify specs

martinsumner commented 1 year ago

Related PRs:

https://github.com/basho/riak_test/pull/1383 https://github.com/basho/riak-erlang-client/pull/412 https://github.com/basho/riak-erlang-http-client/pull/88