Add a control option to disable sliding window limiter
This commit is contained in:
parent
ac0fa41c9c
commit
42ae33c436
@ -85,6 +85,7 @@ func addExchangeCommands(cmd *cobra.Command) *cobra.Command {
|
||||
flags.AddDisableConcurrencyLimiterFlag(c)
|
||||
flags.AddDeltaPageSizeFlag(c)
|
||||
flags.AddGenericBackupFlags(c)
|
||||
flags.AddDisableSlidingWindowLimiterFlag(c)
|
||||
|
||||
case listCommand:
|
||||
c, fs = utils.AddCommand(cmd, exchangeListCmd())
|
||||
|
||||
@ -109,6 +109,7 @@ func (suite *ExchangeUnitSuite) TestBackupCreateFlags() {
|
||||
"--" + flags.DisableDeltaFN,
|
||||
"--" + flags.EnableImmutableIDFN,
|
||||
"--" + flags.DisableConcurrencyLimiterFN,
|
||||
"--" + flags.DisableSlidingWindowLimiterFN,
|
||||
},
|
||||
flagsTD.PreparedGenericBackupFlags(),
|
||||
flagsTD.PreparedProviderFlags(),
|
||||
@ -126,6 +127,7 @@ func (suite *ExchangeUnitSuite) TestBackupCreateFlags() {
|
||||
assert.True(t, co.ToggleFeatures.DisableDelta)
|
||||
assert.True(t, co.ToggleFeatures.ExchangeImmutableIDs)
|
||||
assert.True(t, co.ToggleFeatures.DisableConcurrencyLimiter)
|
||||
assert.True(t, co.ToggleFeatures.DisableSlidingWindowLimiter)
|
||||
flagsTD.AssertGenericBackupFlags(t, cmd)
|
||||
flagsTD.AssertProviderFlags(t, cmd)
|
||||
flagsTD.AssertStorageFlags(t, cmd)
|
||||
|
||||
@ -5,22 +5,23 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
AlertsFN = "alerts"
|
||||
DeltaPageSizeFN = "delta-page-size"
|
||||
DisableConcurrencyLimiterFN = "disable-concurrency-limiter"
|
||||
DisableDeltaFN = "disable-delta"
|
||||
DisableIncrementalsFN = "disable-incrementals"
|
||||
ForceItemDataDownloadFN = "force-item-data-download"
|
||||
EnableImmutableIDFN = "enable-immutable-id"
|
||||
FailFastFN = "fail-fast"
|
||||
FailedItemsFN = "failed-items"
|
||||
FetchParallelismFN = "fetch-parallelism"
|
||||
NoStatsFN = "no-stats"
|
||||
RecoveredErrorsFN = "recovered-errors"
|
||||
NoPermissionsFN = "no-permissions"
|
||||
RunModeFN = "run-mode"
|
||||
SkippedItemsFN = "skipped-items"
|
||||
SkipReduceFN = "skip-reduce"
|
||||
AlertsFN = "alerts"
|
||||
DeltaPageSizeFN = "delta-page-size"
|
||||
DisableConcurrencyLimiterFN = "disable-concurrency-limiter"
|
||||
DisableDeltaFN = "disable-delta"
|
||||
DisableIncrementalsFN = "disable-incrementals"
|
||||
ForceItemDataDownloadFN = "force-item-data-download"
|
||||
EnableImmutableIDFN = "enable-immutable-id"
|
||||
FailFastFN = "fail-fast"
|
||||
FailedItemsFN = "failed-items"
|
||||
FetchParallelismFN = "fetch-parallelism"
|
||||
NoStatsFN = "no-stats"
|
||||
RecoveredErrorsFN = "recovered-errors"
|
||||
NoPermissionsFN = "no-permissions"
|
||||
RunModeFN = "run-mode"
|
||||
SkippedItemsFN = "skipped-items"
|
||||
SkipReduceFN = "skip-reduce"
|
||||
DisableSlidingWindowLimiterFN = "disable-sliding-limiter"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -39,9 +40,10 @@ var (
|
||||
NoStatsFV bool
|
||||
// RunMode describes the type of run, such as:
|
||||
// flagtest, dry, run. Should default to 'run'.
|
||||
RunModeFV string
|
||||
NoPermissionsFV bool
|
||||
SkipReduceFV bool
|
||||
RunModeFV string
|
||||
NoPermissionsFV bool
|
||||
SkipReduceFV bool
|
||||
DisableSlidingWindowLimiterFV bool
|
||||
)
|
||||
|
||||
// well-known flag values
|
||||
@ -174,3 +176,18 @@ func AddRunModeFlag(cmd *cobra.Command, persistent bool) {
|
||||
fs.StringVar(&RunModeFV, RunModeFN, "run", "What mode to run: dry, test, run. Defaults to run.")
|
||||
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. Default: false")
|
||||
cobra.CheckErr(fs.MarkHidden(DisableSlidingWindowLimiterFN))
|
||||
}
|
||||
|
||||
@ -27,6 +27,7 @@ func Control() control.Options {
|
||||
opt.ToggleFeatures.DisableDelta = flags.DisableDeltaFV
|
||||
opt.ToggleFeatures.ExchangeImmutableIDs = flags.EnableImmutableIDFV
|
||||
opt.ToggleFeatures.DisableConcurrencyLimiter = flags.DisableConcurrencyLimiterFV
|
||||
opt.ToggleFeatures.DisableSlidingWindowLimiter = flags.DisableSlidingWindowLimiterFV
|
||||
opt.Parallelism.ItemFetch = flags.FetchParallelismFV
|
||||
|
||||
return opt
|
||||
|
||||
@ -37,6 +37,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
||||
assert.Equal(t, 2, flags.FetchParallelismFV, flags.FetchParallelismFN)
|
||||
assert.True(t, flags.DisableConcurrencyLimiterFV, flags.DisableConcurrencyLimiterFN)
|
||||
assert.Equal(t, 499, flags.DeltaPageSizeFV, flags.DeltaPageSizeFN)
|
||||
assert.True(t, flags.DisableSlidingWindowLimiterFV, flags.DisableSlidingWindowLimiterFN)
|
||||
},
|
||||
}
|
||||
|
||||
@ -52,6 +53,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
||||
flags.AddFetchParallelismFlag(cmd)
|
||||
flags.AddDisableConcurrencyLimiterFlag(cmd)
|
||||
flags.AddDeltaPageSizeFlag(cmd)
|
||||
flags.AddDisableSlidingWindowLimiterFlag(cmd)
|
||||
|
||||
// Test arg parsing for few args
|
||||
cmd.SetArgs([]string{
|
||||
@ -66,6 +68,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
||||
"--" + flags.FetchParallelismFN, "2",
|
||||
"--" + flags.DisableConcurrencyLimiterFN,
|
||||
"--" + flags.DeltaPageSizeFN, "499",
|
||||
"--" + flags.DisableSlidingWindowLimiterFN,
|
||||
})
|
||||
|
||||
err := cmd.Execute()
|
||||
|
||||
@ -91,4 +91,11 @@ type Toggles struct {
|
||||
// the protected resource. PreviewBackups are used to demonstrate value by
|
||||
// being quick to create.
|
||||
PreviewBackup bool `json:"previewBackup"`
|
||||
|
||||
// DisableSlidingWindowLimiter 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.
|
||||
DisableSlidingWindowLimiter bool `json:"disableSlidingWindowLimiter"`
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user