From 35f4233dcf454638ad889100a9dd6afdd77833bb Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Tue, 17 Jan 2023 20:43:32 +0000 Subject: [PATCH 1/7] planned combination for 3.0.13 https://github.com/basho/eleveldb/pull/269 to be added once issues are resolved --- rebar.config | 2 +- rebar.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rebar.config b/rebar.config index d8b90e00a..991fc8e1c 100644 --- a/rebar.config +++ b/rebar.config @@ -11,7 +11,7 @@ {deps, [ {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.1"}}}, {cluster_info, {git, "https://github.com/basho/cluster_info.git", {tag, "2.1.0"}}}, - {riak_kv, {git, "https://github.com/basho/riak_kv.git", {tag, "riak_kv-3.0.12"}}}, + {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "mas-i994-readrepair"}}}, {riak_auth_mods, {git, "https://github.com/basho/riak_auth_mods.git", {tag, "riak_kv-3.0.10"}}}, {riaknostic, {git, "https://github.com/basho/riaknostic.git", {tag, "riak_kv-3.0.10"}}}, diff --git a/rebar.lock b/rebar.lock index 81c271e1e..3aa2dd956 100644 --- a/rebar.lock +++ b/rebar.lock @@ -61,13 +61,13 @@ {ref,"5c8eb6ec82fa45ff0f4e456747e095654e342746"}}, 0}, {<<"leveled">>, - {git,"https://github.com/martinsumner/leveled", - {ref,"0c337b881e60d06f7441ec036ffc7e47acb5682e"}}, - 2}, + {git,"https://github.com/martinsumner/leveled.git", + {ref,"92a4f84178f1ec34a587fbc0e450e64b31ae8864"}}, + 1}, {<<"lz4">>, {git,"https://github.com/martinsumner/erlang-lz4", {ref,"d407af5de71303b8e381df718d2e5d05eb775c59"}}, - 3}, + 2}, {<<"meck">>, {git,"https://github.com/eproxus/meck.git", {ref,"4ecc1ae9089edc6977e8c8c4cd41081513cc5590"}}, @@ -111,7 +111,7 @@ 0}, {<<"riak_core">>, {git,"https://github.com/basho/riak_core.git", - {ref,"5da9f752949779b0cd28d7312fb4224a566b5a4a"}}, + {ref,"d73739ef3c49e68b8c4c67940ab2e23177204af6"}}, 1}, {<<"riak_dt">>, {git,"https://github.com/basho/riak_dt.git", @@ -123,7 +123,7 @@ 2}, {<<"riak_kv">>, {git,"https://github.com/basho/riak_kv.git", - {ref,"1e19c3238967b8e4784ebc35e44027654399e411"}}, + {ref,"bb65297f814b019304a6b35d75fd1080fe979b18"}}, 0}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", From 78420e2e35788438e2c10f091cdac5a7ec034ad0 Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Thu, 19 Jan 2023 15:55:35 +0000 Subject: [PATCH 2/7] Release preparation - 3.0.13 --- RELEASE-NOTES.md | 16 ++++++++++++++++ rebar.config | 6 +++--- rebar.lock | 20 ++++++++++---------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 7019514d6..da11fb7ae 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,19 @@ +# Riak KV 3.0.13 Release Notes + +This release is focused on improving the reliability of handoffs. The speed of handoffs is critical to the recovery times of nodes following failure, and also to the time necessary to expand or contract the cluster. Controlling the speed can be managed by increasing concurrency (using `riak admin transfer-limit `), but this can often lead to handoff unreliability due to timeouts. + +- The main [handoff process has been refactored](https://github.com/basho/riak_core/pull/995) to remove some deprecated messages, simplify the naming of configuration items, improve the logging of handoffs and increase the frequency of handoff sync messages. More frequent sync messages should make the flow of handoffs from the sender more responsive to pressure at the receiver. + +- On joining a node to a cluster, there will now be an attempt to exchange metadata with the joining node before the join is staged. This should reduce the probability of events failing immediately after join, as bucket types had not yet been replicated to the joining node. + +- A [new configuration option has been added](https://github.com/basho/riak_kv/blob/fbb53630645e53af053228d526caa3c86f304066/priv/riak_kv.schema#L1469-L1487) to change Riak to only commit read repair on primary (not fallback) vnodes. In short-term failures, enabling this option will reduce the time taken for hinted handoff to complete following recovery of a failed node - as now the handoff will contain only objects changed for that partition during the outage. With the default setting of `disabled`; fallback nodes will also contain each object fetched during the outage, in-line with the behaviour in previous releases. + +- A [fix has been implemented in leveled](https://github.com/martinsumner/leveled/pull/390) to reduce failures and inefficiencies when re-building the ledger key store from the object Journal, in situations where there has been a high volume of object churn. + +- Some [helper functions have been added to riak_client](https://github.com/basho/riak_kv/blob/fbb53630645e53af053228d526caa3c86f304066/src/riak_client.erl#L949-L993), to simplify some operational tasks. These functions can be called from `riak remote_console`, e.g. `riak_client:repair_node().` - which replaces the series of commands previously required to run partition repair across all partitions on a node. `riak_client:tictacaae_suspend_node().` may be used to suspend Tictacaae AAE exchanges on a node following a failure, so that they can be re-enabled using `riak_client:tictacaae_resume_node().` once handoffs have been completed. + +There are still [outstanding](https://github.com/basho/riak_kv/issues/1846) [issues](https://github.com/basho/riak_core/issues/996) related to handoffs. + # Riak KV 3.0.12 Release Notes This is a general release of changes and fixes: diff --git a/rebar.config b/rebar.config index 991fc8e1c..09b0a8433 100644 --- a/rebar.config +++ b/rebar.config @@ -11,13 +11,13 @@ {deps, [ {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.1"}}}, {cluster_info, {git, "https://github.com/basho/cluster_info.git", {tag, "2.1.0"}}}, - {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "mas-i994-readrepair"}}}, + {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "develop-3.0"}}}, {riak_auth_mods, {git, "https://github.com/basho/riak_auth_mods.git", {tag, "riak_kv-3.0.10"}}}, {riaknostic, {git, "https://github.com/basho/riaknostic.git", {tag, "riak_kv-3.0.10"}}}, % {yokozuna, {git, "https://github.com/basho/yokozuna.git", {branch, "develop-3.0"}}}, - {riak_repl, {git, "https://github.com/basho/riak_repl.git", {tag, "riak_kv-3.0.12"}}} + {riak_repl, {git, "https://github.com/basho/riak_repl.git", {branch, "develop-3.0"}}} ]}. {project_plugins, [ @@ -46,7 +46,7 @@ ]} ]}. -{relx, [{release, {riak, "3.0.12"}, +{relx, [{release, {riak, "3.0.13"}, [kernel, stdlib, lager, diff --git a/rebar.lock b/rebar.lock index 3aa2dd956..a1d77d311 100644 --- a/rebar.lock +++ b/rebar.lock @@ -50,7 +50,7 @@ 2}, {<<"kv_index_tictactree">>, {git,"https://github.com/martinsumner/kv_index_tictactree.git", - {ref,"4cd9ab1e20772db36f593879272dff5f02fbbeda"}}, + {ref,"fb6d444171a5e36ce9f8de1be9321309e63ed9c1"}}, 1}, {<<"lager">>, {git,"https://github.com/erlang-lager/lager.git", @@ -61,13 +61,13 @@ {ref,"5c8eb6ec82fa45ff0f4e456747e095654e342746"}}, 0}, {<<"leveled">>, - {git,"https://github.com/martinsumner/leveled.git", - {ref,"92a4f84178f1ec34a587fbc0e450e64b31ae8864"}}, - 1}, + {git,"https://github.com/martinsumner/leveled", + {ref,"cf3d8f5abb72133bd3868f37b9cf0ae628129758"}}, + 2}, {<<"lz4">>, {git,"https://github.com/martinsumner/erlang-lz4", {ref,"d407af5de71303b8e381df718d2e5d05eb775c59"}}, - 2}, + 3}, {<<"meck">>, {git,"https://github.com/eproxus/meck.git", {ref,"4ecc1ae9089edc6977e8c8c4cd41081513cc5590"}}, @@ -103,7 +103,7 @@ 1}, {<<"riak_api">>, {git,"https://github.com/basho/riak_api.git", - {ref,"53ec7feb441c910adf80d55d4a61c9989fd1afca"}}, + {ref,"183f3fa262668c331823b95c6e59ca9935ebad45"}}, 1}, {<<"riak_auth_mods">>, {git,"https://github.com/basho/riak_auth_mods.git", @@ -111,7 +111,7 @@ 0}, {<<"riak_core">>, {git,"https://github.com/basho/riak_core.git", - {ref,"d73739ef3c49e68b8c4c67940ab2e23177204af6"}}, + {ref,"ad546ed1ce85b48aada8446cc2ce75a129103b32"}}, 1}, {<<"riak_dt">>, {git,"https://github.com/basho/riak_dt.git", @@ -123,7 +123,7 @@ 2}, {<<"riak_kv">>, {git,"https://github.com/basho/riak_kv.git", - {ref,"bb65297f814b019304a6b35d75fd1080fe979b18"}}, + {ref,"fbb53630645e53af053228d526caa3c86f304066"}}, 0}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", @@ -131,11 +131,11 @@ 2}, {<<"riak_pipe">>, {git,"https://github.com/basho/riak_pipe.git", - {ref,"524b76d4605da0a3dda27c4d0e08258d7ed53e69"}}, + {ref,"556cc3432ba740db13f2f121f26c9409ccc7bb3a"}}, 1}, {<<"riak_repl">>, {git,"https://github.com/basho/riak_repl.git", - {ref,"bfcbf630cdb925b734a31072998926e14a8bb96e"}}, + {ref,"988ede378e92a5883c971c7c912b709311cf2148"}}, 0}, {<<"riak_sysmon">>, {git,"https://github.com/basho/riak_sysmon.git", From 911df43410fb846f391eb43d4677392cb40a2f9c Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Mon, 23 Jan 2023 19:26:58 +0000 Subject: [PATCH 3/7] For testing of fix to KV1847 --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 09b0a8433..74f1da76d 100644 --- a/rebar.config +++ b/rebar.config @@ -11,7 +11,7 @@ {deps, [ {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.1"}}}, {cluster_info, {git, "https://github.com/basho/cluster_info.git", {tag, "2.1.0"}}}, - {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "develop-3.0"}}}, + {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "mas-i1847-putapi"}}}, {riak_auth_mods, {git, "https://github.com/basho/riak_auth_mods.git", {tag, "riak_kv-3.0.10"}}}, {riaknostic, {git, "https://github.com/basho/riaknostic.git", {tag, "riak_kv-3.0.10"}}}, diff --git a/rebar.lock b/rebar.lock index a1d77d311..f1fd09e8c 100644 --- a/rebar.lock +++ b/rebar.lock @@ -123,7 +123,7 @@ 2}, {<<"riak_kv">>, {git,"https://github.com/basho/riak_kv.git", - {ref,"fbb53630645e53af053228d526caa3c86f304066"}}, + {ref,"54e23654b80e86edbb833157fd8f3a709bd70e26"}}, 0}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", From c9a629f5c1a183a629269a0d9178b9e7c6a293e6 Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Fri, 27 Jan 2023 17:15:47 +0000 Subject: [PATCH 4/7] Update with reference to conditional PUT changes --- RELEASE-NOTES.md | 4 ++++ rebar.lock | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index da11fb7ae..ed3d1af2f 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -14,6 +14,10 @@ This release is focused on improving the reliability of handoffs. The speed of There are still [outstanding](https://github.com/basho/riak_kv/issues/1846) [issues](https://github.com/basho/riak_core/issues/996) related to handoffs. +The release also includes a [significant change to the HTTP API](https://github.com/basho/riak_kv/issues/1849). In previous releases PUT, POST and DELETE requests would all GET the object prior to starting the PUT process. This is in contrast to the Protocol Buffers API which would only GET the object in case where conditions were passed in the put (e.g. `if_none_match` or `if_not_modified`). These two APIs now have the same non-functional behaviour, the HTTP API will no longer request a GET before the PUT if the request does not contain a condition (e.g. using `If-None-Match`, `If-Match`, `If-Modified-Since` as well as a new bespoke condition `X-Riak-If-Not-Modified`). + +A vector clock being passed on a PUT using the `X-Riak-If-Not-Modified` header, will return a `409:Conflict` should the passed vector clock not match the clock found prior to updating the object. This will work as the PB API `if_not_modified` option. This is still an eventually consistent condition, parallel updates may still lead to siblings when `{allow_mult, true}`. + # Riak KV 3.0.12 Release Notes This is a general release of changes and fixes: diff --git a/rebar.lock b/rebar.lock index f1fd09e8c..132019139 100644 --- a/rebar.lock +++ b/rebar.lock @@ -62,7 +62,7 @@ 0}, {<<"leveled">>, {git,"https://github.com/martinsumner/leveled", - {ref,"cf3d8f5abb72133bd3868f37b9cf0ae628129758"}}, + {ref,"ee6c166b9f49884340970109f5365f581db87688"}}, 2}, {<<"lz4">>, {git,"https://github.com/martinsumner/erlang-lz4", @@ -123,7 +123,7 @@ 2}, {<<"riak_kv">>, {git,"https://github.com/basho/riak_kv.git", - {ref,"54e23654b80e86edbb833157fd8f3a709bd70e26"}}, + {ref,"ee491785179ee7adbc67a6ac5c2b2c81d1e168a7"}}, 0}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", @@ -143,11 +143,11 @@ 2}, {<<"riakc">>, {git,"https://github.com/basho/riak-erlang-client", - {ref,"467deeb1eee6830a6945249bc9745900766d77c0"}}, + {ref,"3b6ad6e92dcb55833e9add829b2871be8468a68e"}}, 2}, {<<"riakhttpc">>, {git,"https://github.com/basho/riak-erlang-http-client", - {ref,"a99e0401ff670177f8a1a00d089db6970448ac66"}}, + {ref,"5221f8646fe075149da427ea6b9ceeda9667c438"}}, 1}, {<<"riaknostic">>, {git,"https://github.com/basho/riaknostic.git", From 325c30ba960aa527d6d2a39fc9ac7074ac37eae8 Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Mon, 30 Jan 2023 21:11:44 +0000 Subject: [PATCH 5/7] Update riak-chkconfig As per https://github.com/basho/riak/issues/1125 --- rel/files/riak-chkconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rel/files/riak-chkconfig b/rel/files/riak-chkconfig index 9d521460e..649e6e8e0 100644 --- a/rel/files/riak-chkconfig +++ b/rel/files/riak-chkconfig @@ -21,3 +21,6 @@ CODE=" try $BINDIR/erl -noshell -boot start_clean -eval "$CODE" echo $CUTTLE_CONF + +# No explicit exit, assumed to have succeeded +exit 0 From ba7628f965d889d82bb6ab30777fb16feded82a4 Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Wed, 1 Feb 2023 10:19:42 +0000 Subject: [PATCH 6/7] Update following merge --- rebar.config | 2 +- rebar.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rebar.config b/rebar.config index 74f1da76d..09b0a8433 100644 --- a/rebar.config +++ b/rebar.config @@ -11,7 +11,7 @@ {deps, [ {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.1"}}}, {cluster_info, {git, "https://github.com/basho/cluster_info.git", {tag, "2.1.0"}}}, - {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "mas-i1847-putapi"}}}, + {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "develop-3.0"}}}, {riak_auth_mods, {git, "https://github.com/basho/riak_auth_mods.git", {tag, "riak_kv-3.0.10"}}}, {riaknostic, {git, "https://github.com/basho/riaknostic.git", {tag, "riak_kv-3.0.10"}}}, diff --git a/rebar.lock b/rebar.lock index 132019139..a1d664868 100644 --- a/rebar.lock +++ b/rebar.lock @@ -123,7 +123,7 @@ 2}, {<<"riak_kv">>, {git,"https://github.com/basho/riak_kv.git", - {ref,"ee491785179ee7adbc67a6ac5c2b2c81d1e168a7"}}, + {ref,"9c138dc485eef7cb7cdeb0480422600ddf16523e"}}, 0}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", From c5f23ff783763a724796df5cbf5a79b407b254eb Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Thu, 2 Feb 2023 19:23:07 +0000 Subject: [PATCH 7/7] Tags for release --- rebar.config | 4 ++-- rebar.lock | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rebar.config b/rebar.config index 09b0a8433..3ba4804b7 100644 --- a/rebar.config +++ b/rebar.config @@ -11,13 +11,13 @@ {deps, [ {lager_syslog, {git, "https://github.com/basho/lager_syslog.git", {tag, "3.1.1"}}}, {cluster_info, {git, "https://github.com/basho/cluster_info.git", {tag, "2.1.0"}}}, - {riak_kv, {git, "https://github.com/basho/riak_kv.git", {branch, "develop-3.0"}}}, + {riak_kv, {git, "https://github.com/basho/riak_kv.git", {tag, "riak_kv-3.0.13"}}}, {riak_auth_mods, {git, "https://github.com/basho/riak_auth_mods.git", {tag, "riak_kv-3.0.10"}}}, {riaknostic, {git, "https://github.com/basho/riaknostic.git", {tag, "riak_kv-3.0.10"}}}, % {yokozuna, {git, "https://github.com/basho/yokozuna.git", {branch, "develop-3.0"}}}, - {riak_repl, {git, "https://github.com/basho/riak_repl.git", {branch, "develop-3.0"}}} + {riak_repl, {git, "https://github.com/basho/riak_repl.git", {tag, "riak_kv-3.0.13"}}} ]}. {project_plugins, [ diff --git a/rebar.lock b/rebar.lock index a1d664868..94fb82039 100644 --- a/rebar.lock +++ b/rebar.lock @@ -50,7 +50,7 @@ 2}, {<<"kv_index_tictactree">>, {git,"https://github.com/martinsumner/kv_index_tictactree.git", - {ref,"fb6d444171a5e36ce9f8de1be9321309e63ed9c1"}}, + {ref,"1d982aeaf6bd57c6c00fcad67e90c27c58edcfd1"}}, 1}, {<<"lager">>, {git,"https://github.com/erlang-lager/lager.git", @@ -103,7 +103,7 @@ 1}, {<<"riak_api">>, {git,"https://github.com/basho/riak_api.git", - {ref,"183f3fa262668c331823b95c6e59ca9935ebad45"}}, + {ref,"0f9c5783f87f3c1797fa7b3ca5088c6c3a74a13f"}}, 1}, {<<"riak_auth_mods">>, {git,"https://github.com/basho/riak_auth_mods.git", @@ -123,7 +123,7 @@ 2}, {<<"riak_kv">>, {git,"https://github.com/basho/riak_kv.git", - {ref,"9c138dc485eef7cb7cdeb0480422600ddf16523e"}}, + {ref,"e04bc998e2f48e083a875e290ca242f2d699830d"}}, 0}, {<<"riak_pb">>, {git,"https://github.com/basho/riak_pb.git", @@ -131,11 +131,11 @@ 2}, {<<"riak_pipe">>, {git,"https://github.com/basho/riak_pipe.git", - {ref,"556cc3432ba740db13f2f121f26c9409ccc7bb3a"}}, + {ref,"bd2240266acfa824ea1fe5f3a2b2192e92e822d3"}}, 1}, {<<"riak_repl">>, {git,"https://github.com/basho/riak_repl.git", - {ref,"988ede378e92a5883c971c7c912b709311cf2148"}}, + {ref,"dd890e83498fcb254de485e2a3aa195f67fbe59c"}}, 0}, {<<"riak_sysmon">>, {git,"https://github.com/basho/riak_sysmon.git", @@ -147,7 +147,7 @@ 2}, {<<"riakhttpc">>, {git,"https://github.com/basho/riak-erlang-http-client", - {ref,"5221f8646fe075149da427ea6b9ceeda9667c438"}}, + {ref,"20cfdf4eb1f2e2f8521fd6c974d7b3e2bd9db728"}}, 1}, {<<"riaknostic">>, {git,"https://github.com/basho/riaknostic.git",