Эта тема закроется через несколько секунд после последнего ответа

У нас есть категория, где темы создаются с таймером по умолчанию, который закрывает их через 6 месяцев.

image

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

image

Если перейти в «Гаечный ключ» → «Таймер темы», появляется модальное окно, и сообщение ниже сразу же исправляется.

Теперь самая неприятная часть: проблема наблюдается не во всех темах. Некоторые отображаются корректно, другие — нет. Также ошибка проявляется в некоторых темах, созданных после обновления (вероятно, это не связано с миграцией).

К счастью, это лишь ошибочное отображение сообщения о закрытии через несколько секунд; на самом деле темы закрываются согласно правильному расписанию (например, через 6 месяцев).

Сможете ли вы воспроизвести эту проблему? Заранее спасибо!

2 лайка

Полагаю, @martin сейчас работает в этой области? Есть какие-то мысли?

1 лайк

Хм, интересно, что это исправляется само при открытии модального окна. Я разберусь с этим. Также у меня открыт PR для внедрения нового компонента длительности; я рад, что вы создали эту тему, потому что теперь я могу также заменить это:

На это:

Так что вам не придётся самостоятельно выполнять расчёт от часов к месяцам.

4 лайка

Мне не удаётся воспроизвести это на основе последнего PR: FEATURE: Relative time input for timers and bookmarks and promote auto-close after last post timer by martin-brennan · Pull Request #12063 · discourse/discourse · GitHub

Вот что я вижу, когда создаю новую тему с теми же настройками, что и у вас:

А затем, когда я перехожу в модальное окно таймера темы (я немного изменил это с новым PR):

Так что, возможно, стоит подождать, пока последнее изменение будет слито, и посмотреть, как у вас получится. Если нет, я смогу провести дополнительное расследование. Я напишу здесь снова, как только это будет слито.

2 лайка

Указанное выше изменение теперь объединено и находится в ветке tests-passed.

2 лайка

Спасибо за ваше время!

Я провёл дополнительное расследование (всё ещё на f6e6ae5e24) и обнаружил, что эта странная проблема наблюдается только у старых тем, поэтому, вероятно, дело всё-таки в ошибке миграции..

У старых ошибочных таймеров duration = 4320 и duration_minutes = NULL.
У новых, работающих корректно, duration = NULL и duration_minutes = 259200.

Я подозреваю, что проблема в одном из этих двух коммитов:

FEATURE: Topic timer UI revamp (#11912) · discourse/discourse@6d72c8a · GitHub

FEATURE: Allow durations < 1 hour and < 1 day for topic timers where … · discourse/discourse@4af77f1 · GitHub

2 лайка

А, теперь я понял, что произошло, это моя ошибка. Начальная миграция была выполнена неверно. Чтобы исправить эту проблему, необходимо как минимум обновиться до версии FIX: Topic timer duration_minutes was not backfilled correctly (#12004) · discourse/discourse@18da1d5 · GitHub или последней доступной (или, если обновление действительно невозможно, выполнить UPDATE-запросы из поста миграции в связанном коммите).

3 лайка

Круто, большое спасибо! Я обновлюсь до последней версии как можно скорее..

2 лайка