- Fix: Update hammock for node4+ support #328
- Feature: Allow ringpop to reject pings if the ringpop app name differs #323
- Feature: Allow overriding the stats-prefix used byt ringpop #320
- Fix: Start state-transition timers on bootstrap #313
- Fix: Make hash ring lookups consistent in case of hash collisions #315, #316, #317
- Feature: Support retrying the discover provider #314
-
Self eviction
If a member disappears, it will become a suspect for a period (defaults to 5 seconds) before it's marked as faulty and removed from the ring.
In the case of an expected shutdown, this causes a time window where a member is still considered part of the ring but not responding to (forwarded) requests anymore; causing unnecessary impact on SLA's.
By exposing a
selfEvict
-function, ringpop allows a member to update its own state to faulty and gossip this update around as part of a graceful shutdown. -
Key consistent forwarding
When receiving a forwarded request from another member, the full ring checksum of sender and receiver will be compared, to confirm consistency. This is the default behavior.
"Key consistent forwarding" adds support for a looser consistency check; instead of comparing the full ring checksum, ringpop only checks whether if the receiving member owns the key(s) of the forwarded request.
The idea behind this approach is that if both members agree that the receiving member is the owner, it doesn't really matter if other parts of the hash ring are not in sync.
Note: the default behaviour did not change! Key consistent forwarding can be enabled by disabling
enforceConsistency
and enablingenforceKeyConsistency
when initializing ringpop.
- Fix a bug in the serialization of forwarded requests when data is a
Buffer
#308
- Performance improvements in forwarding path by upgrading hammock #306
- Support node4 #304
- Emit stats for LookupN comparable to Lookup #283
- Optimize reincarnation for faster convergence #284 #282
- Refactored internal representation of member state for more flexible reincarnation and state change of a member #291 #292 #293 #294 #296
- Remove tick-cluster.js, the version from ringpop-common should be used #278
- Emit stats from testpop for test validation purposes #271
- Make state transition timers configurable in testpop #280
- Remove unused tests #286
- Feature: Automatic partition detection and recovery #272
- Feature: Bidirectional full syncs for more robust gossip #251
- Feature: Automatic cleanup of faulty nodes from membership #257
- Deprecated: "admin/reload"-endpoint #255
- Refactor: DiscoverProvider abstraction to discover bootstrap hosts #253
- Various fixes and improvements for test suite #263 #262 #254 #245
-
Automatic reaping of faulty nodes
Previously nodes marked as faulty would stay in the memberlist indefinitely. Since, 10.15.0 these nodes will be automatically removed after 24 hours by default.
You can customize the reaping delay using the
stateTimeouts.faulty
(default 86400000ms = 24h) option.If you are upgrading please try to upgrade the entire cluster before the reaping kicks in (24 hours). When ran together with an older version for a prolonged period of time an increase in cpu and bandwidth utilization is expected.
-
Automatic partition healing
Ringpop now automatically heals partitions by querying the bootstrap provider (e.g. reading file from disk) and reaching out to the nodes that could live in another partition. This causes reads/queries to the bootstrap provider after the initial bootstrap.
The algorithm attempts to heal 3 times per 30s on average, over the entire cluster. You can customize this using the
discoverProviderHealerBaseProbability
(default 3),discoverProviderHealerPeriod
(default 30000ms = 30s) options.
Both Reaping faulty nodes and Partition healing can be triggered manually in as well with ringpop-admin v0.13.0 via ringpop-admin heal ip:port
and ringpop-admin reap ip:port
. This version is backwards compatible and therefore should be a drop in replacement.