mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
fix(multiplayer): close initial connect sweep rows
This commit is contained in:
@@ -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++
|
||||
|
||||
Reference in New Issue
Block a user