Riak Changelog

What's new in Riak 2.1.1

May 7, 2015
  • Critical Fixes:
  • Default IP address for inbound handoff connections (riak.conf setting handoff.ip) has been reverted to 0.0.0.0. The 2.1.0 release picked up a setting intended for devrel clusters only.
  • This resolves Basho Product Advisory - Riak 2.1.0: Default Configuration For Handoff May Cause Data Loss

New in Riak 2.0.5 (Feb 26, 2015)

  • Changes:
  • RIAK-1431 - Adding --format=csv to allow some administrative commands to be output as csv files
  • Riak-1477 - Sequential tuning Improving leveldb for when a single database (vnode) receives a large write volume. This situation commonly occurs during a Riak handoff operation.
  • Riak-1493 Add optional timeout for handle_handoff_data callback and improve logging
  • Fixes:
  • RIAK-1127 - L0 Realtime connection balancing. N v3 repl realtime connections are chosen randomly which can lead to large imbalances. Previous implementations did a better job of ensuring there was good balance. The goal of this work is to bring that back to v3 realtime replication.
  • Riak-1455 - If Solr complains that the index exists, update Riak's metadata to reflect it
  • Riak-1479 - node_get_fsm_time and node_put_fsm_time stats are incorrect. node_get_fsm_time and node_put_fsm_time values are an order of magnitude smaller than 2.0.2
  • Add a log message for when a pipe fitting fails during a map reduce job
  • Fix erroneous tag syntax in rebar.conf for erlydtl depedency of riak_control
  • Fixed parsing of global flags by delegating parsing to clique instead of riak-admin script
  • Reduce overload of sink nodes by balancing inbound connections across all nodes, including nodes not up due to network partition.

