Overview

Riak KV (aka Riak / Riak EE) 2.1.3 has a race condition with opening
LevelDB databases and may crash with a segmentation violation (SIGSEGV).
LevelDB databases are opened on primary or fallback vnode startup and
during AAE expiration The issue is possible but much less likely on the
Riak TS 2.0, Riak KV 2.0 and earlier Riak KV 2.1 series.

Description

Beginning with Riak KV 2.1.3, a list of opened databases is used by the
GroomingCompactions feature to look for databases with low write activity
that can benefit from being compacted.

The race condition occurs because newly opened databases are added to the
list before their initialization is complete. Scanning for
GroomedCompaction candidates takes place once every minute or whenever one
completes. If the initializing database is accessed during initialization,
it may reference uninitialized memory and crash with a segmentation
violation.

The open database list was originally added to support the FlexCache
feature in Riak 2.0. There is a much smaller chance this race condition
will occur in Riak 2.0, since it requires more than one database to open or
close at the same time.

This issue is corrected by ensuring that the list of open databases is
updated after the initialization of the database is complete. The
correction is shipped within Riak KV 2.0.7, Riak KV 2.1.4, and Riak TS
1.3.0

Affected Users

- Users running Riak KV 2.1.3 with the LevelDB backend, with or without AAE
enabled.

- Users running Riak KV 2.1.3 with other backends (multi, memory, bitcask)
and AAE enabled could also hit this issue.

- Users running Riak KV 2.0.0 and higher with AAE enabled are also
affected, but the likelihood of hitting the race condition is much lower.

- Users running Riak TS 1.0.0 and higher are also affected, but the
likelihood of hitting the race condition is much lower.

Impact

An affected node will reference uninitialized memory and will likely exit
with a segmentation violation. It may be logged by the operating system as
a crash by the beam.smp process.

Mitigation Strategy

Upgrade to a release of Riak KV at 2.0.7⁄2.1.4 or later to resolve the
issue, or patch the eleveldb.so shared library.

Riak KV 2.1.4 is the same as Riak KV 2.1.3 with a corrected version of the
eleveldb.so library. Riak KV 2.1.4 is available at our downloads site here:
http://docs.basho.com/riak/kv/2.1.4/downloads/

Riak KV 2.0.7 is a regular patch release that is in progress and will be
released in the next few weeks.

If you are unable to upgrade/patch, the occurrence can be reduced by
temporarily disabling AAE until the node is upgraded or patched.

Instructions

Installation and upgrade instructions can be found here
http://docs.basho.com/community/productadvisories/leveldbsegfault/

-- 
Seema Jethani
Director of Product Management, Basho <http://basho.com>
4083455739 | @seemaj <http://twitter.com/seemaj>
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to