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.AddDisableConcurrencyLimiterFlag(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())
|
||||||
|
|||||||
@ -109,6 +109,7 @@ func (suite *ExchangeUnitSuite) TestBackupCreateFlags() {
|
|||||||
"--" + flags.DisableDeltaFN,
|
"--" + flags.DisableDeltaFN,
|
||||||
"--" + flags.EnableImmutableIDFN,
|
"--" + flags.EnableImmutableIDFN,
|
||||||
"--" + flags.DisableConcurrencyLimiterFN,
|
"--" + flags.DisableConcurrencyLimiterFN,
|
||||||
|
"--" + flags.DisableSlidingWindowLimiterFN,
|
||||||
},
|
},
|
||||||
flagsTD.PreparedGenericBackupFlags(),
|
flagsTD.PreparedGenericBackupFlags(),
|
||||||
flagsTD.PreparedProviderFlags(),
|
flagsTD.PreparedProviderFlags(),
|
||||||
@ -126,6 +127,7 @@ func (suite *ExchangeUnitSuite) TestBackupCreateFlags() {
|
|||||||
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.DisableConcurrencyLimiter)
|
assert.True(t, co.ToggleFeatures.DisableConcurrencyLimiter)
|
||||||
|
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)
|
||||||
|
|||||||
@ -5,22 +5,23 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
AlertsFN = "alerts"
|
AlertsFN = "alerts"
|
||||||
DeltaPageSizeFN = "delta-page-size"
|
DeltaPageSizeFN = "delta-page-size"
|
||||||
DisableConcurrencyLimiterFN = "disable-concurrency-limiter"
|
DisableConcurrencyLimiterFN = "disable-concurrency-limiter"
|
||||||
DisableDeltaFN = "disable-delta"
|
DisableDeltaFN = "disable-delta"
|
||||||
DisableIncrementalsFN = "disable-incrementals"
|
DisableIncrementalsFN = "disable-incrementals"
|
||||||
ForceItemDataDownloadFN = "force-item-data-download"
|
ForceItemDataDownloadFN = "force-item-data-download"
|
||||||
EnableImmutableIDFN = "enable-immutable-id"
|
EnableImmutableIDFN = "enable-immutable-id"
|
||||||
FailFastFN = "fail-fast"
|
FailFastFN = "fail-fast"
|
||||||
FailedItemsFN = "failed-items"
|
FailedItemsFN = "failed-items"
|
||||||
FetchParallelismFN = "fetch-parallelism"
|
FetchParallelismFN = "fetch-parallelism"
|
||||||
NoStatsFN = "no-stats"
|
NoStatsFN = "no-stats"
|
||||||
RecoveredErrorsFN = "recovered-errors"
|
RecoveredErrorsFN = "recovered-errors"
|
||||||
NoPermissionsFN = "no-permissions"
|
NoPermissionsFN = "no-permissions"
|
||||||
RunModeFN = "run-mode"
|
RunModeFN = "run-mode"
|
||||||
SkippedItemsFN = "skipped-items"
|
SkippedItemsFN = "skipped-items"
|
||||||
SkipReduceFN = "skip-reduce"
|
SkipReduceFN = "skip-reduce"
|
||||||
|
DisableSlidingWindowLimiterFN = "disable-sliding-limiter"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -39,9 +40,10 @@ var (
|
|||||||
NoStatsFV bool
|
NoStatsFV bool
|
||||||
// RunMode describes the type of run, such as:
|
// RunMode describes the type of run, such as:
|
||||||
// flagtest, dry, run. Should default to 'run'.
|
// flagtest, dry, run. Should default to 'run'.
|
||||||
RunModeFV string
|
RunModeFV string
|
||||||
NoPermissionsFV bool
|
NoPermissionsFV bool
|
||||||
SkipReduceFV bool
|
SkipReduceFV bool
|
||||||
|
DisableSlidingWindowLimiterFV bool
|
||||||
)
|
)
|
||||||
|
|
||||||
// well-known flag values
|
// 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.")
|
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. Default: false")
|
||||||
|
cobra.CheckErr(fs.MarkHidden(DisableSlidingWindowLimiterFN))
|
||||||
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@ func Control() control.Options {
|
|||||||
opt.ToggleFeatures.DisableDelta = flags.DisableDeltaFV
|
opt.ToggleFeatures.DisableDelta = flags.DisableDeltaFV
|
||||||
opt.ToggleFeatures.ExchangeImmutableIDs = flags.EnableImmutableIDFV
|
opt.ToggleFeatures.ExchangeImmutableIDs = flags.EnableImmutableIDFV
|
||||||
opt.ToggleFeatures.DisableConcurrencyLimiter = flags.DisableConcurrencyLimiterFV
|
opt.ToggleFeatures.DisableConcurrencyLimiter = flags.DisableConcurrencyLimiterFV
|
||||||
|
opt.ToggleFeatures.DisableSlidingWindowLimiter = flags.DisableSlidingWindowLimiterFV
|
||||||
opt.Parallelism.ItemFetch = flags.FetchParallelismFV
|
opt.Parallelism.ItemFetch = flags.FetchParallelismFV
|
||||||
|
|
||||||
return opt
|
return opt
|
||||||
|
|||||||
@ -37,6 +37,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
|||||||
assert.Equal(t, 2, flags.FetchParallelismFV, flags.FetchParallelismFN)
|
assert.Equal(t, 2, flags.FetchParallelismFV, flags.FetchParallelismFN)
|
||||||
assert.True(t, flags.DisableConcurrencyLimiterFV, flags.DisableConcurrencyLimiterFN)
|
assert.True(t, flags.DisableConcurrencyLimiterFV, flags.DisableConcurrencyLimiterFN)
|
||||||
assert.Equal(t, 499, flags.DeltaPageSizeFV, flags.DeltaPageSizeFN)
|
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.AddFetchParallelismFlag(cmd)
|
||||||
flags.AddDisableConcurrencyLimiterFlag(cmd)
|
flags.AddDisableConcurrencyLimiterFlag(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{
|
||||||
@ -66,6 +68,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() {
|
|||||||
"--" + flags.FetchParallelismFN, "2",
|
"--" + flags.FetchParallelismFN, "2",
|
||||||
"--" + flags.DisableConcurrencyLimiterFN,
|
"--" + flags.DisableConcurrencyLimiterFN,
|
||||||
"--" + flags.DeltaPageSizeFN, "499",
|
"--" + flags.DeltaPageSizeFN, "499",
|
||||||
|
"--" + flags.DisableSlidingWindowLimiterFN,
|
||||||
})
|
})
|
||||||
|
|
||||||
err := cmd.Execute()
|
err := cmd.Execute()
|
||||||
|
|||||||
@ -91,4 +91,11 @@ 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.
|
||||||
|
// 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