Skip to content

Commit

Permalink
roachtest: add kv/splits/nodes=3/quiesce=false/lease=leader
Browse files Browse the repository at this point in the history
This commit adds a `kv/splits/nodes=3/quiesce=false/lease=leader` test. It
should be able to support 80k ranges even without quiescence, because leader
leases use store liveness for failure detection and lease extension.

To push higher than this, we will likely need to address #133885.

Epic: None
Release note: None
  • Loading branch information
nvanbenschoten committed Nov 12, 2024
1 parent 62c52f4 commit c5214cb
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions pkg/cmd/roachtest/tests/kv.go
Original file line number Diff line number Diff line change
Expand Up @@ -719,15 +719,22 @@ func registerKVSplits(r registry.Registry) {
// far past the number of replicas per node we support, at least if the
// ranges start to unquiesce (which can set off a cascade due to resource
// exhaustion).
{true, 300000, registry.EpochLeases, 2 * time.Hour},
{true, 300_000, registry.EpochLeases, 2 * time.Hour},
// This version of the test prevents range quiescence to trigger the
// badness described above more reliably for when we wish to improve
// the performance. For now, just verify that 30k unquiesced ranges
// is tenable.
{false, 30000, registry.EpochLeases, 2 * time.Hour},
{false, 30_000, registry.EpochLeases, 2 * time.Hour},
// Expiration-based leases prevent quiescence, and are also more expensive
// to keep alive. Again, just verify that 30k ranges is ok.
{false, 30000, registry.ExpirationLeases, 2 * time.Hour},
{false, 30_000, registry.ExpirationLeases, 2 * time.Hour},
// Leader leases don't need quiescence, as they use store liveness for
// failure detection and lease extension, so they don't issue raft
// heartbeats or periodic lease extensions. However, the cost of raft
// ticking is not entirely negligible (see #133885), so each range isn't
// completely free. Currently, they should be able to support 80k ranges in
// this cluster configuration.
{false, 80_000, registry.LeaderLeases, 2 * time.Hour},
} {
item := item // for use in closure below
r.Add(registry.TestSpec{
Expand Down

0 comments on commit c5214cb

Please sign in to comment.