| 829 | } |
| 830 | |
| 831 | func (am *MultitenantAlertmanager) isUserOwned(userID string) (bool, error) { |
| 832 | if !am.allowedTenants.IsAllowed(userID) { |
| 833 | return false, nil |
| 834 | } |
| 835 | |
| 836 | // If sharding is disabled, any alertmanager instance owns all users. |
| 837 | if !am.cfg.ShardingEnabled { |
| 838 | return true, nil |
| 839 | } |
| 840 | |
| 841 | alertmanagers, err := am.ring.Get(users.ShardByUser(userID), getSyncRingOp(am.cfg.ShardingRing.DisableReplicaSetExtension), nil, nil, nil) |
| 842 | if err != nil { |
| 843 | am.ringCheckErrors.Inc() |
| 844 | level.Error(am.logger).Log("msg", "failed to load alertmanager configuration", "user", userID, "err", err) |
| 845 | return false, err |
| 846 | } |
| 847 | |
| 848 | return alertmanagers.Includes(am.ringLifecycler.GetInstanceAddr()), nil |
| 849 | } |
| 850 | |
| 851 | func (am *MultitenantAlertmanager) syncConfigs(cfgs map[string]alertspb.AlertConfigDesc) { |
| 852 | level.Debug(am.logger).Log("msg", "adding configurations", "num_configs", len(cfgs)) |