fix: 按完成时刻分批清理并限制读连接池

This commit is contained in:
Nixevol
2026-09-30 16:22:43 +08:00
parent bd550f313f
commit 6a65ab8593
9 changed files with 350 additions and 17 deletions
+3 -6
View File
@@ -188,15 +188,12 @@ func (a *App) purgeCompletedMessages(ctx context.Context, nowMs int64) error {
var seqs []int64
err := a.db.Queue.Do(ctx, func(tx *sql.Tx) error {
q := `
SELECT m.seq FROM messages m
WHERE m.state = 'completed'`
SELECT seq FROM messages
WHERE state = 'completed'`
args := []any{}
if days > 0 {
cutoff := nowMs - int64(days)*24*3600*1000
q += ` AND COALESCE(
(SELECT MAX(d.updated_at) FROM deliveries d WHERE d.seq = m.seq),
m.send_at
) < ?`
q += ` AND COALESCE(completed_at, send_at) < ?`
args = append(args, cutoff)
}
q += ` LIMIT ?`