Недетерминированное восстановление состояния после паники в конкурентных обработчиках запросов #2
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?
Проблема
Структура PanicRecoveryManager в panic_recovery.go перехватывает паники и пытается перезапустить горутины. Однако при возникновении паники контекст выполнения теряется, что приводит к ряду проблем. Операции, обрабатываемые в момент паники, не завершаются, что может оставить клиентов в ожидании ответа бесконечно долго.
Если паника возникает во время операции записи, данные могут остаться в промежуточном состоянии без надлежащей обработки ошибок или отката. Восстановление является недетерминированным и зависит от точного момента возникновения паники, что делает поведение системы непредсказуемым.
Архитектурная проблема
Как гарантировать детерминированное восстановление состояния после паники в многопоточной среде с активными конкурентными запросами?
Предлагаемые направления исследований
Соответствующие файлы с исходным кодом