-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
backupccl: add feature flag support for BACKUP, RESTORE #56533
Conversation
edb76a3
to
dcd0e52
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: complete! 0 of 0 LGTMs obtained (waiting on @angelapwen and @pbardea)
pkg/sql/opt/memo/memo.go, line 134 at r1 (raw file):
// The following are selected fields from SessionData which can affect // planning. We need to cross-check these before reusing a cached memo. // TODO(angelaw): Is it necesssary to include feature flags here?
We shouldn't need it here, these are only fields that can cause the same statement to be planned differently by the optimizer
pkg/sql/opt/memo/memo.go, line 134 at r1 (raw file): Previously, RaduBerinde wrote…
Thanks @RaduBerinde , I'm making some changes now from comments @otan gave me and will update the PR as soon as I test! |
e9de358
to
6aa747e
Compare
Note: will not merge until I have fixed the release note category |
b8626e3
to
d16438f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: complete! 0 of 0 LGTMs obtained (waiting on @angelapwen, @otan, and @pbardea)
pkg/ccl/backupccl/backup_planning.go, line 514 at r2 (raw file):
if !featureBackupEnabled.Get(&p.ExecCfg().Settings.SV) { return nil, nil, nil, false, pgerror.Newf(pgcode.OperatorIntervention, "BACKUP feature was disabled by the database administrator.")
nit: I think that we typically format error messages without a "." at the end.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will update the release note with the "enterprise change" category per @pbardea and also look to adding support for the RESTORE
command here as well, considering the change was simpler than I thought.
Reviewable status: complete! 0 of 0 LGTMs obtained (waiting on @otan and @pbardea)
pkg/ccl/backupccl/backup_planning.go, line 514 at r2 (raw file):
Previously, pbardea (Paul Bardea) wrote…
nit: I think that we typically format error messages without a "." at the end.
Thank you! Will fix this.
63fc0c6
to
6523b66
Compare
Added support and testing for the I have also added hierarchical cluster settings for these features, eg. The category name can of course be edited and all feedback is welcomed! |
6523b66
to
04699e2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LG -- i don't think we should worry about hierarchy yet (because of naming, and if we end up doing hierarchy we can simplify the logic a bit as well). just feature.backup.enabled
would work for me!
pkg/ccl/backupccl/backup_planning.go
Outdated
var featureBackupEnabled = settings.RegisterPublicBoolSetting( | ||
"feature.bulkio.backup.enabled", | ||
"set to true to enable backups, false to disable; default is true", | ||
true /* enabled by default */) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: this should just be the varname, i.e. true /* defaultValue */,
even better if we can define a const FeatureFlagEnabledDefault = true
somewhere -- not opposed to creating a pkg/featureflag
for this const (for now)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea! Do you ever see a case where that const is set to false? 🤔 Or is the idea of the constant just for clarity?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clarity -- see also "avoid naked parameters" in https://wiki.crdb.io/wiki/spaces/CRDB/pages/181371303/Go+coding+guidelines
Gotcha — I can keep just the |
04699e2
to
86d57b1
Compare
86d57b1
to
2e2a44f
Compare
Adds a cluster setting to toggle a feature flag for the BACKUP and RESTORE commands off and on. The feature is being introduced to address a Cockroach Cloud SRE use case: needing to disable certain categories of features in case of cluster failure. Release note (enterprise change): Adds cluster settings to enable/ disable the BACKUP and RESTORE commands. If a user attempts to use these features while they are disabled, an error indicating that the database administrator has disabled the feature is surfaced. Example usage for the database administrator: SET CLUSTER SETTING feature.backup.enabled = FALSE; SET CLUSTER SETTING feature.backup.enabled = TRUE; SET CLUSTER SETTING feature.restore.enabled = FALSE; SET CLUSTER SETTING feature.restore.enabled = TRUE;
2e2a44f
to
2a3f6ba
Compare
bors r=otan |
Build failed (retrying...): |
55325: ui: Transactions link between Sessions and Statements r=dhartunian a=elkmaster Resolves: #55131, #56244 Release note (admin ui change): Link to the Transactions page is now shown between the Sessions and Statements links in the left hand navigation. This more clearly reflects the hierarchy between the 3 concepts. 56346: testcluster: minor logging improvements r=andreimatei a=andreimatei Log when TestCluster quiescing starts, and add a node log tag to each node's quiescing ctx so messages from different nodes can be disambiguated. Release note: None 56437: cli, ui: dismiss release notes signup banner per environment variable r=knz,dhartunian a=nkodali Previously, the signup banner could only be dismissed manually. For internal testing purposes, this banner is unnecessary. This change provides a way to dismiss the signup banner upon start of a cluster via the cli by setting the environment variable COCKROACH_UI_RELEASE_NOTES_SIGNUP_DISMISSED=true. Resolves #46998 Release note: none 56533: backupccl: add feature flag support for BACKUP, RESTORE r=otan a=angelapwen Follow-up to the RFC at #55778. This addresses the SRE use case mentioned in #51643 — instead of moving forward with a global denylist as the RFC indicated, we are prototyping feature flags via cluster settings to turn on/off requested features. The first part of the prototype will be done on `BACKUP` and `RESTORE` commands. See [this doc](https://docs.google.com/document/d/1nZSdcK7YprL0P4TAuseY-mvlYnd82IaJ_ptAQDoWB6o/edit?) for further details. Note that the logic test under `ccl/backupccl/testdata/backup-restore/feature-flags` can be tested with the command `make test PKG=./pkg/ccl/backupccl TESTS='TestBackupRestoreDataDriven'` — Commit message below — Adds a cluster setting to toggle a feature flag for the BACKUP and RESTORE commands off and on; as well as a broad category for Bulk IO commands. Currently disabling the cluster setting for Bulk IO will only disable BACKUP and RESTORE jobs, but other types may be included in this category in the future.. The feature is being introduced to address a Cockroach Cloud SRE use case: needing to disable certain categories of features in case of cluster failure. Release note (enterprise change): Adds cluster settings to enable/ disable the BACKUP and RESTORE commands. If a user attempts to use these features while they are disabled, an error indicating that the database administrator has disabled the feature is surfaced. Example usage for the database administrator: SET CLUSTER SETTING feature.bulkio.backup.enabled = FALSE; SET CLUSTER SETTING feature.bulkio.backup.enabled = TRUE; SET CLUSTER SETTING feature.bulkio.restore.enabled = FALSE; SET CLUSTER SETTING feature.bulkio.restore.enabled = TRUE; SET CLUSTER SETTING feature.bulkio.enabled = FALSE; SET CLUSTER SETTING feature.bulkio.enabled = TRUE; 56591: ui: fix Overview screen in OSS builds r=dhartunian a=davepacheco Previously, when using OSS builds (created with `make buildoss`), when you loading the DB Console in your browser, you'd get "Page Not Found". The route for the overview page was missing the leading '/'. This bug appears to have been introduced in 722c932. Release note (admin ui change): This fixes a bug where users of the OSS builds of CockroachDB would see "Page Not Found" when loading the Console. 56600: roachpb: remove SetInner in favor of MustSetInner r=nvanbenschoten a=tbg As of a recent commit, `ErrorDetail.SetInner` became unused, and we can switch to a `MustSetInner` pattern for `ErrorDetail`. Since the codegen involved is shared with {Request,Response}Union, those lose the `SetInner` setter as well; we were always asserting on the returned bool there anyway so this isn't changing anything. Release note: None Co-authored-by: Vlad Los <[email protected]> Co-authored-by: Andrei Matei <[email protected]> Co-authored-by: Namrata Kodali <[email protected]> Co-authored-by: angelapwen <[email protected]> Co-authored-by: Joshua M. Clulow <[email protected]> Co-authored-by: Tobias Grieger <[email protected]>
Build failed (retrying...): |
Build succeeded: |
Follow-up to the RFC at #55778. This addresses the SRE use case mentioned in #51643 — instead of moving forward with a global denylist as the RFC indicated, we are prototyping feature flags via cluster settings to turn on/off requested features. The first part of the prototype will be done on
BACKUP
andRESTORE
commands.See this doc for further details.
Note that the logic test under
ccl/backupccl/testdata/backup-restore/feature-flags
can be tested with the commandmake test PKG=./pkg/ccl/backupccl TESTS='TestBackupRestoreDataDriven'
— Commit message below —
Adds a cluster setting to toggle a feature flag for the BACKUP and
RESTORE commands off and on. The feature is being introduced to
address a Cockroach Cloud SRE use case: needing to disable certain
categories of features in case of cluster failure.
Release note (enterprise change): Adds cluster settings to enable/
disable the BACKUP and RESTORE commands. If a user attempts to use
these features while they are disabled, an error indicating that
the database administrator has disabled the feature is surfaced.
Example usage for the database administrator:
SET CLUSTER SETTING feature.backup.enabled = FALSE;
SET CLUSTER SETTING feature.backup.enabled = TRUE;
SET CLUSTER SETTING feature.restore.enabled = FALSE;
SET CLUSTER SETTING feature.restore.enabled = TRUE;