ringpop-go v0.4.0 Release Notes

    • ๐Ÿ”‹ Feature: Faulty nodes are now automatically reaped from nodes' membership lists after (24 hours by default). #123
    • ๐Ÿ†• New options for controlling suspect and reaping times. #123
    • โž• Add new Ready and Destroyed events to ringpop. #125
    • โž• Add additional logging to bring ringpop-go on par with ringpop-node log messages. #116
    • ๐Ÿ›  Fix bug where Ringpop automatically added itself to the bootstrap hosts for host-based bootstrapping, but not other bootstrapping methods. #120
    • ๐Ÿ›  Fix race condition where membership and hashring could be inconsistent with each other. #112
    • โœ‚ Remove File and Host options from bootstrap options in favor of DiscoverProvider interface. #120
    • โž• Add Go 1.6 to testing on CI

    ๐Ÿš€ Release notes

    ๐Ÿ”– Version incompatibility in protocol

    Since 0.4.0 introduces a new node/member state, 0.4.0 is not backwards-compatible with previous versions.

    โฌ†๏ธ Note rolling upgrades with older versions do work, but undefined behaviour will occur if two versions run in parallel for longer than the FaultyPeriod (default 24 hours).

    ๐Ÿ”„ Changes to Bootstrap

    ๐Ÿš€ This release contains a breaking change to the options provided to the ringpop.Bootstrap call.

    BootstrapOptions.File and BootstrapOptions.Hosts have been replaced with BootstrapOptions.DiscoverProvider. DiscoverProvider is an interface which requires a single method:

    type DiscoverProvider interface {
        Hosts() ([]string, error)
    }
    

    Ringpop comes with DiscoverProviders for the previous File and Hosts options out of the box.

    โฌ†๏ธ To upgrade if you were previously using File:

    +       "github.com/uber/ringpop-go/discovery/jsonfile"
    ...
    -       bootstrapOpts.File = *hostfile
    +       bootstrapOpts.DiscoverProvider = jsonfile.New(*hostfile)
    

    For static Hosts:

    +       "github.com/uber/ringpop-go/discovery/statichosts"
    ...
    -       bootstrapOpts.Hosts = []string{"127.0.0.1:3000", "127.0.0.1:3001"}
    +       bootstrapOpts.DiscoverProvider = statichosts.New("127.0.0.1:3000", "127.0.0.1:3001")