This is a bugfix release on the 1.4 series of Riak.
- riak_core/603: Bugfix/reip update claimant
- riak_search/163: Add configurable range_loop and stream_timeouts
- leveldb/135 & 136: Correct infinite loop caused by mutex changes in 1.4.9
This is a bugfix release on the 1.4 series of Riak.
The prior to this release deletes on the memory backend when
max_memory
was set would result in the space limit not being
updated, so that the number of values storable would shrink over time,
eventually leading to no values being storable at all.
Additionally, there was an interaction with expiry when both were set which would cause gets on expired values (which call the delete path above) to have the same effect.
- riak_core/584: Bugfix/set bucket 1.4
- riak_kv/940: Fix mem backend to honor various settings correctly.
- riak_kv/957: Bugfix/2i refresh mod state
- leveldb: Fix async close logic
- leveldb: Raise performance for heavily changing keys, plus general compaction
This is a bugfix release on the 1.4 series of Riak.
This fixes the backport issue that caused AAE to stop detecting object modifications due to a failure to compute the hashes.
IMPORTANT We recommend removing current AAE trees before upgrading. That is, all files under the anti_entropy sub-directory. This will avoid potentially large amounts of repair activity once correct hashes start being added. The data in the current trees can only be fixed by a full rebuild, so this repair activity is wasteful. Trees will start to build once AAE is re-enabled. To minimize the impact of this, we recommend upgrading during a period of low activity.
A regression introduced in 1.4.4 caused bitcask partitions to no longer be able to start when an empty datafile had the highest file id in that partition. This most commonly happened on the first start of an upgraded node going from a pre-1.4.4 build to something later, but was possible to see in a few other conditions. The fix added in this release removes empty files on partition startup, and fixes added in 1.4.4 will prevent them from being created in the future.
- bitcask/137: add code to clean up empty data and hintfiles
- riak_kv/818: Add missing riak_object:is_robject function
- riak_kv/834: Export riak_kv_vnode:get/4
- riak_kv/836: Backport object size/sibling limits to 1.4
- riak_kv/845: Fix use of FSM timeouts in 2i AAE
This is a bugfix release on the 1.4.x series of Riak
Configuring Bitcask to use NIF mode (file I/O operations using native code instead of Erlang) would result in the backend being unable to create new files.
The ability to repair 2i data would be lost once AAE did a tree re-build. By default trees are re-built after a week, so the command could work for a while and then suddenly break.
A throttle based upon cluster-wide values of the riak_kv_vnode_max
statistic has been added in riak_kv/754. Its purpose is to avoid rare
situations where vnodes are overloaded by AAE exchange and repair
operations.
- The exchange & repair throttle is enabled by default. Define
{aae_throttle_kill, true}
in theriak_kv
section of theapp.config
file to disable the throttle entirely.- It may also be disabled/enabled non-persistently
using the Riak console to execute
riak_kv_entropy_manager:set_aae_throttle_kill(true | false).
, respectively.
- It may also be disabled/enabled non-persistently
using the Riak console to execute
- The configured throttle defaults, as defined by
aae_throttle_sleep_time
item in theriak_kv
section of theapp.config
file, appear to be very effective in lab testing.- The Riak console can be used to execute query and change the
setting non-persistently using
riak_kv_entropy_manager:get_aae_throttle_limits()
andriak_kv_entropy_manager:set_aae_throttle_limits(LimitDefinition)
. - Contact Basho support if the default weightings are not effective.
- The Riak console can be used to execute query and change the
setting non-persistently using
- The configuration syntax for this throttle has been converted to Cuttlefish-style syntax for the Riak 2.0 release. The implementation of the throttle is the same as the 1.4.7 release.
- bitcask/129: Fix nif-mode and eunit_nif tests
- riak_kv/754: Add timer:sleep()-based throttle to riak_kv_exchange_fsm:read_repair_keydiff()
- riak_kv/775: Make memory backend obey 2i return terms properly
- riak_kv/780: Fix lost 2i AAE tree on rebuild
- riak_kv/789: Fix logging call
This is a bugfix release on the 1.4.x series of Riak.
- riak_kv/766 2i queries could fail if some nodes in the cluster were running on older versions of Riak (1.3.x, 1.4.2 for example).
- riak_kv/767 AAE trees building would fail to hash 2i data. The logs would be filled with error messages and the system may have wastefully issued many repair operations that would end up doing nothing.
The new term_regex
parameter filters secondary index range query results
such that only terms that match the regular expression are returned.
For example, the following query:
http://localhost:10018/buckets/b/index/f1_bin/a/z?return_terms=true
If it returned the following term/keys pairs:
[("baa", "key1"),("aab", "key2"),("bba", "key3")]
Passing the following regular expression:
http://localhost:10018/buckets/b/index/f1_bin/a/z?return_terms=true&term_regex=^.a
Would return only the items that have an 'a' as the second character in the term:
[("baa", "key1"),("aab", "key2")]
Note: This feature is not character encoding aware. We recommend normalizing your data to ascii characters if possible.
We are now using a C version of the sext codec used to write and read secondary index and object key data. This should speed up secondary index query scans that read a large number of items from leveldb.
When using small page sizes, it was possible for vnodes to send a batch of results larger than the page size. Those results could have never been sent to the client anyway. That has been fixed.
Paginated secondary index queries work by sorting results by term,
then key. When they were introduced, this internal sorting also
became the default for regular secondary index queries not involving
pagination. That caused performance degradation in some cases. The
default behavior of non-paginated queries (those not using the
max_results or continuation parameters) has been changed back to
unsorted. The pagination_sort
parameter can be used to re-enable
this sorting per request. Also, the behavior can be restored per node
in the configuration file by setting secondary_index_sort_default
to
true
in the riak_kv
section of the app.config
. This should be
useful if your application relied on this order and a code change is
inconvenient.
The new riak-admin repair-2i
command will scan and fix any
mismatches between the secondary index data used for querying and the
secondary index data stored in the riak objects. It can run on all the
partitions of a node or in a subset of them. Use the riak-admin repair-2i status
command to monitor the progress of a repair. A
repair may be stopped with riak-admin repair-2i kill
.
This operation involves scanning all the secondary index data used for querying from disk, then building a hashtree. This hashtree will be used to minimize the number of riak_objects that will be read from disk and repaired. We recommend scheduling repairs during non-peak activity time windows.
Added a timeout to stat calculation so that stuck or extremely slow processes no longer keep stats from proceeding forever. riak_core 467
- bitcask/122: Bound merge queue to number of partitions
- node_package/101: Add extra options to debuild template
- node_package/93: Incorrect package format in SmartOS causes segfault on pkg_info
- riak_core/429: Handoff fix is to enable handoff to complete in mixed pre-1.4 clusters
- riak_core/467: Bound the time that stats calculation can take
- riak_core/470: Provide a synchronous registration and unregistration of services.
- riak_core/476: Remove connection manager and service manager.
- riak_kv/715: 2i term regex filter 1.4
- riak_kv/743: Fix vnode sending > max_results items for 2i query
- riak_kv/766: Fix error when hashing index data in tree builds
- riak_kv/767: Fixed 2i queries in mixed clusters
- riak_kv/772: Fix broken return terms handling
- riak_kv/774: Enable bloom filters for AAE LevelDB instances
- leveldb/110 Add option for changing fadvise() handling when physical memory exceeds database size
- leveldb/112: Create asynchronous close path to resolve race between write threads
- The new 2i AAE feature will stop working when the AAE trees expire and are rebuilt. We are already working on addressing this in the next point release.
- Issuing 2i queries during a rolling upgrade with the memory backend will fail if 1.4 nodes are mixed with pre-1.4 nodes.
These were unreleased Riak versions
This is a bugfix release on the Riak 1.4.x series.
- Fixed various problems related to crashing stats
- Fixed extra noisy logs introduced in 1.4.1 (Not found errors and others)
- Fixed issues related to 2i queries timing out
- Added more protection against corrupt data in backends
- Fixed incorrect capability negotiation causing nodes to appear incompatible in Riak Control
- leveldb/89: Minor adjustments to throttle
- node_package/77: FreeBSD needs to scan lib and etc directories for extra files
- node_package/82: Deb: Deb postinst script attempts to chmod's /etc directory
- node_package/83: FreeBSD package incorrectly packaged as .tgz rather than .tbz
- riak_control/132: Resolve incorrect capability negotation order in 1.4
- riak_control/133: Use expanded record macro.
- riak_control/135: Incompatible is less serious
- riak_kv/644: Fix webmachine 2i timeout
- riak_kv/639: Fix HTTP MR error reporting
- riak_kv/636: Fix riak_kv_stat crash leaking processes
- riak_kv/638: Bad deserialization and CRC errors to not_found
- riak_kv/641: LevelDB fold hardening for 1.4
- riak_kv/635: Fix 2i timeout responses
- riak_kv/632: Fix riak_kv_stat timeout
- riak_core/356: Add protection against folsom stat errors
- riak_core/359: Support for corruption detecting during handoff
- webmachine/137: Increase line coverage of Webmachine unit and integration tests
- webmachine/164: Rework Webmachine error logging to use the built-in log handler
- webmachine/161: Expose local socket via the Webmachine API
- webmachine/160: Re-add compatibility for Erlang versions newer than R15B01
- webmachine/158: Avoid localtime to universaltime
- webmachine/156: Fix Erlang R15 compatibility
This is a bugfix release. The major fixes are to the Secondary Index, Riak Control, and LevelDB subsystems.
-
Pagination for equality queries is fixed by riak_kv/615.
-
The ability to set a timeout on a 2i query has been added by riak_kv/616.
-
Using 2i as input for a map-reduce job has been fixed by riak_kv/618.
-
Riak Control can crash its host node when in a mixed-cluster environment containing a 1.4.0 node. This has been addressed by riak_control/120.
-
Basho's leveldb fork has added better fadvise support and fixed some race conditions in the write path. See leveldb/88.
- riak_core/351: Fix catch pattern to match all errors
- riak_core/352: Fix TCP mon to correctly spot nodes coming up
- riak_kv/615: Do not set the start_term to the last seen key for eq (2i)
- riak_kv/616: Add millisecond timeout parameter to API 2i endpoints
- riak_kv/618: Strip index term from result before passing to MR (2i)
- riak-erlang-client/108: Add timeouts to 2i queries
- riak_pb/50: Add timeout field to 2i messages
- riak_control/120: Handle incompatible records between the 1.3 and 1.4 release
- leveldb/88: More effective fadvise calls + fix write race conditions
- node_package/75: In RPMs: Do not error on post install script if usermod fails
- node_package/76: Fix
riak version
for RPM packages
Data stored in Riak can now be represented in a more compact format. The new format reduces storage overhead, especially in the case of small objects or those with large bucket names, keys, or metadata.
By default new Riak clusters, starting with Riak 1.4, will have the new format enabled by default. Users upgrading to Riak 1.4 should first perform the upgrade and once happy with the operation enable the new format. Riak supports both the old and new representation simultaneously, so no additional upgrade process is necessary.
Which representation is used can be configured by setting
object_format
to either v0
or v1
in the riak_kv
section of
app.config
. v1
is the new format.
The new format is also used during handoff if the cluster supports it.
For users who upgrade to Riak 1.4 and enable the new format,
downgrading to a previous version requires reformatting any data
written in the new representation (previous version of Riak won't
understand it). A utility is provided via riak-admin
to perform this
operation:
riak-admin downgrade-objects <kill-handoffs> [<concurrency>]
The utility should be run per-node immediately prior to downgrading
it. <kill-handoffs>
must be either true
or false
. If false
any
ongoing handoff will be waited on before performing the
reformat. Otherwise, all in-flight handoff, inbound to the node or
outbound from it, will be killed. During and after the reformat the
transfer-limit
will be set to 0. The optional <concurrency>
argument must be an integer greater than zero. It determines how many
partitions are reformatted on the node concurrently. By default the
concurrency is two. Additionally, in anticipation that the entire
cluster will be downgraded downgrade-objects
sets the preferred
format to v0
. downgrade-objects
can be run multiple times in the
case of error or if the node crashes.
If you are a frequent user of riak attach
it is worth noting that the behavior has changed in 1.4. riak attach
used to attach to a named pipe that erlang provides to talk to running erlang nodes. This is great except that an accidental Ctrl-C would not only kill your session, but also kill the running node. The behavior has now changed to use -remsh
(remote shell) to connect to the node. This method is safer because a Ctrl-C will not kill a running node. In cases where distributed erlang having problems for some reason and a -remsh is not wanted, riak attach-direct
is a new command which uses the old pipe behavior of riak attach
.
The output of riak-admin transfers
now includes per-transfer
progress reporting and improved display of long node names.
Whether or not progress is reported and how the progress is calculated is
dependent on the cluster's backend. Progress reporting is enabled for
riak_kv_bitcask_backend
, riak_kv_eleveldb_backend
and
riak_kv_memory_backend
. Clusters using riak_kv_multi_backend
will
not have progress reporting enabled. When using riak_kv_bitcask_backend
or
riak_kv_memory_backend
progress is determined by the number of keys
already transferred out of the total number stored. Large variance in
value sizes can skew reporting. For riak_kv_eleveldb_backend
progress is measured in stored bytes. The total number of bytes used
may be an overestimate -- meaning progress will always be what is
reported or further along than reported in the worst case.
Lager has been updated in Riak from Lager 1.2.2 that was in the Riak 1.3.x series to Lager 2.0.0. Please see the lager documentation at https://github.com/basho/lager for the new capabilities in Lager 2.0.
We've extended Riak's Secondary Indexing (2i) interface to allow for paginated results. This is done via the max_results
option in both the Protocol Buffers and HTTP 2i end points. Full details can be found here.
Clients can now specify a timeout value, in milliseconds, that will override the default internal timeout on requests that manipulate objects (fetch, store, delete), list buckets, or list keys.
The Protocol Buffers interface now supports all known bucket properties, and the ability to "reset" bucket properties to their defaults.
Similar to listing keys, listing buckets can be streamed to clients. This means that Riak will send bucket names to the client as they are received, rather than waiting for the request to complete on all nodes.
Similar to HTTP, Protocol Buffers will now bind to multiple interfaces
and ports. Existing configurations will change the previous pb_port
and pb_ip
settings to the singular pb
setting, which is a list of
IP/port pairs.
1.4 sees the addition of Riak's first data type: PN-Counters. A PN-Counter is capable of being both incremented (P) and decremented (N). The full details are here. We're also fast at work on a CRDT Cookbook that will demonstrate this and future data types in Riak.
Riak Control now has an improved cluster management interface, and standalone node management interface, for staging and committing changes to the cluster, which mimics the CLI API.
The command riak-debug
is a shell script provided to aid in the automation of gathering information from Riak nodes for troubleshooting. Information gathered includes operating system command output, Riak command output, Riak configuration files, and Riak logs. See riak-debug -h
and man riak-debug
for more information on using the script and for tips on integrating its usage into your workflow.
Riak 1.4 took a major step forward in how it is packaged by changing over to using node_package for its packaging. This is the same tool used for RiakCS since its first release. This commonality will improve overall feature parity and stability of the packages themselves by cutting down on the number of places packaging bug fixes need to happen. See the 'node_package' section in the Issues section for all the bug fixes to packaging in this release.
Support for Debian Wheezy and SmartOS 13.1 have been added to 1.4. As planned, support for 32bit packages has been dropped.
- init.d scripts for Deb and RPM systems have been rewritten to comply with the standards of those distributions. In particular the init scripts now actually return nonzero exit codes on failure. This was a major issue we had that prevented tools from working seamlessly.
- All start, stop, and status commands use return codes rather than reading stdout. This has been a major 'technical debt' we've had for a long time and it is about time the rest of it is finally fixed.
riak.pid
files are now created and removed onriak start/stop
. This allows other tools to take advantage of .pid files without them needing knowledge about the riak script or nodetool.- Warnings added to
riak attach
andriak attach-direct
to let users know about implications of q() and CTRL-C - The
riak
script now makes it more obvious which commands need to be run as the Riak user (or root user). Status commands likegetpid
orping
can be run by any user while daemon commands likestart
andstop
will error in a more graceful if not run by the Riak user.
- bear/1: Remove native flag and add kernel,stdlib to app deps
- bitcask/89: add dialyzer targets
- bitcask/92: Fix merge logging bug introduced by bs-merge-expiration-change branch
- folsom/2: Improve performance of slide histogram
- leveldb/73: level work1
- leveldb/74: Add status query for total bytes used by a LevelDB instance
- leveldb/75: Merge of Google 1.6, 1.7, 1.8, and 1.9 releases
- leveldb/78: Repair updated for edge case created with new directory structure.
- leveldb/79: filecache tuning2
- leveldb/81: bloom size limit
- leveldb/84: level work3, change from 3 overlapped levels to 2
- merge_index/30: Remove delayed_write option
- mochiweb/7: Range header fix
- mochiweb/8: Remove parameterized modules.
- node_package/40: init script returns success even if riak does not start
- node_package/43: Add SRPMS and make RPM version field fully compatible
- node_package/44: Convert RPM init script to fall in line with Redhat style
- node_package/47: Add app_epath.sh, a POSIX app.config parsing utility.
- node_package/49: Create .pid files for package builds
- node_package/50: RPM %files changes behavior on Fedora 18
- node_package/51: Return nonzero exit codes on init function failure
- node_package/54: Fix %files section to not claim ownership of bindir and mandir
- node_package/55: Investigate shipping configuration to increase open files ulimit
- node_package/56: Name SunOS packages based on erlang architecture rather than uname
- node_package/57: Base architecture naming on erlc arch
- node_package/60: Add support for SmartOS 13.1
- node_package/61: add simple warnings on attach/attach-direct
- node_package/63: remove contract specification from SMF manifests (solaris)
- node_package/65: Create patches for SmartOS packages to handle differing behavior
- erlang_protobuffs/41: Fix some README example problems, callout deep lists change.
- erlang_protobuffs/42: Cleanup warnings
- erlang_protobuffs/45: Be more firewall-friendly :-)
- erlang_protobuffs/46: Fix parsing hex values
- erlang_protobuffs/47: fix compiler warnings about shadowed variables
- erlang_protobuffs/49: Fix enums when using packages
- erlang_protobuffs/51: Remove O(N^2) algorithm from repeated field extraction.
- riak/254: Changed
riak attach
to use a remsh - riak/268: Switch riak to use node_package for packaging
- riak/272: Add new rebar binary and erlydtl opts info toplevel rebar.config for solving dialyzer glitches
- riak/283: We insist on a minimum of 5 nodes in a cluster, adjust devrel
- riak/286: move and clarify ulimit check
- riak/288: remove embedded option
- riak/290: Support multiple PB listeners
- riak/294: Add missing rm -rf dev/$@/lib/riaknostic on dev target
- riak/303: update riak-admin transfers
- riak/310: Remove incorrect
-embedded
flag from riak startup command - riak/311: add "cluster resize-ring " to riak-admin
- riak/322: Add riak-debug, a command for automating the collection of information for diagnosing problems.
- riak/329: Riaknostic no longer escript. Alter build process accordingly.
- riak/331: Lower net_ticktime to check for aliveness more often
- riak/339: update vm.args for moving to OTP team scheduler patch
- riak/341: update app.config to activate v1 object format on new installs
- riak/345: Unable to build Riak from source tarball while offline
- riak_api/21: Move setting/fetching bucket properties out of riak_kv
- riak_api/22: Use init:script_id() for the server version.
- riak_api/23: Enable multiple PB listeners.
- riak_api/24: Add support for resetting bucket properties. Requires basho/riak_pb#35.
- riak_api/25: Remove lager dependency because it is specified by riak_core.
- riak_api/28: No PB listeners leads to repeated log messages concerning a failed stat calculation
- riak_control/54: Fixes to get dialyzer working.
- riak_control/59: Series of dialyzer and formatting changes.
- riak_control/71: Add cluster management.
- riak_control/80: Add ability to stop and down nodes.
- riak_control/81: Normalize resource names.
- riak_control/83: Make join node more explicit.
- riak_control/88: Provide a default selection.
- riak_control/111: Prevent badarith when memory is unavailable.
- riak_core/185: inbound handoffs never cleanup
- riak_core/241: potential fix for #185
- riak_core/270: Dialyzer Fixes
- riak_core/274: Allow parallel vnode initialization
- riak_core/282: Extract out and export pending claim function.
- riak_core/284: initial add of the Riak Core Connection Manager
- riak_core/290: Add support for tracking progress of individual handoffs
- riak_core/291: SSL support
- riak_core/297: don't use hardcoded app names in SSL utils
- riak_core/298: Race in vnode worker pool
- riak_core/299: Vnode nonblocking reply, First draft (3rd edition), ready for some review
- riak_core/300: Fix worker pool races
- riak_core/301: Ring Resizing
- riak_core/302: rework coverage fsm timeouts.
- riak_core/305: Support for
plan/2
andprocess_results/3
funs for coverage fsm - riak_core/312: Enhance transfer display + wrapping nodenames.
- riak_core/313: format _stat_ts in connection manager
- riak_core/316: handoff batching
- riak_core/319: Optimize to better handle large rings/nodes
- riak_core/321: proper return value for riak_core_console:transfers/1
- riak_core/322: Handle node up/down in tcp_mon
- riak_core/323: Permanently disable legacy gossip
- riak_core/325: Fix a typo in tcp_mon init
- riak_core/328: Fix overload test time outs
- riak_core/330: dont start coverage timeout timer if timeout is infinite
- riak_core/331: fix forced_ownership_handoff during resize
- riak_core/332: update bad value protection for timer value
- riak_core/334: Reporting 'normal' events is spammy, don't do it
- riak_core/336: Fix crashing stat mod never getting rescheduled
- riak_core/339: Fix repair handoff crash, missing not sent fun
- riak_core/340: only silently drop DOWN-normal messages in deleted modstate
- riak_kv/30: Bz982 - js_reload not working
- riak_kv/31: Key count reduce function
- riak_kv/334: Every read triggers a read-repair when Last-write-wins=true
- riak_kv/385: Objects cannot be updated if a bad CRC is encountered by Bitcask
- riak_kv/462: Expose FSM timeouts via the HTTP API
- riak_kv/467: add stats for coverage query starts
- riak_kv/479: More Compact Riak Object Binary Format
- riak_kv/487: provide a Location header for the same api version on POST
- riak_kv/488: Move setting/fetching bucket properties to riak_api
- riak_kv/489: Migrate mapred_test to riak_test
- riak_kv/491: Remove Link headers from bucket and key lists
- riak_kv/492: Make hashtree_eqc close trees before destroy.
- riak_kv/495: Add encoding capability for handoff.
- riak_kv/496: Standardize KV backend responses and handling
- riak_kv/498: Document the environment in the logs; advise on bad settings.
- riak_kv/500: vclock capability
- riak_kv/510: Remove merge_index dependency and unused erl_first_file.
- riak_kv/512: Protocol Buffers interface allows the creation of records with an empty key
- riak_kv/520: Adds X-Riak-Deleted where missing
- riak_kv/521: Changes needed to expose FSM timeouts to clients
- riak_kv/526: Expose Backend Size to Handoff for Progress Tracking
- riak_kv/527: List buckets timeout & streaming
- riak_kv/529: Count async MR results against the sink buffer size cap
- riak_kv/530: Ring Resizing Support
- riak_kv/532: kv_wm_utils expects ?MD_DELETED to be "true" not 'true'
- riak_kv/536: A simple way to store a PN-Counter in a riak_object
- riak_kv/542: add license header to riak_kv reformat
- riak_kv/546: Expose the put_fsm 'asis' option to clients
- riak_kv/552: Add new backend capability for Riak r_object use
- riak_kv/554: Optimize to better handle large rings/nodes
- riak_kv/555: Add init/final to AAE remote interface
- riak_kv/559: Alter env recommendations for 1.4
- riak_kv/560: Fix regression in 2i reformat status flag & add extra status function
- riak_kv/562: use old object format by default on upgrade
- riak_kv/563: Add binary format for counters
- riak_kv/569: Make sure client supplied N <= bucket N
- riak_kv/576: Add a capability for counters
- riak_kv/579: Skip start {val, key} pair if start_inclusive is false
- riak_kv/581: Wire up sidejob stats to /stats endpoint
- riak_kv/585: minor improvements to riak_object downgrade support
- riak_kv/586: Stop fold when a vnode reaches page size
- riak_kv/587: Fix incorrect arg in call to get_primary_apl/3 by put FSM
- riak_kv/588: Multi backend was missing data_size function
- riak_pb/30: Add remaining bucket properties to PBC
- riak_pb/31: Fix errors with repl bucket property.
- riak_pb/32: precommit/postcommit empty does not clear
- riak_pb/33: Fix commit hooks and symbolic properties as binaries
- riak_pb/35: Support reset bucket properties feature.
- riak_pb/36: Protoc dependency free version for Python Package Index
- riak_pb/38: Add timeouts to get, put, and delete
- riak_pb/41: Add messages for exporter tool & list timeouts
- riak_pb/42: Remove need to have protoc available in Python source package. Closes #36
- riak_pb/43: 2i pagination support
- riak_pb/44: Add asis flag for RpbPutReq.
- riak_pipe/50: fitting was done before startup
- riak_pipe/62: Move eunit system tests to riak_test
- riak_pipe/68: assume handoff if vnode exits 'normal' during queue requeuest
- riak_pipe/71: Fix opaque type warnings on R16B.
- riak_pipe/73: PULSE test & fix riak_pipe_fitting
- riak_pipe/75: lower "fitting was gone" log to debug level
- riak_pipe/76: limited support for ring resizing
- riak_search/140: remove guard on riak_search_vnode:start_vnode/1
- riaknostic/55: Remove misplaced parathesis (sysctl check)
- riaknostic/56: Add OpenBSD bits
- riaknostic/66: Un-escriptize riaknostic and modify for lager 2.0 compatability
- riaknostic/67: Add an extra log line for clarity when running non-existent checks
- webmachine/76: Add logging for when webmachine crashes and body exists.
- webmachine/115: Fix arguments to call to webmachine_request:recv_stream_body/2
- webmachine/117: Decode Content-MD5 with base64, not hex
- webmachine/124: Refine range header treatment
- webmachine/125: Guess text/css MIME type for .less files
- webmachine/128: Bugfix for multiple routers under Riak
- webmachine/134: collapse 4 separate send calls into 1 in send_chunk
- webmachine/141: Custom reason phrase
- webmachine/142: Read body when DELETE to keep alive connection
- webmachine/143: webmachine_dispatcher crashes on malformed Host header
- webmachine/144: Allow responses for all HTTP errors to be customized
- webmachine/151: Removing io:format/2 calls from log file processing
The first execution of 1.4.0 leveldb using a 1.3.x or 1.2.x dataset will initiate an automatic conversion that could pause the startup of each node by 3 to 7 minutes. The leveldb data in "level #1" is being adjusted such that "level #1" can operate as an overlapped data level instead of as a sorted data level. The conversion is simply the reduction of the number of files in "level #1" to being less than eight via normal compaction of data from "level #1" into "level #2". This is a one time conversion.
Ubuntu 11.04 Natty Narwhal reached its end-of-life October 2012 and recently the public apt updates and security repos were removed. Due to this, Riak will no longer be built against 11.04 going forward. We will consider supporting the latest non-LTS release depending on the timing of the next major Riak release.
Ubuntu LTS releases still supported (10.04 and 12.04) are unaffected.