From 1b6618d577dc97cd6894f8a5b4f9a9b51afe53ea Mon Sep 17 00:00:00 2001 From: Joe Elliott Date: Wed, 3 Feb 2021 19:36:06 -0500 Subject: [PATCH] Use bool to track downsampling flags state Signed-off-by: Joe Elliott --- plugin/storage/factory.go | 12 +++++++----- plugin/storage/factory_test.go | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/plugin/storage/factory.go b/plugin/storage/factory.go index 5519e46d8e7..59d8a19e4aa 100644 --- a/plugin/storage/factory.go +++ b/plugin/storage/factory.go @@ -60,8 +60,9 @@ var AllStorageTypes = []string{cassandraStorageType, elasticsearchStorageType, m // Factory implements storage.Factory interface as a meta-factory for storage components. type Factory struct { FactoryConfig - metricsFactory metrics.Factory - factories map[string]storage.Factory + metricsFactory metrics.Factory + factories map[string]storage.Factory + downsamplingFlagsAdded bool } // NewFactory creates the meta-factory. @@ -180,11 +181,12 @@ func (f *Factory) AddFlags(flagSet *flag.FlagSet) { // the collector or ingester. func (f *Factory) AddPipelineFlags(flagSet *flag.FlagSet) { f.AddFlags(flagSet) - addDownsamplingFlags(flagSet) + f.addDownsamplingFlags(flagSet) } // addDownsamplingFlags add flags for Downsampling params -func addDownsamplingFlags(flagSet *flag.FlagSet) { +func (f *Factory) addDownsamplingFlags(flagSet *flag.FlagSet) { + f.downsamplingFlagsAdded = true flagSet.Float64( downsamplingRatio, defaultDownsamplingRatio, @@ -210,7 +212,7 @@ func (f *Factory) InitFromViper(v *viper.Viper) { func (f *Factory) initDownsamplingFromViper(v *viper.Viper) { // if the downsampling flag isn't set then this component used the standard "AddFlags" method // and has no use for downsampling. the default settings effectively disable downsampling - if !v.IsSet(downsamplingRatio) { + if !f.downsamplingFlagsAdded { f.FactoryConfig.DownsamplingRatio = defaultDownsamplingRatio f.FactoryConfig.DownsamplingHashSalt = defaultDownsamplingHashSalt return diff --git a/plugin/storage/factory_test.go b/plugin/storage/factory_test.go index db5600f4b58..973862eca9e 100644 --- a/plugin/storage/factory_test.go +++ b/plugin/storage/factory_test.go @@ -362,6 +362,10 @@ func TestDefaultDownsamplingWithAddFlags(t *testing.T) { assert.Equal(t, f.FactoryConfig.DownsamplingRatio, defaultDownsamplingRatio) assert.Equal(t, f.FactoryConfig.DownsamplingHashSalt, defaultDownsamplingHashSalt) + + err = command.ParseFlags([]string{ + "--downsampling.ratio=0.5"}) + assert.Error(t, err) } func TestPublishOpts(t *testing.T) {