fix(multiplayer): close initial connect sweep rows

This commit is contained in:
Josh Creek
2026-09-01 16:28:08 +01:00
parent a6d2bdf8bd
commit ec82367c50
+21 -6
View File
@@ -33,14 +33,29 @@ func ReconcileInitialConnect(ctx context.Context, db *sql.DB, now time.Time, lim
return 0, err
}
defer rows.Close()
count := 0
type candidate struct {
matchID string
playlist string
readyAt time.Time
}
var candidates []candidate
for rows.Next() {
var matchID, playlist string
var readyAt time.Time
if err := rows.Scan(&matchID, &playlist, &readyAt); err != nil {
return count, err
return 0, err
}
participants, err := loadInitialConnectSnapshot(ctx, db, matchID)
candidates = append(candidates, candidate{matchID: matchID, playlist: playlist, readyAt: readyAt})
}
if err := rows.Err(); err != nil {
return 0, err
}
if err := rows.Close(); err != nil {
return 0, err
}
count := 0
for _, candidate := range candidates {
participants, err := loadInitialConnectSnapshot(ctx, db, candidate.matchID)
if err != nil {
return count, err
}
@@ -48,14 +63,14 @@ func ReconcileInitialConnect(ctx context.Context, db *sql.DB, now time.Time, lim
if err != nil {
return count, err
}
plan, err := domain.PlanInitialConnect(domain.Playlist(playlist), readyAt, now, participants, history)
plan, err := domain.PlanInitialConnect(domain.Playlist(candidate.playlist), candidate.readyAt, now, participants, history)
if err != nil {
return count, fmt.Errorf("plan initial connect %s: %w", matchID, err)
return count, fmt.Errorf("plan initial connect %s: %w", candidate.matchID, err)
}
if plan.Action == domain.InitialConnectWait {
continue
}
if err := ApplyInitialConnectPlan(ctx, db, matchID, "initial-connect:"+matchID, plan, now); err != nil {
if err := ApplyInitialConnectPlan(ctx, db, candidate.matchID, "initial-connect:"+candidate.matchID, plan, now); err != nil {
return count, err
}
count++