Forward Incompatibility of app.config

Info Value
Date issued April 15, 2015
Product Riak
Affected Riak versions 2.0.0+, 2.1.0+

Overview

A forward incompatibility of app.config between 1.x and 2.x has been identified.

Description

There is a forward compatibility issue when upgrading from the 1.x series to the 2.x series and continuing to use an app.config instead of migrating to the new riak.conf introduced in 2.0. This issue results in different default bucket properties being applied to un-typed buckets in 2.x, specifically for the allow_mult and dvv_enabled parameters. In 1.x allow_mult defaulted to false but defaults to true in 2.x. The dvv_enabled parameter did not exist in 1.x, and defaults to true in 2.x.

Impact

A switch from {allow_mult, false} to {allow_mult, true} can cause unbounded growth of objects as siblings are added each time the object is updated unless the client application is explicitly resolving siblings.

Mitigation Strategy

This issue can be mitigated by adding {allow_mult, false} to default_bucket_props in the riak_core section of the app.config. {dvv_enabled, false} can also be added, however enabling Dotted Version Vectors should have no negative impact on the cluster.

  {riak_core, [
    . . .
    {default_bucket_props, [
      {allow_mult, false},
      {dvv_enabled, false}]},
    . . .