apple / apple/foundationdb

Multiple failed processes rejoining the cluster can cause availability loss

Open
#1,718 0 comments 0 reactions 1 assignee Claimed by @sfc-gh-etschannen View on GitHub
Dominant language
C++
Stars
16.7k
Forks
1.6k
Avg merge
1d 20h
Merged PRs (30d)
126

Description

When a storage process gets disconnected from the cluster, the cluster builds up a backlog of work for it. When the process rejoins after a long separation (but before it has been fully re-replicated), it quickly fills up its queue with that backlog. When this happens, ratekeeper is happy to ignore the process if it there aren't any other misbehaving processes in other fault domains.

If this happens to processes in separate fault domains simultaneously, however, ratekeeper will clamp down on the cluster until one of them manages to catch back up.

Part of this behavior comes from the fact that the cluster treats failed processes differently from lagging processes. The distinction fails a bit in this case, as these "lagging" processes aren't really lagging in the sense that was intended, and it probably makes more sense to still think of them as failed as they were before rejoining. @etschannen suggests there may be a way for us to redefine lagging processes as a sub-type of failure, in which case the logic for ratekeeper could be updated to ignore failures according to the replication policy.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.