# Снижение частоты отображения предупреждения "Черновик редактируется в другом окне"

**URL:** <https://meta.discourse.org/t/reducing-the-frequency-of-display-for-the-warning-draft-is-being-edited-in-another-window/150826>\
**Category:** Feature\
**Created:** [08.Май.2020 12:33:53 UTC](https://meta.discourse.org/t/reducing-the-frequency-of-display-for-the-warning-draft-is-being-edited-in-another-window/150826 "2020-05-08T12:33:53Z")\
**Posts on this page:** 1\
**Showing post:** 18

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [12.Май.2020 07:01:11 UTC](https://meta.discourse.org/t/reducing-the-frequency-of-display-for-the-warning-draft-is-being-edited-in-another-window/150826/18 "2020-05-12T07:01:11Z")

</div>

Отлично, у меня есть исправление:

> <https://github.com/discourse/discourse/commit/a29ae17d3a57c6cd92716b53bbab5b9a229f77e7>
>
> Previously we only changed sequence on ownership change, this
> cause a race condi…tion between tabs where user could type for a
> long time without being warned of an out of date draft.
> 
> This change is a radical change and we should watch closely.
> 
> Code was already in place to track sequence on the client so no
> changes are needed there.

Огромное спасибо за воспроизведение ошибки — оно было впечатляющим и помогло мне быстро изолировать проблему.

Кажется, мой предыдущий ответ о том, как мы отслеживаем черновики, был немного размытым. Я думаю, что дело в том, что я был слишком наивен **и одновременно слишком усложнял** свой алгоритм. Это смертельное сочетание. Новый алгоритм объяснять гораздо проще.

- Каждый раз, когда клиент сохраняет черновик, он сообщает серверу свой «номер последовательности».

- Если номер последовательности **совпадает** , сервер увеличивает его на 1 и возвращает клиенту (это наш новый номер последовательности).

- Если номер последовательности **не совпадает** , сервер сообщает клиенту о конфликте и не сохраняет черновик.

- При перезагрузке или загрузке страницы сервер сообщает клиенту текущий номер последовательности.

Моя предыдущая реализация была излишне сложной: она пыталась избежать увеличения номера последовательности во многих случаях, отслеживая владельца последовательности. Ваш тестовый случай показал, насколько это плохо и как может привести к потере контента.

Это исправление уже доступно на meta. Дайте знать, если сможете найти ещё какие-либо пограничные случаи в этой системе.

---

_[View the full topic](https://meta.discourse.org/t/reducing-the-frequency-of-display-for-the-warning-draft-is-being-edited-in-another-window/150826)._
