Skip to content

Commit

Permalink
Mas 3.0.13 preview (#1126)
Browse files Browse the repository at this point in the history
* planned combination for 3.0.13

basho/eleveldb#269 to be added once issues are resolved

* Release preparation - 3.0.13

* For testing of fix to KV1847

* Update with reference to conditional PUT changes

* Update riak-chkconfig

As per #1125

* Update following merge

* Tags for release
  • Loading branch information
martinsumner committed Feb 6, 2023
1 parent 53bfbff commit f57db24
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 165 deletions.
24 changes: 24 additions & 0 deletions RELEASE-NOTES.md
@@ -1,3 +1,7 @@
# Riak KV 3.2.1 Release Notes

Release of Riak KV 3.2, with the addition of changes made in [Riak KV 3.0.13](#riak-kv-3013-release-notes).

# Riak KV 3.2.0 Release Notes

This release is an OTP uplift release. Whereas release 3.0.1 supports OTP 22; the intention is for Release 3.2.n to support OTP 22, OTP 24, and OTP 25. There are potential throughput benefits of up to 10% when using OTP 24/25 rather than OTP 22 where load is CPU bound. OTP 25 is currently the preferred platform for this release.
Expand All @@ -14,6 +18,26 @@ When building from source, the `snappy` dependancy is now made rather than fetch

In this release, tagging of individual dependencies has not been used. Building consistently with the correct versions of dependencies is therefore dependent on the commit references being used from within the rebar.lock file.

# 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 <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.

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:
Expand Down
2 changes: 1 addition & 1 deletion rebar.config
Expand Up @@ -41,7 +41,7 @@
]}
]}.

{relx, [{release, {riak, "3.2.0"},
{relx, [{release, {riak, "3.2.1"},
[kernel,
stdlib,
public_key,
Expand Down
164 changes: 0 additions & 164 deletions rebar.lock

This file was deleted.

3 changes: 3 additions & 0 deletions rel/files/riak-chkconfig
Expand Up @@ -30,3 +30,6 @@ $ERTS_DIR/bin/erl -noshell -noinput \
-eval "$CODE"

echo $CUTTLE_CONF

# No explicit exit, assumed to have succeeded
exit 0

0 comments on commit f57db24

Please sign in to comment.