| 184 | } |
| 185 | |
| 186 | func (s *shardedScanner) ScanUsers(ctx context.Context) ([]string, []string, []string, error) { |
| 187 | baseActiveUsers, baseDeletingUsers, baseDeletedUsers, err := s.scanner.ScanUsers(ctx) |
| 188 | if err != nil { |
| 189 | return nil, nil, nil, err |
| 190 | } |
| 191 | |
| 192 | activeUsers := make([]string, 0, len(baseActiveUsers)) |
| 193 | deletingUsers := make([]string, 0, len(baseDeletingUsers)) |
| 194 | deletedUsers := make([]string, 0, len(baseDeletedUsers)) |
| 195 | |
| 196 | for _, userID := range baseActiveUsers { |
| 197 | // Filter out users not owned by this instance. |
| 198 | if owned, err := s.isOwned(userID); err != nil { |
| 199 | level.Warn(s.logger).Log("msg", "unable to check if user is owned by this shard", "user", userID, "err", err) |
| 200 | continue |
| 201 | } else if !owned { |
| 202 | continue |
| 203 | } |
| 204 | activeUsers = append(activeUsers, userID) |
| 205 | } |
| 206 | for _, userID := range baseDeletingUsers { |
| 207 | // Filter out users not owned by this instance. |
| 208 | if owned, err := s.isOwned(userID); err != nil { |
| 209 | level.Warn(s.logger).Log("msg", "unable to check if user is owned by this shard", "user", userID, "err", err) |
| 210 | continue |
| 211 | } else if !owned { |
| 212 | continue |
| 213 | } |
| 214 | deletingUsers = append(deletingUsers, userID) |
| 215 | } |
| 216 | for _, userID := range baseDeletedUsers { |
| 217 | // Filter out users not owned by this instance. |
| 218 | if owned, err := s.isOwned(userID); err != nil { |
| 219 | level.Warn(s.logger).Log("msg", "unable to check if user is owned by this shard", "user", userID, "err", err) |
| 220 | continue |
| 221 | } else if !owned { |
| 222 | continue |
| 223 | } |
| 224 | deletedUsers = append(deletedUsers, userID) |
| 225 | } |
| 226 | |
| 227 | return activeUsers, deletingUsers, deletedUsers, nil |
| 228 | } |