diff --git a/pkg/distributor/ha_tracker.go b/pkg/distributor/ha_tracker.go index dd0f74d9c55..c46acd3796c 100644 --- a/pkg/distributor/ha_tracker.go +++ b/pkg/distributor/ha_tracker.go @@ -88,7 +88,14 @@ func (cfg *HATrackerConfig) Validate() error { return fmt.Errorf(errInvalidFailoverTimeout, cfg.FailoverTimeout, minFailureTimeout) } - return nil + // Tracker kv store only supports consul and etcd. + storeAllowedList := []string{"consul", "etcd"} + for _, as := range storeAllowedList { + if cfg.KVStore.Store == as { + return nil + } + } + return fmt.Errorf("invalid HATracker KV store type: %s", cfg.KVStore.Store) } func GetReplicaDescCodec() codec.Proto { diff --git a/pkg/distributor/ha_tracker_test.go b/pkg/distributor/ha_tracker_test.go index 29f232d6308..0947afd69a0 100644 --- a/pkg/distributor/ha_tracker_test.go +++ b/pkg/distributor/ha_tracker_test.go @@ -104,6 +104,15 @@ func TestHATrackerConfig_Validate(t *testing.T) { }(), expectedErr: nil, }, + "should failed with invalid kv store": { + cfg: func() HATrackerConfig { + cfg := HATrackerConfig{} + flagext.DefaultValues(&cfg) + cfg.KVStore.Store = "memberlist" + return cfg + }(), + expectedErr: fmt.Errorf("invalid HATracker KV store type: %s", "memberlist"), + }, } for testName, testData := range tests {