New in Riak 2.0.4 (Jan 13, 2015)

  • CHANGES:
  • Improve AAE fullsync by estimating total number of keys. This allows for better sizing of the bloom filter when performing a bloom-fold-based exchange and enhances the adaptive exchange logic that was added previously in Riak 2.0.1. In that version, the new riak_repl.fullsync_direct_percentage_limit setting was added, which allowed the limit to be specified as a percentage of total keys rather than as a fixed number.
  • Added last_fullsync_complete stat tracking riak_repl/642
  • Expose AAE tree status in the logs riak_kv/1056
  • Improve AAE fullsync by using breadth-first exchange
  • Riak now uses Exometer for collecting metrics and has an improved CLI for finding and displaying them
  • Internal components can process partial configurations as if they were in the global config file. This supports the handoff visibility changes.
  • Riak now uses Clique for managing CLI commands. The initial commands covered exist to increase visibility into the handoff process and provide Cuttlefish config support from the CLI.
  • AAE FULLSYNC PERFORMANCE IMPROVEMENTS:
  • In version 2.0.4, a number of improvements to the AAE fullsync feature were added, improvements that were initially introduced in Riak version 1.4.12 but had not yet been introduced into Riak 2.0.x. The following improvements have been introduced:
  • Data transfers are now pipelined instead of individually acknowledged, in the name of maximizing throughput
  • The code now avoids redundant scans of replcated data. For a replication factor of, say, 3 (i.e. an n_val of 3), only a third of the relevant vnodes are scanned.
  • The algorithm is now smarter about small differences
  • Performing an AAE fullsync operation between two identical clusters is very fast. The time it takes to finish an AAE fullsync is much closer to linear on the number of differences between the clusters. Below are the results of one of our benchmarks. Two 8-node clusters were used, each with the following characteristics:
  • Each node has 630 GB of SSD storage
  • Each node is running only two vnodes (16-partition ring)
  • 23 million objects per vnode
  • 99% of objects are 8 KB
  • 1% of objects are a mix of 8 KB to 40 MB outliers
  • 450 GB of data on disk per server
  • The results for each stage of fullsync:
  • Empty cluster to empty cluster: 6 seconds
  • Full cluster to empty cluster: 14 hours, 40 minutes
  • 10% changes: 3 hours, 45 minutes
  • 1% changes: 40.5 minutes
  • No changes: 42.5 seconds
  • FIXES:
  • Fix stats process crash if no leader riak_repl/645
  • Address some minor bugs around establishing SSL connections riak_repl/644
  • 2.0 port of AAE transient filesystem failures riak_repl/640
  • Fix error/retry exit counts on location down messages riak_repl/639
  • Fix deadlock when performing AAE fullsync over SSL (Erlang VM patch)
  • Prevent servers from accepting SSLv3 connections (Erlang VM patch)
  • The map Data Type is now more efficient when merging
  • Fix a case in which sibling explosion could occur during handoff
  • Special handling for the net_ticktime setting in admin scripts node_package/166
  • Add a missing function clause in riak_kv_node that could result in crashes riak_core/693
  • Avoid timeouts when handoff sender is folding over a large number of keys riak_core/627
  • No more extra work for handoff sender after TCP error makes that work useless riak_core/626
  • Report error when failing to open file instead of crashing when calling riak_core_util:replace_file/2 riak_core/646
  • Debian package fixes
  • Ensure creation of ensembles when strongly consistent bucket types with different n_vals from default bucket type do not yet have buckets riak_kv/1008
  • Avoid SSL deadlocks that occur when sending data bidirectionally using Erlang SSL sockets. The fix is a patch to the Erlang VM shipped with the build.
  • MERGED PULL REQUESTS:
  • bitcask/202: Unpin cuttlefish from tag
  • node_package/166: add support for custom exit codes to nodetool rpc & friends
  • node_package/170: Handle net_ticktime argument specially. Resolves RIAK-1281
  • node_package/173: Fixes for debian control template
  • riak_kv/1008: Use SC bucket types and buckets to know ensembles
  • riak_kv/1026: Update to use new breadth-first AAE exchange
  • riak_kv/1027: Attempt to make vnodeids on the same node unique
  • riak_kv/1030: Implement key count estimation via AAE trees
  • riak_kv/1035: Consuming the vnode_status output in stats was brittle
  • riak_kv/1044: Introduce exometer metrics into 2.0
  • riak_kv/1048: Remove afunix from EXOMETER_PACKAGES.
  • riak_kv/1050: Add skipped_repairs stat.
  • riak_kv/1056: Expose logs about AAE tree status.
  • riak_kv/1058: Use exometer_core
  • riak_kv/1059: add missing aliases
  • riak_kv/1062: Fixes sibling explosion bug caused by forwarding coordination
  • riak_kv/1063: Bugfix for precondition_context test failures.
  • riak_kv/1065: Fix bug related to riak_dt#110 serialization changes
  • riak_kv/1067: Make read-repair stats be 'proplist' instead of 'value'
  • riak_kv/1068: Set schema dirs for riak_core in riak_kv_test_util
  • riak_core/626: Allow handoff sender to abort handoff by throw'ing from fold fun
  • riak_core/627: Handoff sender sends sync periodically
  • riak_core/629: Add breadth-first AAE exchange
  • riak_core/633: Implement key count estimation via AAE trees
  • riak_core/646: Tell the caller when you fail to open a file, too
  • riak_core/650: Introduce exometer metrics into 2.0
  • riak_core/654: Remove afunix from EXOMETER_PACKAGES.
  • riak_core/655: add skipped_read_repairs to legacy stat map
  • riak_core/663: use exometer_core instead of exometer
  • riak_core/665: add missing aliases
  • riak_core/668: Replaces feuerlabs/exometer with basho/exometer
  • riak_core/669: Add transfer_limit config callback to handoff_cli
  • riak_core/672: Fixes sibling explosion bug caused by forwarding coordination requests d...
  • riak_core/674: Feature/revised/riak cli handoff status 1239
  • riak_core/675: rename riak_cli to clique
  • riak_core/677: Standardize usage/command registration
  • riak_core/678: Integration/riak admin handoff team
  • riak_core/679: Handle down nodes consistently
  • riak_core/680: Make riak_core_status:active_partitions safe if a node is down.
  • riak_core/681: Cleanup after review
  • riak_core/682: add riak-admin handoff config support
  • riak_core/685: Improve handoff enable/disable config naming
  • riak_core/686: add whitelisted config variables to riak_core_handoff_cli
  • riak_core/692: Allow schema loading with an environment variable
  • riak_core/693: mod_set_forwarding crashes [JIRA: RIAK-1459]
  • riak_core/695: change git url for clique to fix PR #694 [JIRA: RIAK-1460]
  • riak/651: Use exometer_core
  • riak/654: change riak_cli to clique
  • riak/655: Add handoff; remove cluster members
  • riak/656: Add set, show and describe to usage
  • riak/657: Integration/riak admin handoff team
  • riak_api/66: Do not treat errors as success
  • riak_api/70: Exometer metrics in 2.0
  • riak_api/71: Remove afunix from EXOMETER_PACKAGES.
  • riak_api/72: Use exometer_core & exometer aliases
  • yokozuna/430: merged develop into 2.0
  • yokozuna/431: update-readme-to-up-to-date-riak-version
  • yokozuna/432: merge dev into 2.0 for test readme updates
  • yokozuna/434: Introduce exometer metrics into 2.0
  • yokozuna/435: Remove afunix from EXOMETER_PACKAGES.
  • yokozuna/440: Use exometer_core & exometer aliases
  • yokozuna/441: minor alias typo
  • riak_search/168: Introduce exometer metrics into 2.0
  • riak_search/169: Remove afunix from EXOMETER_PACKAGES.
  • riak_search/172: Fix dep error in rebar.config
  • cuttlefish/165: Add case for incomplete/syntax-error when parsing conf file.
  • cuttlefish/166: Add cuttlefish:warn/1 for use in translations.
  • cuttlefish/172: Backport #169 and #171 from develop
  • cuttlefish/173: Handle case where advanced.config contains > 1 terms
  • cuttlefish/174: Add cuttlefish_generator:minimal_map/2.
  • riak_dt/110: Swap orddict for dict in orswot and map
  • riak_pipe/89: Introduce exometer metrics into 2.0
  • riak_pipe/90: Remove afunix from EXOMETER_PACKAGES.
  • riak_pipe/91: Use exometer_core & exometer aliases

