Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tenantcapabilitieswatcher: make the watcher react faster #114719

Merged
merged 3 commits into from
Nov 21, 2023

Conversation

stevendanna
Copy link
Collaborator

Needed for #111637.
Epic: CRDB-26691

Superceeds #112094

Prior to this patch, the tenant info watcher would only react to
changes to system.tenants upon rangefeed cache flushes, which could
be (in default config) up to 3 seconds after the change is committed.

This commit accelerates the behavior by processing updates as soon as
the rangefeed observes the change.

This new behavior is similar to the way that cluster settings changes
are processed immediately in the settings
watcher (pkg/settingswatcher).

In order to handle deletions that occur during errors that aren't
automatically retried inside the rangefeed library (and are instead
retried by the watcher resulting in a new full scan), we emit any
scan-generated rangefeed events at their scan timestamp, allowing us a
means of clearing any stale data from the cache.

Release note: None

knz and others added 3 commits November 20, 2023 10:39
Prior to this patch, the tenant info watcher would only react to
changes to `system.tenants` upon rangefeed cache flushes, which could
be (in default config) up to 3 seconds after the change is committed.

This commit accelerates the behavior by processing updates as soon as
the rangefeed observes the change.

This new behavior is similar to the way that cluster settings changes
are processed immediately in the settings
watcher (pkg/settingswatcher).

In order to handle deletions that occur during errors that aren't
automatically retried inside the rangefeed library (and are instead
retried by the watcher resulting in a new full scan), we emit any
scan-generated rangefeed events at their scan timestamp, allowing us a
means of clearing any stale data from the cache.

Release note: None

Co-authored-by: Raphael 'kena' Poss <[email protected]>
@stevendanna stevendanna requested review from a team as code owners November 20, 2023 12:32
@stevendanna stevendanna requested a review from a team November 20, 2023 12:32
@stevendanna stevendanna requested review from a team as code owners November 20, 2023 12:32
@stevendanna stevendanna requested review from msbutler and yuzefovich and removed request for a team November 20, 2023 12:32
@cockroach-teamcity
Copy link
Member

This change is Reviewable

@stevendanna stevendanna removed request for a team November 20, 2023 12:32
@stevendanna
Copy link
Collaborator Author

The main change since #112094 was a rebase and then a set of changes to ensure that all of the previous test cases still pass without substantive changes by using the scan timestamp to clear our cache.

Copy link
Member

@yuzefovich yuzefovich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Do we want this to be backported too?

Reviewed 1 of 1 files at r1, 1 of 1 files at r2, 17 of 17 files at r3, all commit messages.
Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (waiting on @msbutler)

@stevendanna
Copy link
Collaborator Author

@yuzefovich

Do we want this to be backported too?

Eventually I think we may so I've tagged it. But we almost always hit like 1 to 2 bugs anytime we touch one of these watchers so I also want to let it bake for a few days at least.

@stevendanna stevendanna added the backport-23.2.x Flags PRs that need to be backported to 23.2. label Nov 21, 2023
@stevendanna
Copy link
Collaborator Author

bors r=yuzefovich

@craig
Copy link
Contributor

craig bot commented Nov 21, 2023

Build succeeded:

@craig craig bot merged commit 7637b09 into cockroachdb:master Nov 21, 2023
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport-23.2.x Flags PRs that need to be backported to 23.2.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants