Test demonstrating that objects can not be written if a bad CRC is encountered in Bitcask
expose timeouts via webmachine
- remove redundant default
- clarify error message
add stats for coverage query starts
 - index fsm: create, create_error, active
 - keys and bucket fsms (as 'list'): create, create_error, active
Merge branch 'master' into bitcask-badcrc-eunit-test

Preparing to bring the bad crc unit test into the present
change spawn to spawn_link
Write even on bitcask bad_crc read

Fixes issue #385
Reads on corrupted files return a bad_crc error, which were not handled.
When writing, if a bad_crc was encountered on read of an existing key,
the write failed. Files being erased, or even truncated were handled
and the write proceeds, but bit corruption would die. I don't think
there is any benefit to the different handling.
Whitespace change to trigger Travis
Merge pull request #476 from branch bwf-mr-const-hash

Squashed commit of the following:

commit 0c07454626517c6f26013ea373cbcf516e3033ee
Author: Bryan Fink <bryan@basho.com>
Date:   Sat Feb 2 10:17:43 2013 -0500

    cleanup and rework contant reduce hash

    Builds on commit in #475 with more documentation, variable name cleanup,
    and a more failure-tolerant up-vnode-finder strategy.

commit 58040e86689d93ee68abb16744b1d8598a9a9cd2
Author: Dreyk <gunin@satissoft.ru>
Date:   Fri Feb 1 13:44:49 2013 +0400

    Update src/riak_kv_mrc_pipe.erl

    Reduce phase must be started on live node.
Make AAE rehash delete missing data from relevant hashtree

This change ensures that AAE does not attempt to continually repair
deleted keys that an AAE hashtree believes still exist.
Change AAE hashtrees to buffer/batch deletes

AAE already buffers writes and submits them as a single write-batch to
LevelDB for better performance. Since deletes are also valid batch
operations, this change buffers deletes alongside writes and submits
all operations as a single write-batch as necessary.

This change also fixes a potential bug in the previous approach that
could reorder a write to happen after a delete, even if the delete
occured after the write -- thus reviving a dead hash.
Merge pull request #478 from basho/jdb-aae-deleted
Merge branch '1.3'
Merge pull request #462 from basho/pevm-expose-timeouts

Expose FSM timeouts via the HTTP API
Randomize the LevelDB write_buffer_size used for AAE

LevelDB as used for normal Riak K/V data randomizes the write_buffer_size
to protect against multiple buffers filling up simultaneously under heavy
uniform load. This commit does the same for the LevelDB instances created
by AAE.
Merge pull request #482 from basho/jdb-aae-randomize
Improve AAE backpressure on K/V vnode write-path

Original AAE design had riak_kv_vnode send async casts to the
riak_kv_index_hashtree to decouple the two processes and ensure AAE
had little impact on K/V performance. Testing uncovered issues where
the K/V vnode could operate faster the AAE hashtree, leading to
unbounded message queue growth. To fix this, the updates were changes
to be synchronous calls to add backpressure.

However, doing a blocking call for every update impacts K/V
performance.  This is especially noticeable when running a fast
backend, such as Memory or Bitcask. This commit moves to a hybrid
approach. A fixed number of updates are sent asynchronously after
which the next update is performed synchronously. The value is
currently hardcoded to 90 asynchronous requests. The worse-case
message queue size is therefore 91 outstanding messages.
Make the number of asynchronous AAE inserts configurable
Merge pull request #483 from basho/jdb-aae-async
Merge branch '1.3'