fix: отмена скана при исчерпании соединений Postgres
- Распознавание 53300/too many clients и др. в isStoreCapacityOrConnExhausted - SaveHostResult/порты/SNMP: при фатальной ошибке БД — CancelScan; ctx отменяет дальнейший SNMP - Воркеры при ctx.Done быстро скипают оставшиеся IP без SNMP (дренаж канала) Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package scans
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// isStoreCapacityOrConnExhausted — ошибки, при которых дальнейший проход скана в БД бессмысленен (слоты Postgres, пул и т.п.).
|
||||
func isStoreCapacityOrConnExhausted(err error) bool {
|
||||
if err == nil {
|
||||
return false
|
||||
}
|
||||
msg := strings.ToLower(err.Error())
|
||||
return strings.Contains(msg, "53300") ||
|
||||
strings.Contains(msg, "too many clients") ||
|
||||
strings.Contains(msg, "remaining connection slots") ||
|
||||
strings.Contains(msg, "connection slots are reserved") ||
|
||||
strings.Contains(msg, "sql: connection is closed") ||
|
||||
strings.Contains(msg, "broken pipe") ||
|
||||
strings.Contains(msg, "connection reset by peer")
|
||||
}
|
||||
Reference in New Issue
Block a user