fix: 按完成时刻分批清理并限制读连接池
This commit is contained in:
@@ -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 ?`
|
||||
|
||||
Reference in New Issue
Block a user