feat: repair matcher candidates through redis projection

This commit is contained in:
Josh Creek
2026-09-01 10:11:54 +01:00
parent 7a3d520608
commit d882469c79
5 changed files with 82 additions and 3 deletions
+9
View File
@@ -49,6 +49,15 @@ func (p CandidateProjection) Snapshot(ctx context.Context, now time.Time) ([]dom
}
candidates, err := p.Index.Snapshot(ctx, now)
if err == nil {
// An empty index is indistinguishable from a Redis restart or a lost
// keyspace. Rebuild from PostgreSQL before returning so queued players
// are not hidden until the next enqueue mutation.
if len(candidates) == 0 {
if err := p.Repair(ctx, now); err != nil {
return nil, err
}
return p.Index.Snapshot(ctx, now)
}
return candidates, nil
}
if err := p.Repair(ctx, now); err != nil {