NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #2100 by repository stars
Last release 4 years ago
no release in 18 months
Ships unpredictably
gaps range from 2 weeks to 2.5 years
Most releases are documented
notes for 15 of 18 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
29 releases · first in 2016
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Fix: LookupN returns ring node destinations in ring order #211
Nothing published for this version
Allow requiresAppInPing to be configured #209
Fix: Add option to enforce identical app name in pings #206
Merge branch 'release-0.8.2'
Merge branch 'release-0.8.2'
Nothing published for this version
add changes for v0.8.1 to CHANGELOG.md
add changes for v0.8.1 to CHANGELOG.md (#202)
Fix: ineffectual assignments #193
Identity carry over provides a way to manually configure the identity of a member on the hashring. By changing the identity to be something else than its address, it becomes possible to guarantee ring equality before and after deploys in a dynamic environment (e.g. mesos).
By calling ringpop.SelfEvict on shutdown, a member will declare itself as faulty and gossips this to the other members.
This removes the time window where it would be marked as suspect; in this way removing the time where other members
considered it to be part of the ring while it was not responding anymore.
identity-optionPrior to ringpop v0.8.0 the address was used as the identity of a member. Starting with version v0.8.0, it's possible to
configure a separate identity. As a result, the behaviour of the Identity and IdentityResolverFunc has been changed.
The Identity option now configures the identity of a member and will return an error when it matches an ip:port; services
that were using Identity or IdentityResolverFunc should now use the Address and AddressResolverFunc options.
You could use the following gofmt snippets to easily refactor:
gofmt -r 'ringpop.Identity(a) -> ringpop.Address(a)' -w .
gofmt -r 'ringpop.IdentityResolverFunc(a) -> ringpop.AddressResolverFunc(a)' -w .
Fix: Header leaking on the forwarding path caused calls to own endpoints to not be sharded when the same context was used while making the call #197
When applications use their incoming context blindly in an outgoing call it uses the same tchannel headers for the outgoing call as the incoming call had, causing incoming headers to be leaked in the outgoing call. Since most applications don't use headers there is nothing to worry about. However the forwarding path of ringpop uses a header to indicate a call has been forwarded. This header prevents indefinite forwarding loops to occur when applications fail to converge on ownership.
With this fix the header indicating a forwarded call will not be leaked to the application. This makes it possible for applications to use the incoming context on a call to a sharded endpoint on their own or another ringpop servers service an correctly route the request.
Nothing published for this version
Due to a refactor in how event emitting is done the RegisterListener method is deprecated. Even though it still works and behaves as previously it wil…
.thrift files in generated code for thrift forwarding #162The ringpop interface changed two existing functions GetReachableMembers and
CountReachableMembers that now take a variadic argument of type
swim.MemberPredicate instead of no arguments. This does not change the usage
of these functions, but does change the type of the function. This might cause
custom declared interfaces to not match ringpop anymore. The solution is to
change these functions in the interface used to match the current signature.
Previously the signature was:
GetReachableMembers() ([]string, error)
CountReachableMembers() (int, error)
The current signature is:
GetReachableMembers(predicates ...swim.MemberPredicate) ([]string, error)
CountReachableMembers(predicates ...swim.MemberPredicate) (int, error)
Due to a refactor in how event emitting is done the RegisterListener method is
deprecated. Even though it still works and behaves as previously it will start
logging warnings. Since this code is not on the hot path only little log volume
is expected. Instead of this function it is now advised to use AddListener.
This function also returns if the listener has been added or not.
Nothing published for this version
Fix: add 1-buffer for error channels, prevents leaking goroutines. #140
Feature: Automatic healing of fully partitioned rings that could be cause by temporary network failure. #135 #128 #129
It is advised to complete the deployment of this version within 24 hours after
the first node is upgraded. Since the reaping of faulty nodes is added to this
release a node that upgraded to this version will mark all the faulty members of
the ringpop cluster as tombstones (the new state introduced for the reaping of
faulty nodes) 24 hours after the deploy. If older versions of ringpop run in a
cluster that starts declaring these tombstones the cluster will jump in endless
fullsyncs mode. Ringpop operates normally under these conditions but extra load
on both network and CPU are in effect during this time. The fullsyncs will
automatically resolve as soon as all members are upgraded to this version. Same
might happen during a partial rollback that operates for a longer period of time.
Reverting reaping faulty nodes feature temporarily while investigate backwards compatibility issues.
This release contains a breaking change to the options provided to the ringpop.Bootstrap call.
Ready and Destroyed events to ringpop. #125File and Host options from bootstrap options in favor of
DiscoverProvider interface. #120Since 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).
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")
Fix "keys have diverged" forwarding error for retries #69
Fix retry mechanism for forwarded requests. When multiple keys are forwarded and a retry is attempted, the retry would fail with a "key destinations h
Fix goroutine leakage on forwarded requests that time out
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →