@@ -107,7 +107,7 @@ func (r *DefaultMultiTenantManager) SyncRuleGroups(ctx context.Context, ruleGrou
107
107
go mngr .Stop ()
108
108
delete (r .userManagers , userID )
109
109
110
- r .stopNotifier (userID )
110
+ r .removeNotifier (userID )
111
111
r .mapper .cleanupUser (userID )
112
112
r .lastReloadSuccessful .DeleteLabelValues (userID )
113
113
r .lastReloadSuccessfulTimestamp .DeleteLabelValues (userID )
@@ -164,29 +164,31 @@ func (r *DefaultMultiTenantManager) syncRulesToManager(ctx context.Context, user
164
164
// newManager creates a prometheus rule manager wrapped with a user id
165
165
// configured storage, appendable, notifier, and instrumentation
166
166
func (r * DefaultMultiTenantManager ) newManager (ctx context.Context , userID string ) (RulesManager , error ) {
167
- notifier , err := r .getOrCreateNotifier (userID )
168
- if err != nil {
169
- return nil , err
170
- }
171
-
172
167
// Create a new Prometheus registry and register it within
173
168
// our metrics struct for the provided user if it doesn't already exist.
174
169
reg := prometheus .NewRegistry ()
175
170
r .userManagerMetrics .AddUserRegistry (userID , reg )
176
171
172
+ notifier , err := r .getOrCreateNotifier (userID , reg )
173
+ if err != nil {
174
+ return nil , err
175
+ }
176
+
177
177
return r .managerFactory (ctx , userID , notifier , r .logger , reg ), nil
178
178
}
179
179
180
- func (r * DefaultMultiTenantManager ) stopNotifier (userID string ) {
180
+ func (r * DefaultMultiTenantManager ) removeNotifier (userID string ) {
181
181
r .notifiersMtx .Lock ()
182
182
defer r .notifiersMtx .Unlock ()
183
183
184
184
if n , ok := r .notifiers [userID ]; ok {
185
185
n .stop ()
186
186
}
187
+
188
+ delete (r .notifiers , userID )
187
189
}
188
190
189
- func (r * DefaultMultiTenantManager ) getOrCreateNotifier (userID string ) (* notifier.Manager , error ) {
191
+ func (r * DefaultMultiTenantManager ) getOrCreateNotifier (userID string , userManagerRegistry prometheus. Registerer ) (* notifier.Manager , error ) {
190
192
r .notifiersMtx .Lock ()
191
193
defer r .notifiersMtx .Unlock ()
192
194
@@ -197,7 +199,7 @@ func (r *DefaultMultiTenantManager) getOrCreateNotifier(userID string) (*notifie
197
199
return n .notifier , nil
198
200
}
199
201
200
- reg := prometheus .WrapRegistererWith (prometheus.Labels {"user" : userID }, r . registry )
202
+ reg := prometheus .WrapRegistererWith (prometheus.Labels {"user" : userID }, userManagerRegistry )
201
203
reg = prometheus .WrapRegistererWithPrefix ("cortex_" , reg )
202
204
n = newRulerNotifier (& notifier.Options {
203
205
QueueCapacity : r .cfg .NotificationQueueCapacity ,
0 commit comments