- Отгружено
- 27 сентября 2026 г. в 06:14 UTC
- Автор
- Kamo
- Завершение
- 279a389
Чат терпит неудачу двумя способами, которые замечают участники сразу: открытие разговора «Не мог загружать сообщения», пока не был нажат Ретри, и отправленное сообщение иногда не приходило. Оба были MediaService, отвечая на 500 с помощью YugabyteDB SQLState 40001, «Restart read required». Зарегистрированные ежедневно на обоих стручках, и каждые 500 веб-BFF, записанных на этой неделе, совпадают с одним. Yugabyte перезапускает чтение бесплатно только тогда, когда это ПЕРВЫЙ отчет о транзакции. The Загрузка истории проверяет доступ к третьему заявлению, читая строку членства звонящего - строка, открывающая знаки разговора, читается в тот же момент. Отправитель пишет сообщение и Затем считывает реестр и домен организации в одной и той же транзакции. Либо читать встречу ряд Написанное на мгновение раньше не удовлетворяло всей просьбы; на мгновение позже письмо урегулировалось, что является Почему Ретри всегда работал. - Запросы окна чата (отправка, история, прочтение, список чатов, редактирование, лица, участники, Квитанции) несут @RetryOnDbConflict, и их уловки позволяют выйти из конфликта ****************, чтобы консультант мог повторно запустить его в новой сделке. проглоченный В 500 он был невидим для повторения. Безопасно: все, что посылает, объявляется после выполнения. Mark-read больше не переписывает строку членства, когда указатель уже есть (ChatReadPointerRepository, охраняемое обновление). Называлась она несколько раз на открытую и Каждое переписывание было шансом для собственного исторического груза участника или отправить в неудачу. Читать квитанцию Все равно выходит, как и раньше. Отправка может нести клиентMessageId (ChatSendLedger, Redis): повторная отправка, которая уже Ответом отправителя является ответ, и один из них все еще находится в полете с 409. SEND IN PROGRESS, так что клиент может повторить, не публикуя сообщение дважды. Не открывается. Ратчет **************** держит каждого обработчика @Transactional в чате. повторение, и повторение к улову, который позволяет конфликту выйти. MediaControllerDbConflictTest переигрывает Провал производства через реальный прокси: конфликтная попытка откатывается, вторая Сделка совершается один раз, и ничего не объявляется за неудачную попытку. Пройдено 1384 испытания.
