@@ -48,25 +48,40 @@ type BucketAlertStore struct {
4848 cfgProvider bucket.TenantConfigProvider
4949 logger log.Logger
5050
51- usersScanner users.Scanner
51+ usersScanner users.Scanner
52+ userIndexUpdater * users.UserIndexUpdater
5253}
5354
5455func NewBucketAlertStore (bkt objstore.InstrumentedBucket , userScannerCfg users.UsersScannerConfig , cfgProvider bucket.TenantConfigProvider , logger log.Logger , reg prometheus.Registerer ) (* BucketAlertStore , error ) {
5556 alertBucket := bucket .NewPrefixedBucketClient (bkt , alertsPrefix )
5657
57- usersScanner , err := users .NewScanner (userScannerCfg , alertBucket , logger , extprom .WrapRegistererWith (prometheus.Labels {"component" : "alertmanager" }, reg ))
58+ regWithComponent := extprom .WrapRegistererWith (prometheus.Labels {"component" : "alertmanager" }, reg )
59+ usersScanner , err := users .NewScanner (userScannerCfg , alertBucket , logger , regWithComponent )
5860 if err != nil {
5961 return nil , errors .Wrap (err , "unable to initialize alertmanager users scanner" )
6062 }
63+
64+ // We hardcode strategy to be list so can ignore error.
65+ baseScanner , _ := users .NewScanner (users.UsersScannerConfig {
66+ Strategy : users .UserScanStrategyList ,
67+ }, alertBucket , logger , regWithComponent )
68+ userIndexUpdater := users .NewUserIndexUpdater (alertBucket , userScannerCfg .CleanUpInterval , baseScanner , regWithComponent )
69+
6170 return & BucketAlertStore {
62- usersScanner : usersScanner ,
63- alertsBucket : alertBucket ,
64- amBucket : bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
65- cfgProvider : cfgProvider ,
66- logger : logger ,
71+ usersScanner : usersScanner ,
72+ userIndexUpdater : userIndexUpdater ,
73+ alertsBucket : alertBucket ,
74+ amBucket : bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
75+ cfgProvider : cfgProvider ,
76+ logger : logger ,
6777 }, nil
6878}
6979
80+ // GetUserIndexUpdater implements alertstore.AlertStore.
81+ func (s * BucketAlertStore ) GetUserIndexUpdater () * users.UserIndexUpdater {
82+ return s .userIndexUpdater
83+ }
84+
7085// ListAllUsers implements alertstore.AlertStore.
7186func (s * BucketAlertStore ) ListAllUsers (ctx context.Context ) ([]string , error ) {
7287 active , deleting , _ , err := s .usersScanner .ScanUsers (ctx )
0 commit comments