diff --git a/src/cmd/services/m3query/config/config.go b/src/cmd/services/m3query/config/config.go index e33e71b6e0..fd93719686 100644 --- a/src/cmd/services/m3query/config/config.go +++ b/src/cmd/services/m3query/config/config.go @@ -361,12 +361,12 @@ type PerQueryLimitsConfiguration struct { // MaxFetchedSeries limits the number of time series returned for any given // individual storage node per query, before returning result to query // service. - MaxFetchedSeries int `yaml:"maxFetchedSeries"` + MaxFetchedSeries *int `yaml:"maxFetchedSeries"` // MaxFetchedDocs limits the number of index documents matched for any given // individual storage node per query, before returning result to query // service. - MaxFetchedDocs int `yaml:"maxFetchedDocs"` + MaxFetchedDocs *int `yaml:"maxFetchedDocs"` // RequireExhaustive results in an error if the query exceeds any limit. RequireExhaustive *bool `yaml:"requireExhaustive"` @@ -376,13 +376,13 @@ type PerQueryLimitsConfiguration struct { // handleroptions.FetchOptionsBuilderLimitsOptions. func (l *PerQueryLimitsConfiguration) AsFetchOptionsBuilderLimitsOptions() handleroptions.FetchOptionsBuilderLimitsOptions { seriesLimit := defaultStorageQuerySeriesLimit - if v := l.MaxFetchedSeries; v > 0 { - seriesLimit = v + if v := l.MaxFetchedSeries; v != nil { + seriesLimit = *v } docsLimit := defaultStorageQueryDocsLimit - if v := l.MaxFetchedDocs; v > 0 { - docsLimit = v + if v := l.MaxFetchedDocs; v != nil { + docsLimit = *v } requireExhaustive := defaultRequireExhaustive diff --git a/src/cmd/services/m3query/config/config_test.go b/src/cmd/services/m3query/config/config_test.go index 88bb05855d..be685863cd 100644 --- a/src/cmd/services/m3query/config/config_test.go +++ b/src/cmd/services/m3query/config/config_test.go @@ -94,14 +94,18 @@ func TestConfigLoading(t *testing.T) { requireExhaustive = true assert.Equal(t, &LimitsConfiguration{ PerQuery: PerQueryLimitsConfiguration{ - MaxFetchedSeries: 12000, - MaxFetchedDocs: 11000, + MaxFetchedSeries: intPtrValue(12000), + MaxFetchedDocs: intPtrValue(11000), RequireExhaustive: &requireExhaustive, }, }, &cfg.Limits) // TODO: assert on more fields here. } +func intPtrValue(i int) *int { + return &i +} + func TestConfigValidation(t *testing.T) { baseCfg := func(t *testing.T) *Configuration { var cfg Configuration @@ -131,7 +135,7 @@ func TestConfigValidation(t *testing.T) { cfg := baseCfg(t) cfg.Limits = LimitsConfiguration{ PerQuery: PerQueryLimitsConfiguration{ - MaxFetchedSeries: tc.limit, + MaxFetchedSeries: intPtrValue(tc.limit), }} assert.NoError(t, validator.Validate(cfg))