Permalink
Switch branches/tags
Commits on Oct 7, 2014
  1. Simplify hashtree:estimate_keys/3

    jtuple committed Oct 7, 2014
    This commit combines the two terminating conditions for estimate_keys
    into a single guard expression, simplifying the code.
Commits on Sep 22, 2014
  1. Merge pull request #629 from basho/feature/aae-exchange-bfs-2.0

    jtuple committed Sep 22, 2014
    Reviewed-by: jonmeredith
  2. Add breadth-first AAE exchange

    jtuple committed Aug 28, 2014
    This commit ports the breath-first exchange algorithm from the
    synctree code in riak_ensemble to the hashtree code here in riak_core.
    This level-by-level exchange is necessary to support streaming and/or
    pipelined AAE exchange -- an approach that will soon underpin the new
    AAE-based fullsync replication protocol in Riak.
Commits on Jun 11, 2014
  1. Fix riak_core_util:pmap/2 infinite stall

    jtuple committed Jun 11, 2014
    This commit changes riak_core_util:pmap/2 to use spawn_link rather
    than spawn to create the asynchronous processes. Without this change,
    pmap/2 can stall forever if any of these processes crashes -- eg. by
    using a map function that generates an error.
    
    This commit also fixes the function -spec as well as optimizes the
    final stage of the pmap by using a list comprehension rather than
    lists:unzip (this is faster and generates less garbage).
Commits on Jun 6, 2014
Commits on Jun 5, 2014
  1. Add logic to automatically enable consensus system

    jtuple committed Jun 5, 2014
    Currently, in addition to enabling consensus in app.config, a user must
    also manually call 'riak_ensemble_manager:enable()' from one and only
    one node in a cluster to activate the consensus sub-system. This is
    necessary to ensure that there is only a single logical root ensemble
    history -- all other nodes adopt the history from the single enabled
    node.
    
    However, this step is not only annoying but also error-prone. Enabling
    consensus on multiple nodes can break the consensus system, requiring
    manual intervention.
    
    This commit addresses this problem by making riak_core automatically
    enable the consensus system in a safe way. This is accomplished by
    having the claimant node enable the consensus system. To avoid the
    issue where the claimant in multiple 1-node clusters enables consensus
    before being joined, this commit requires the cluster to have at least
    three nodes before the claimant will enable the consensus system.
    
    To prevent a race during claimant changes, a claimant must first write
    a special ring metadata value that prevents future claimants from
    activating the consensus system. It is not until after the ring has
    converged cluster wide, and the claimant sees the appropriate metadata
    value, that the claimant activates the consensus system.
    
    Resolves #571
Commits on Jun 4, 2014
Commits on Apr 11, 2014
Commits on Mar 31, 2014
  1. Improve riak_ensemble integration

    jtuple committed Mar 31, 2014
    Update to correctly work with latest riak_ensemble.
    
    Ensure that any failures during ensemble bootstrapping trigger future
    attempt to re-bootstrap the cluster.
Commits on Jan 30, 2014
Commits on Dec 24, 2013
Commits on Dec 13, 2013
Commits on Dec 12, 2013
  1. Export hashtree:flush_buffer/1

    jtuple committed Dec 12, 2013
Commits on Oct 26, 2013
Commits on Oct 24, 2013
Commits on Oct 23, 2013
  1. Merge branch 'jdb-strong-1.4.2' into jdb-strong-2.0-wip

    jtuple committed Oct 23, 2013
    Conflicts:
    	rebar.config
    	src/riak_core.app.src
    	src/riak_core_bucket.erl
    	src/riak_core_claimant.erl
    	src/riak_core_sup.erl
    	src/riak_core_vnode.erl
Commits on Oct 22, 2013
  1. Fix/extend vnode handoff/forwarding behavior

    jtuple committed Oct 22, 2013
    Fix issue where handoff_cancelled was not called on vnode modules
    if handoff failed to start due to concurrency limit.
    
    Add new optional set_vnode_forwarding callback that vnode modules
    can implement to track riak_core's implicit forwarding behavior
    that occurs between a primary handoff finishing and actual ownership
    being changed.
    
    All of the above changes are necessary for riak_kv_vnode to properly
    support strongly consistent operations during handoff and ownership
    transitions.
Commits on Aug 24, 2013
Commits on Aug 23, 2013
Commits on Jul 9, 2013
  1. Fix two major vnode manager bugs

    jtuple committed Jul 9, 2013
    First, fix a bug that enabled a race condition wherein the vnode
    manager could start the same vnode multiple times. This would result
    in both vnode instances trying to acquire the same backend, which
    would fail and force the Riak node to shutdown.
    
    The cause of this bug was a change introduced during the large
    ring optimization work for Riak 1.4. In this work, an unbounded
    `ets:match_delete` that resulted in a table scan was changed to
    a straightforward `ets:delete`. Unfortunately, the `ets:delete`
    could delete data associated with a newer instance of a given vnode
    in cases where a monitor for a prior instance fired after the new
    instance was created.  This bug was fixed by switching to a bounded
    `ets:match_delete` that avoids the table scan while also avoiding
    unintended deletes.
    
    Second, fix a bug introduced during the parallel vnode initialization
    work from Riak 1.3.1 that caused the vnode manager to newly monitor a
    given vnode each time get_vnode_pid was called. This bug could result
    in an unbounded number of monitors being created in certain scenarios,
    causing a node to become slower over time until it was restarted.
Commits on May 30, 2013
Commits on May 28, 2013
  1. Merge #319 from jdb-large-master into staging-1.4

    jtuple committed May 28, 2013
    Also, fix several build warnings since #319 includes a change to treat
    warnings as errors.
    
    Conflicts:
    	src/riak_core_util.erl
  2. Address code review comments

    jtuple committed May 28, 2013
    -- Add module edoc to riak_core_ring_manager discussing hybrid approach.
    -- Comment the approach used to update the bucket props in ETS.
    -- Ensure we do not silently ignore any errors in ensure_vnodes_started.
    -- Change chashbin:index_owner/2 error condition.
    -- Fix variable naming for chashbin:iterator/2.
Commits on May 20, 2013
  1. Permanently disable legacy gossip

    jtuple committed May 20, 2013
    This commit hardcodes all checks for legacy gossip to return
    false. This is the first step towards removing legacy gossip
    from riak_core entirely. A future commit will completely remove
    all relevant code as well as adjust the callsites that currently
    still call into these now hardcoded functions.
Commits on May 15, 2013
  1. Randomize vnode inactivity timeout

    jtuple committed May 12, 2013
    The goal is to prevent multiple vnodes timing out simultaneously
    and overloading the vnode manager with tons of messages.