Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on May 21, 2012
  1. @jtuple

    Change how the capability system handles unknown capabilities

    jtuple authored
    Change riak_core_capability:get/1 to throw an exception if it is unable
    to determine the mode for the requested capability.
    Add riak_core_capability:get/2 that takes a default response as the second
    argument, and returns the default when the mode is unknown.
    Change riak_core_vnode_master to default to legacy routing mode when the
    current routing mode is unknown.
Commits on Apr 27, 2012
  1. @jtuple
Commits on Apr 2, 2012
  1. @jtuple
Commits on Feb 24, 2012
  1. @jtuple

    Fix map_reduce during rolling upgrade to 1.1.

    jtuple authored
    Resolve issue #144.
    Change riak_core_vnode_master to still handle return_vnode messages
    given that pre-1.1 nodes may still send those messages to a 1.1 node.
    Add legacy routing logic to riak_core_vnode_master:command_return_vnode
    in order to properly send messages to pre-1.0 nodes that do not have
    vnode proxy processes.
Commits on Feb 6, 2012
  1. @seancribbs
Commits on Dec 23, 2011
  1. @jtuple

    Refactor riak_core vnode management (part 2)

    jtuple authored
    Move forwarding and handoff decisions from individual vnode processes
    and into the vnode manager. The vnode manager makes handoff and
    forwarding decisions whenever the ring changes, and triggers vnode
    state changes as appropriate.
    Rewrite the logic by which per vnode handoff is marked as complete in
    the ring. In particular, move the logic from riak_core_gossip and into
    riak_core_vnode. The underlying ring changes are still serialized by
    riak_core_ring_manager through the ring_trans function.
    Change gossip throttling logic to trigger gossip whenever gossip tokens
    reset, replacing the gossip interval approach.
    Perform various tuning and additional minor changes that improve cluster
    operation during a heavy gossip spike.
Commits on Oct 31, 2011
  1. @jtuple

    Refactor riak_core vnode management (part 1)

    jtuple authored
    Move vnode spawning and pid tracking logic from riak_core_master to
    riak_core_manager. This change sets the stage for future work that will
    make the vnodes more pure, with state transitions coordinated by the
    vnode manager. A side-effect is that there is now a central process
    managing pids for all registered vnode modules, rather than one master
    per vnode module.
    Add registered and supervised vnode proxy processes. Requests can be
    sent directly to a vnode proxy process for a desired node/index/module
    and the request will be forwarded to the proper vnode. The proxy process
    coordinates with the vnode manager to know the proper pid for routing,
    and monitors the vnode pid in order to clean-up on shutdown/crashes. While
    vnodes may be spun up and down on demand by the vnode manager, the relevant
    proxy processes are always alive and can be counted on for direct routing.
    Change riak_core_vnode_master to use the new vnode proxy support in most
    cases. All requests that are routed through a vnode master process will
    now use the proxy logic to dispatch requests. Likewise, the non-sync API
    exposed by the vnode master module no longer routes through the master
    itself, but directly dispatches requests to the proxy processes. Sync
    commands still route through the master, which then routes through the
    proxy in handle_call. A side-effect is that sync commands now require
    three local hops (master, proxy, vnode-pid) rather than two (master,
Commits on Sep 23, 2011
  1. @jonmeredith

    Changed vnode to unregister from master before cleaning up.

    jonmeredith authored
    Fullsync repl was hanging because it delivered a fold message
    while finish_handoff was being called.  The message was never
    processed as the vnode immediately shut down rather than
    forwarding the messages in the queue.
    On completion of handoff, async unregister from the vnode master. The
    unregister call now passes the pid of the vnode unregistering
    and now the master sends an unregistered event once the vnode
    is removed from the master ETS table.
    While waiting for the acknowledgment of unregister the vnode goes
    into forwarding mode.
Commits on Sep 20, 2011
  1. @Vagabond
Commits on Sep 4, 2011
  1. @jonmeredith
Commits on Sep 3, 2011
  1. @jtuple

    Overhaul cluster membership, ring format, and gossip protocol

    jtuple authored
    Tickets: AZ462 AZ533 AZ630 AZ642
    Fixes: BZ1024 BZ878 BZ688 BZ931 BZ869
    Change cluster membership/gossip/ring in the following manner:
    -- Partition ownership and cluster membership are decoupled concepts.
    -- A single node in the cluster makes all partition claim decisions
       in a deterministic manner, avoiding endless churn possible in random
       merging. This single node (the claimant) can be assumed by any node in the
       cluster, and therefore avoids introducing a single point of failure.
    -- All data from all vnode modules is guaranteed to be handed off to a new
       owner before the owner takes over ownership for a partition, thus avoiding
       requests prematurely being sent to a node that does not yet have the data.
    -- Nodes will always handoff their data before cleaning exiting the cluster,
       even if the node is restarted before finishing handoff.
    -- Waiting for ring convergence is now part of the gossip/membership protocol,
       and is used to ensure consistent ring transitions across the cluster.
    -- Joining/leaving a cluster is handled more gracefully, and there is no
       need to wait for ring convergence (riak-admin ring-ready) as is previously
       suggested. Adding 20 nodes to a cluster at once should "just work".
    -- Handoff related to partition ownership changes can now occur under load,
       therefore allowing a cluster to scale up/down while handling normal
    Other changes:
    -- Support for new commands: member_status, ring_status.
    -- Tracking of various new riak_core stats.
Commits on Jul 22, 2011
  1. @kellymclaughlin

    Generalize the coverage behavior used to list keys and move much

    kellymclaughlin authored
    of the coverage work into riak_core.
    Fixes: az496
    This pull request generalizes the coverage behavior used by key
    listing and makes it directly usable for other operations.
    Also added function to riak_core_ring to determine the ring index that
    is the successor of a chashed index value directly given the number of ring
    partitions instead of having to calculate the entire preference
    list. There is also a related function added to the chash module and
    a quickcheck test to exercise this function.
    This pull request also includes some changes to tidy up some of the
    chash and riak_core_ring modules by adding some formatting, converting
    edoc to specs, etc.
Commits on May 26, 2011
  1. @beerriot

    expose the pid for the vnode that just received the command

    beerriot authored
    command_return_vnode returns {ok, VnodePid} instead of just 'ok', to
    allow the caller to monitor the vnode that is handling its request
Commits on Mar 28, 2011
  1. @argv0
Commits on Mar 15, 2011
  1. @kellymclaughlin
Commits on Mar 10, 2011
  1. @jonmeredith

    Change default vnode request sender to 'ignore'.

    jonmeredith authored
    The Sender is where replies to vnode requests are sent by
    riak_core_vnode:reply.  The default for the vnode request
    record and riak_core_vnode_master:command is set to 'noreply',
    but riak_core_vnode:reply checks for 'ignore' if no response
    should be sent.  Unify default/typespec to use 'ignore' - it's
    a smaller change across code base.
Commits on Feb 23, 2011
  1. @jonmeredith

    Added a variant of preference lists with Pids rather than indices.

    jonmeredith authored
    Makes it possible to spin up vnodes without a vnode master for testing.
Commits on Aug 11, 2010
  1. @slfritchie
Commits on Jul 22, 2010
  1. @argv0

    fix some include paths

    argv0 authored
Commits on Jul 21, 2010
  1. @argv0

    initial import

    argv0 authored
Something went wrong with that request. Please try again.