This commit copies hashtree.erl from riak_kv (it will be removed in that repo). In addition, it adds a (temporary) dependency on eleveldb, which is used by hashtree.erl. hashtree_tree is intended to be used ephermerally (although there is no reason it cannot be persistent) but hashtree must first be
%% @doc secret function, do not use, or I come to your house and keeel you. -spec cs_bucket_fold(pid(), bucket(), cs_opts()) -> {ok, reference()} | {error, term()}. cs_bucket_fold(Pid, Bucket, Opts) when is_pid(Pid), is_binary(Bucket), is_list(Opts) ->
Avoid use of ets:match() in hot code paths Profiling with DTrace on Solaris suggests that ets:match() is causing a much higher than necessary lock contention rate within the Erlang R14B03 and R14B04 VMs. Eliminating ets:match() in the riak_core and riak_kv applications is substantial when using Pthr
The way that Riak versions and updates objects has been overhauled. ClientIds are no longer used when updating objects, the server handles all versioning using a vector clock id per-vnode.
Why replace the default error handlers? The Erlang/OTP default event handler will format a message using a user-supplied formatting string or a default "~p" formatting string (for report-style messages). Using ~p and/or ~w formatting can consume enormous amounts of RAM, due to how Erlang strings are