HTTP2 GOAWAY при пакетной передаче архива
Сервер завершает HTTP2 соединение, и клиент повторяет весь пакет. Часть запросов могла уже получить прикладной результат, поэтому общий повтор способен создать дубликаты либо неопределённость. Для хозяйства нужно связать GOAWAY контекст с отдельными заданиями и проверить их судьбу, сохраняя идентичность исходных измерений и ответственность получателя за уже принятые данные архива.
Сохранить событие протокола
RFC9113 описывает GOAWAY и его контекст завершения соединения. (IETF — RFC9113 HTTP2) Запишите оригинальное событие, сведения библиотеки и активные запросы. Не считайте одинаковым любой разрыв TCP и полученный GOAWAY: доступные доказательства отличаются. Если часть контекста скрыта клиентом, это ограничение должно оставаться в отчёте, а не заменяться выдуманным точным состоянием каждого stream.
Уточните, какие запросы имеют завершённые ответы и что они означают по контракту сервиса. HTTP семантика не задаёт одну универсальную долговечную запись всего архива. (IETF — RFC9110 HTTP Semantics) Для каждой операции нужны отдельная идентичность и критерий принятия. Номер stream полезен транспортной диагностике, но не должен автоматически становиться вечным идентификатором физического измерения хозяйства в базе.
Разделить известные и неопределённые исходы
Завершённый прикладной результат сохраняйте отдельно от запроса, для которого ответ не получен. Отсутствие ответа не доказывает отсутствие обработки. Правило повтора должно учитывать возможность прежнего принятия и поддерживаемую проверку состояния, вместо автоматического создания новых измерений с текущим временем только потому, что соединение потребовало восстановить свой транспортный контекст после окончания работы.
Увеличить схему
Не выводите из GOAWAY больше, чем допускают спецификация и фактическая реализация. Его сведения помогают классифицировать поток, но не заменяют всю внутреннюю транзакцию сервиса. Если приложение предоставляет собственный статус задания, используйте предусмотренную операцию и сохраняйте её результат. Произвольный повтор технологически значимой команды не является допустимым способом выяснить исход предыдущей попытки.
Проверить учебную последовательность
На выделенной конфигурации отправьте несколько собственных различимых частей архива и предусмотренным способом завершите серверное соединение. Сопоставьте запросы, протокольные события и фактические записи. Не ограничивайтесь общим числом ответов: важна судьба каждого ожидаемого события и отсутствие скрытых пропусков либо повторного физического учёта после восстановления клиентского потока загрузки.
Добавьте повторный запуск клиента с сохранённым состоянием задания. Подтвердите, что известные результаты не теряются, а неопределённые имеют понятное следующее действие. Новый транспорт не должен автоматически означать новый пакет данных. Если библиотека сама повторяет запросы, её поведение нужно учитывать в общей схеме, чтобы приложение не добавило поверх ещё один независимый повтор.
Принять восстановление по содержимому
В итоговом протоколе укажите исходный пакет, ответы и результаты сверки архива. Сохраните версии клиента, прокси и сервера. После их обновления повторите сценарий, поскольку полезные диагностические сведения и автоматизация библиотеки могут различаться. Прикладной контракт остаётся явным и не заменяется надеждой на одинаковое поведение каждого нового компонента HTTP маршрута хозяйства.
Для хозяйства приёмка подтверждает управляемое завершение и возврат передачи. GOAWAY помогает объяснить состояние соединения, а полнота данных и безопасный повтор проверяются отдельно. Это сохраняет достоверную историю измерений при обслуживании сервера и не превращает обычное обновление транспортного соединения в незаметное размножение либо потерю архивных событий.