fix(health): утечка ioredis-клиента в /health при недоступном Redis [T0.2] #483
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Суть.
apps/server/src/integrations/health/redis.health.ts(pingCheck):new Redis(...)на каждый вызов;redis.disconnect()только на success-пути. При недоступном Redis каждый вызов/healthнавсегда добавляет реконнектящийся клиент (maxRetriesPerRequest: 15не останавливает реконнекты самого соединения).Сценарий отказа. Redis упал → docker/k8s-проба долбит
/healthкаждые N секунд → сотни живых клиентов с таймерами реконнекта → рост памяти/CPU, лавина попыток соединений усугубляет инцидент.Правка.
try/finallyсdisconnect().lazyConnect,maxRetriesPerRequest: 1).Тест. Интеграционный — N вызовов pingCheck при лежащем Redis не увеличивают число живых хэндлов (наблюдаемое свойство, не мок).
Зависимости. Нет — независимый мелкий PR.
Заменено итерационным ишью #486 (коммит 2). Закрыто как дубль.