Skip to content

storage: add cluster setting to expire manual split sticky bits #37696

@ajwerner

Description

@ajwerner

Feature request

Now that #37487 is approaching completion, we have a mechanism to use manual splits in conjunction with load based splitting. There use cases where manual splits make sense temporarily, say, when data is being loaded into tables but a user might want those manual splits to be merged as appropriate after the data loading completes.

Describe the solution you'd like

Given that the sticky bit is a timestamp, it would be convenient to allow users to specify an expiration time for sticky bits. This feels like it could reasonably be stored as a cluster setting. When the merge queue evaluates a range it would skip a range that has a sticky bit newer (plus some clock uncertainty if you were so inclined) than the expiration time. Similarly, in the crdb_internal.ranges table expired sticky bits should be omitted.

Describe alternatives you've considered

We additionally considered explicit TTLs in the sticky bit itself, this felt like overkill and would complicate the API. Really anything that is more granular than a cluster setting should probably be attached to the range.

Another proposal against this functionality was just to document how to remove sticky bits from a table. We should also do this.

Metadata

Metadata

Assignees

Labels

A-kv-distributionRelating to rebalancing and leasing.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions