@@ -48,25 +48,43 @@ 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+ 	var  userIndexUpdater  * users.UserIndexUpdater 
65+ 	if  userScannerCfg .Strategy  ==  users .UserScanStrategyUserIndex  {
66+ 		// We hardcode strategy to be list so can ignore error. 
67+ 		baseScanner , _  :=  users .NewScanner (users.UsersScannerConfig {
68+ 			Strategy : users .UserScanStrategyList ,
69+ 		}, alertBucket , logger , regWithComponent )
70+ 		userIndexUpdater  =  users .NewUserIndexUpdater (alertBucket , userScannerCfg .CleanUpInterval , baseScanner , regWithComponent )
71+ 	}
72+ 
6173	return  & BucketAlertStore {
62- 		usersScanner : usersScanner ,
63- 		alertsBucket : alertBucket ,
64- 		amBucket :     bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
65- 		cfgProvider :  cfgProvider ,
66- 		logger :       logger ,
74+ 		alertsBucket :     alertBucket ,
75+ 		amBucket :         bucket .NewPrefixedBucketClient (bkt , alertmanagerPrefix ),
76+ 		cfgProvider :      cfgProvider ,
77+ 		logger :           logger ,
78+ 		usersScanner :     usersScanner ,
79+ 		userIndexUpdater : userIndexUpdater ,
6780	}, nil 
6881}
6982
83+ // GetUserIndexUpdater implements alertstore.AlertStore. 
84+ func  (s  * BucketAlertStore ) GetUserIndexUpdater () * users.UserIndexUpdater  {
85+ 	return  s .userIndexUpdater 
86+ }
87+ 
7088// ListAllUsers implements alertstore.AlertStore. 
7189func  (s  * BucketAlertStore ) ListAllUsers (ctx  context.Context ) ([]string , error ) {
7290	active , deleting , _ , err  :=  s .usersScanner .ScanUsers (ctx )
0 commit comments