(userID string)
| 773 | } |
| 774 | |
| 775 | func (r *Ruler) isUserOwned(userID string) (bool, error) { |
| 776 | if !r.allowedTenants.IsAllowed(userID) { |
| 777 | return false, nil |
| 778 | } |
| 779 | |
| 780 | // If sharding is disabled, any ruler instance owns all users. |
| 781 | if !r.cfg.EnableSharding { |
| 782 | return true, nil |
| 783 | } |
| 784 | |
| 785 | if r.cfg.ShardingStrategy == util.ShardingStrategyShuffle { |
| 786 | shardSize := r.getShardSizeForUser(userID) |
| 787 | subRing := r.ring.ShuffleShard(userID, shardSize) |
| 788 | |
| 789 | rs, err := subRing.GetAllHealthy(RingOp) |
| 790 | if err != nil { |
| 791 | r.ringCheckErrors.Inc() |
| 792 | level.Error(r.logger).Log("msg", "failed to get rulers from ring", "user", userID, "err", err) |
| 793 | return false, err |
| 794 | } |
| 795 | |
| 796 | return rs.Includes(r.lifecycler.GetInstanceAddr()), nil |
| 797 | } |
| 798 | |
| 799 | rulers, err := r.ring.Get(users.ShardByUser(userID), RingOp, nil, nil, nil) |
| 800 | if err != nil { |
| 801 | r.ringCheckErrors.Inc() |
| 802 | level.Error(r.logger).Log("msg", "failed to get rulers from ring", "user", userID, "err", err) |
| 803 | return false, err |
| 804 | } |
| 805 | |
| 806 | return rulers.Includes(r.lifecycler.GetInstanceAddr()), nil |
| 807 | } |
| 808 | |
| 809 | func (r *Ruler) syncRules(ctx context.Context, reason string) error { |
| 810 | level.Info(r.logger).Log("msg", "syncing rules", "reason", reason) |
no test coverage detected