Add a control option to disable sliding window limiter (#4676)
<!-- PR description--> Add a killswitch for sliding window limiter. This is only relevant for exchange backups Setting this flag switches exchange backups to use the default token bucket rate limiter. --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [x] 🤖 Supportability/Tests - [ ] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup #### Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> #### Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [x] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
bc9d258ca0
commit
71b0831c7b
@ -84,6 +84,7 @@ func addExchangeCommands(cmd *cobra.Command) *cobra.Command {
|
|||||||
flags.AddEnableImmutableIDFlag(c)
|
flags.AddEnableImmutableIDFlag(c)
|
||||||
flags.AddDeltaPageSizeFlag(c)
|
flags.AddDeltaPageSizeFlag(c)
|
||||||
flags.AddGenericBackupFlags(c)
|
flags.AddGenericBackupFlags(c)
|
||||||
|
flags.AddDisableSlidingWindowLimiterFlag(c)
|
||||||
|
|
||||||
case listCommand:
|
case listCommand:
|
||||||
c, fs = utils.AddCommand(cmd, exchangeListCmd())
|
c, fs = utils.AddCommand(cmd, exchangeListCmd())
|
||||||
|
|||||||
@ -108,6 +108,7 @@ func (suite *ExchangeUnitSuite) TestBackupCreateFlags() {
|
|||||||
// bool flags
|
// bool flags
|
||||||
"--" + flags.DisableDeltaFN,
|
"--" + flags.DisableDeltaFN,
|
||||||
"--" + flags.EnableImmutableIDFN,
|
"--" + flags.EnableImmutableIDFN,
|
||||||
|
"--" + flags.DisableSlidingWindowLimiterFN,
|
||||||
},
|
},
|
||||||
flagsTD.PreparedGenericBackupFlags(),
|
flagsTD.PreparedGenericBackupFlags(),
|
||||||
flagsTD.PreparedProviderFlags(),
|
flagsTD.PreparedProviderFlags(),
|
||||||
@ -124,6 +125,7 @@ func (suite *ExchangeUnitSuite) TestBackupCreateFlags() {
|
|||||||
assert.True(t, co.ToggleFeatures.ForceItemDataDownload)
|
assert.True(t, co.ToggleFeatures.ForceItemDataDownload)
|
||||||
assert.True(t, co.ToggleFeatures.DisableDelta)
|
assert.True(t, co.ToggleFeatures.DisableDelta)
|
||||||
assert.True(t, co.ToggleFeatures.ExchangeImmutableIDs)
|
assert.True(t, co.ToggleFeatures.ExchangeImmutableIDs)
|
||||||
|
assert.True(t, co.ToggleFeatures.DisableSlidingWindowLimiter)
|
||||||
flagsTD.AssertGenericBackupFlags(t, cmd)
|
flagsTD.AssertGenericBackupFlags(t, cmd)
|
||||||
flagsTD.AssertProviderFlags(t, cmd)
|
flagsTD.AssertProviderFlags(t, cmd)
|
||||||
flagsTD.AssertStorageFlags(t, cmd)
|
flagsTD.AssertStorageFlags(t, cmd)
|
||||||
|
|||||||
@ -9,6 +9,7 @@ const (
|
|||||||
DeltaPageSizeFN = "delta-page-size"
|
DeltaPageSizeFN = "delta-page-size"
|
||||||
DisableDeltaFN = "disable-delta"
|
DisableDeltaFN = "disable-delta"
|
||||||
DisableIncrementalsFN = "disable-incrementals"
|
DisableIncrementalsFN = "disable-incrementals"
|
||||||
|
DisableSlidingWindowLimiterFN = "disable-sliding-window-limiter"
|
||||||
ForceItemDataDownloadFN = "force-item-data-download"
|
ForceItemDataDownloadFN = "force-item-data-download"
|
||||||
EnableImmutableIDFN = "enable-immutable-id"
|
EnableImmutableIDFN = "enable-immutable-id"
|
||||||
FailFastFN = "fail-fast"
|
FailFastFN = "fail-fast"
|
||||||
@ -26,6 +27,7 @@ var (
|
|||||||
DeltaPageSizeFV int
|
DeltaPageSizeFV int
|
||||||
DisableDeltaFV bool
|
DisableDeltaFV bool
|
||||||
DisableIncrementalsFV bool
|
DisableIncrementalsFV bool
|
||||||
|
DisableSlidingWindowLimiterFV bool
|
||||||
ForceItemDataDownloadFV bool
|
ForceItemDataDownloadFV bool
|
||||||
EnableImmutableIDFV bool
|
EnableImmutableIDFV bool
|
||||||
FailFastFV bool
|
FailFastFV bool
|
||||||
@ -159,3 +161,18 @@ func AddRunModeFlag(cmd *cobra.Command, persistent bool) {
|
|||||||
fs.StringVar(&RunModeFV, RunModeFN, "run", "What mode to run: dry, test, run. Defaults to run.")
|
fs.StringVar(&RunModeFV, RunModeFN, "run", "What mode to run: dry, test, run. Defaults to run.")
|
||||||
cobra.CheckErr(fs.MarkHidden(RunModeFN))
|
cobra.CheckErr(fs.MarkHidden(RunModeFN))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddDisableSlidingWindowLimiterFN disables the experimental sliding window rate
|
||||||
|
// limiter for graph API requests. This is only relevant for exchange backups.
|
||||||
|
// Exchange restores continue to use the default token bucket rate limiter.
|
||||||
|
// Setting this flag switches exchange backups to use the default token bucket
|
||||||
|
// rate limiter.
|
||||||
|
func AddDisableSlidingWindowLimiterFlag(cmd *cobra.Command) {
|
||||||
|
fs := cmd.Flags()
|
||||||
|
fs.BoolVar(
|
||||||
|
&DisableSlidingWindowLimiterFV,
|
||||||
|
DisableSlidingWindowLimiterFN,
|
||||||
|
false,
|
||||||
|
"Disable sliding window rate limiter.")
|
||||||
|
cobra.CheckErr(fs.MarkHidden(DisableSlidingWindowLimiterFN))
|
||||||
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ func Control() control.Options {
|
|||||||
opt.ToggleFeatures.DisableIncrementals = flags.DisableIncrementalsFV
|
opt.ToggleFeatures.DisableIncrementals = flags.DisableIncrementalsFV
|
||||||
opt.ToggleFeatures.ForceItemDataDownload = flags.ForceItemDataDownloadFV
|
opt.ToggleFeatures.ForceItemDataDownload = flags.ForceItemDataDownloadFV
|
||||||
opt.ToggleFeatures.DisableDelta = flags.DisableDeltaFV
|
opt.ToggleFeatures.DisableDelta = flags.DisableDeltaFV
|
||||||
|
opt.ToggleFeatures.DisableSlidingWindowLimiter = flags.DisableSlidingWindowLimiterFV
|
||||||
opt.ToggleFeatures.ExchangeImmutableIDs = flags.EnableImmutableIDFV
|
opt.ToggleFeatures.ExchangeImmutableIDs = flags.EnableImmutableIDFV
|
||||||
opt.Parallelism.ItemFetch = flags.FetchParallelismFV
|
opt.Parallelism.ItemFetch = flags.FetchParallelismFV
|
||||||
|
|
||||||
|
|||||||
@ -36,6 +36,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
|||||||
assert.True(t, flags.SkipReduceFV, flags.SkipReduceFN)
|
assert.True(t, flags.SkipReduceFV, flags.SkipReduceFN)
|
||||||
assert.Equal(t, 2, flags.FetchParallelismFV, flags.FetchParallelismFN)
|
assert.Equal(t, 2, flags.FetchParallelismFV, flags.FetchParallelismFN)
|
||||||
assert.Equal(t, 499, flags.DeltaPageSizeFV, flags.DeltaPageSizeFN)
|
assert.Equal(t, 499, flags.DeltaPageSizeFV, flags.DeltaPageSizeFN)
|
||||||
|
assert.True(t, flags.DisableSlidingWindowLimiterFV, flags.DisableSlidingWindowLimiterFN)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +51,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
|||||||
flags.AddSkipReduceFlag(cmd)
|
flags.AddSkipReduceFlag(cmd)
|
||||||
flags.AddFetchParallelismFlag(cmd)
|
flags.AddFetchParallelismFlag(cmd)
|
||||||
flags.AddDeltaPageSizeFlag(cmd)
|
flags.AddDeltaPageSizeFlag(cmd)
|
||||||
|
flags.AddDisableSlidingWindowLimiterFlag(cmd)
|
||||||
|
|
||||||
// Test arg parsing for few args
|
// Test arg parsing for few args
|
||||||
cmd.SetArgs([]string{
|
cmd.SetArgs([]string{
|
||||||
@ -63,6 +65,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
|||||||
"--" + flags.SkipReduceFN,
|
"--" + flags.SkipReduceFN,
|
||||||
"--" + flags.FetchParallelismFN, "2",
|
"--" + flags.FetchParallelismFN, "2",
|
||||||
"--" + flags.DeltaPageSizeFN, "499",
|
"--" + flags.DeltaPageSizeFN, "499",
|
||||||
|
"--" + flags.DisableSlidingWindowLimiterFN,
|
||||||
})
|
})
|
||||||
|
|
||||||
err := cmd.Execute()
|
err := cmd.Execute()
|
||||||
|
|||||||
@ -87,4 +87,10 @@ type Toggles struct {
|
|||||||
// the protected resource. PreviewBackups are used to demonstrate value by
|
// the protected resource. PreviewBackups are used to demonstrate value by
|
||||||
// being quick to create.
|
// being quick to create.
|
||||||
PreviewBackup bool `json:"previewBackup"`
|
PreviewBackup bool `json:"previewBackup"`
|
||||||
|
|
||||||
|
// DisableSlidingWindowLimiter disables the experimental sliding window rate
|
||||||
|
// limiter for graph API requests. This is only relevant for exchange backups.
|
||||||
|
// Setting this flag switches exchange backups to fallback to the default token
|
||||||
|
// bucket rate limiter.
|
||||||
|
DisableSlidingWindowLimiter bool `json:"disableSlidingWindowLimiter"`
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user