Cleanup и fallback при ошибке
Как не заблокировать систему, если fallback или cleanup тоже может упасть?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Cleanup должен быть best-effort и изолирован от основного failure path. Fallback имеет timeout, bounded retries и понятный degraded result.
Полный разбор
После ошибки нельзя бесконечно зависать в cleanup или fallback. Cleanup стоит делать идемпотентным и best-effort: закрыть ресурс, записать лог, отправить событие, но не блокировать основной поток без лимита времени.
Fallback должен иметь отдельный timeout, ограниченное число попыток и предсказуемый результат: cached value, default response, queued retry или явная ошибка. В логах важно различать original failure и failure fallback-ветки, иначе отладка станет непрозрачной.