Skip to content

Mv riak 1 4 cleanup

Matthew Von-Maszewski edited this page Jul 11, 2013 · 1 revision

Status

  • merged to "master" July 11, 2013
  • developer tested code checked-in July 10, 2013
  • development started July 9, 2013

History / Context

Riak 1.3 included changes to the Erlang NIF interface to leveldb (see basho/eleveldb repository). These changes forced all interactions between Erlang and leveldb to change threads when crossing eleveldb. All kinds of implicit timing and throughput parameters changed with the new NIF interface.

Also the new Riak feature Active Anti-Entropy (AAE) was added in Riak 1.3. It too created new throughput challenges.

The result was that an entirely new write throttle was written for Riak 1.3. The code was written piecemeal (hacked) within env_posix.cc. It was subsequently tuned for even better performance in Riak 1.4, but left within env_posix.cc.

This branch merely moves the 1.3 write throttle to its own source files: util/throttle.cc and util/throttle.h. And corrects one routine that relied upon an incorrect mutex.

Branch description

  • Copy / paste throttle code (and tiered locks) from env_posix.cc/env.h to throttle.cc/.h

  • Correct SetThrottleWriteRate() (previously Env::SetWriteRate) to properly use gThrottleMutex instead of Env::mu_

Note: The code now in throttle.cc/.h is written more like C code instead of a C++ class. This is just laziness. It would be good to clean this up further when time allows.

Clone this wiki locally