New in Riak 2.0.2 (Dec 15, 2014)

  • VM Args:
  • Restore "+scl false", omitted accidentally
  • Client certificate authentication:
  • Add warning about client certificates in 2.0.0
  • Merged PRs:
  • riak/588: Add '+sfwi 500' and '+scl false' to riak.conf via cuttlefish
  • riak/601: Add warning about client certificates in 2.0.0
  • riak/609: Add note clarifying deprecation vs. termination

New in Riak 2.0.1 (Oct 1, 2014)

  • Merged PRs:
  • bitcask/186: Bugfix/key transform crash
  • bitcask/189: Refresh efile port if gone
  • bitcask/190: Fix scan error deadlock
  • bitcask/192: Fix remove expired on read race
  • bitcask/197: Fix extra tombstones on update
  • bitcask/198: Fix race listing readable files
  • riak_kv/1008: Use SC bucket types and buckets to know ensembles
  • riak_kv/1026: Update to use new breadth-first AAE exchange
  • riak_core/626: Allow handoff sender to abort handoff by throw'ing from fold fun
  • riak_core/627: Handoff sender sends sync periodically
  • riak_core/629: Add breadth-first AAE exchange
  • riak_api/66: Do not treat errors as success
  • riak_repl/618: Added a worker pool for fullsync sinks.
  • riak_repl/619: Small user experience fixes.
  • riak_repl/620: Improved AAE fullsync integration/2.0 pull request

New in Riak 1.0.3 (Feb 10, 2012)

  • Bugs Fixed:
  • -[[https://issues.basho.com/show_bug.cgi?id=1291][bz1291 - Incorrect match of erlang:decode_packet return value in mochiweb]]
  • -[[https://issues.basho.com/show_bug.cgi?id=1306][bz1306 - get_fsm crashes when riak_object value is not a binary]]
  • Other Additions:
  • riak-admin top
  • busy_port / busy_dist_port
  • Bitcask Support for O_SYNC
  • New Claim Algorithm
  • Changes to Handoff Concurrency

New in Riak 0.12.0 (Jul 23, 2010)

  • Enhancements:
  • 82 - HTTP API now returns 400 when quorum parameters exceed N-val.
  • 83 - Default quorum parameters are now configurable in HTTP and Protobuf APIs.
  • 97 - Riak now calls a BackendModule:stop/1 function, allowing cleanup during shutdown.
  • 190 - HTTP API now returns 503 when Riak operation times out.
  • 192 - HTTP API no longer list keys on a bucket by default.
  • 283 - HTTP API now returns 404 when an object is missing, regardless of accept header. (202)
  • 216 - The "/stats" page now includes read-repair stats.
  • 219 - A node now verifies that the ring_creation_size matches before joining a cluster.
  • 230 - Upgrade to latest version of Mochiweb.
  • 237 - Added a 'mapByFields' built-in Map/Reduce function.
  • 246 - Improved error reporting in post-commit hooks.
  • 251 - More descriptive error message on malformed link walking operations.
  • 256 - The /stats endpoint now shows Riak version number.
  • 259 - Improve python client packaging. Publish on PyPI.
  • 267 - Updated bucket defaults to improve replica distribution across physical nodes.
  • 274 - Improvements to storage backend interface layer.
  • 365 - Use updated "rebar eunit" task for running tests.
  • Bugs Fixed:
  • 26 - The 'devrel' target now builds on CentOS.
  • 27 - Fixed 'riak-admin' problem on some architectures, including Solaris.
  • 138 - Fixed platform specific problems in Riak 'init.d' script.
  • 205 - Fixed Bitcask errors on 32-bit Erlang. (331, 344)
  • 229 - Fixed 'riak stop' error on Mac OSX Snow Leopard 10.6.3.
  • 240 - Python client now properly escapes "/" in Buckets and Keys.
  • 253 - Correctly pass missing object (not_found) results between Map/Reduce phases.
  • 274 - Correctly forward 'info' messages from multi_backend to child backends.
  • 278 - Make Riak backup work correctly in all cases when objects are deleted while backup is in progress.
  • 280 - Fixed corner cases causing timestamp collision in Bitcask.
  • 281 - Fixed premature tombstone collection in Bitcask.
  • 301 - Fixed chunked mapreduce results to use correct line breaks (\r\n).
  • 305 - Fixed possible race condition between get and Bitcask merge.
  • 382 - Update Map/Reduce to honor timeout setting.
  • 361 - Cleaned up Dialyzer warnings. (373, 374, 376, 381, 389)
  • 382 - Update Map/Reduce to honor timeout setting.
  • 402 - Make Bitcask data and hint files more resistant to corruption.