Ежемесячный выпуск за июль 2026 года

Для получения дополнительной информации обо всех изменениях, выпущенных в версии 2026.7, ознакомьтесь со следующим:

Также были выпущены патч-релизы для других поддерживаемых версий:

4 лайка

Станет ли это текущей версией «esr» или я что-то неправильно понял?

1 лайк

Действительно, я не могу понять, что произошло. Для этого обновления (очень срочного из-за Cache poisoning/XSS via color scheme cookies · Advisory · discourse/discourse · GitHub) требовался пересборка, но поскольку был v2026.1.5 → v2026.1.6 список изменений, я предположил, что это будет незначительное обновление версии. Но нет, теперь у меня версия v2026.7.0. Насколько мне известно, мой форум настроен на использование esr :

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Установите db_shared_buffers максимум на 25% от общей памяти.
  ## будет установлено автоматически при начальной настройке на основе обнаруженной оперативной памяти, или вы можете переопределить
  db_shared_buffers: "2048MB"

  ## может улучшить производительность сортировки, но увеличивает использование памяти на соединение
  db_work_mem: "40MB"

  ## Уменьшить максимальный размер загрузки
  upload_size: 1m

  ## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
  version: esr

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

== 20260421061908 AddCoveringIndexOnChatMessagesThreadId: migrating ===========
-- remove_index(:chat_messages, {name: "idx_chat_messages_thread_id_id_user_id_not_deleted", algorithm: :concurrently, if_exists: true})2026-07-28 16:02:43.673 UTC [544] discourse@discourse LOG:  duration: 16903.716 ms  statement: CREATE INDEX CONCURRENTLY "index_posts_on_updated_at_for_localization" ON "posts" ("updated_at" DESC) WHERE deleted_at IS NULL AND user_id > 0 AND locale IS NOT NULL
2026-07-28 16:02:59.214 UTC [544] discourse@discourse LOG:  duration: 15529.318 ms  statement: CREATE INDEX CONCURRENTLY "index_posts_on_updated_at_for_locale_detection" ON "posts" ("updated_at" DESC) WHERE deleted_at IS NULL AND user_id > 0 AND locale IS NULL
2026-07-28 16:03:00.031 UTC [544] discourse@discourse LOG:  duration: 798.943 ms  statement: CREATE INDEX CONCURRENTLY "index_topics_on_updated_at_for_locale_detection" ON "topics" ("updated_at" DESC) WHERE deleted_at IS NULL AND user_id > 0 AND locale IS NULL
2026-07-28 16:03:00.186 UTC [544] discourse@discourse LOG:  duration: 143.500 ms  statement: CREATE INDEX CONCURRENTLY "index_topics_on_updated_at_for_localization" ON "topics" ("updated_at" DESC) WHERE deleted_at IS NULL AND user_id > 0 AND locale IS NOT NULL
2026-07-28 16:03:01.251 UTC [544] discourse@discourse LOG:  duration: 1051.872 ms  statement: UPDATE posts
	SET raw = regexp_replace(
	  raw,
	  '\\+([_*~|`])(?=[^\]\[]*\]\(upload://)',
	  '\1',
	  'g'
	)
	WHERE id >= 1
	  AND id < 10001
	  AND raw ~ '\\+[_*~|`][^\]\[]*\]\(upload://'
	
2026-07-28 16:03:01.910 UTC [544] discourse@discourse LOG:  duration: 658.965 ms  statement: UPDATE posts
	SET raw = regexp_replace(
	  raw,
	  '\\+([_*~|`])(?=[^\]\[]*\]\(upload://)',
	  '\1',
	  'g'
	)
	WHERE id >= 10001
	  AND id < 20001
	  AND raw ~ '\\+[_*~|`][^\]\[]*\]\(upload://'
2 лайка

Да, именно так!

Это новая версия ESR, поэтому при обновлении вы перешли на неё.

3 лайка

Не могли бы вы в будущем как-то сделать это менее запутанным? Возможно, дело только во мне, но если обновление применяется к ветке ESR, на которой я сейчас нахожусь, я предполагаю, что это происходит потому, что текущая мажорная версия этой ветки всё ещё поддерживается.

2 лайка

Версия 2026.1 всё ещё поддерживается, и вы можете зафиксировать установку на этой версии, установив version: release/2026.1 в файле app.yml. В этом случае повторная сборка включила бы обновление безопасности из ветки 2026.1.

Предполагаю, вы использовали version: esr? В этом случае вы отслеживаете «последнюю версию ESR», которая сейчас является 2026.7.

Информацию о периодах поддержки и перекрытиях между периодами поддержки ESR можно найти на https://releases.discourse.org/

К сожалению, откатить Discourse на более раннюю версию невозможно. Но чтобы избежать этого в будущем, вы можете зафиксировать версию на release/2026.7 (и обязательно вручную обновлять эту фиксацию до того, как поддержка 2026.7 прекратится).

1 лайк

Спасибо. Думаю, я ищу самый надёжный и автоматизированный способ гарантированно остаться на самой старой поддерживаемой версии, то есть выбрать самый медленный путь развития.

3 лайка

У меня то же самое, и я думаю, что esr (почти) это делает. Каждые несколько месяцев появляется новый esr, и вы переходите на него, что и произошло только что. Но на самом деле у старого esr еще два месяца поддерживаемого срока службы, поэтому вы ожидали остаться на предыдущем esr. (Я думаю, что это разумное желание. Нам нужна метка esr-maintained??)

4 лайка

Я думаю, это вполне разумно рассмотреть, но также подумайте об этом… что изменится через 2 месяца, когда поддержка v2026.1 прекратится?

Без дополнительных изменений вы всё равно будете обновлены в тот момент «без предупреждения».

Вас это устраивает?

1 лайк

Да, я думаю, что всё ещё имеет смысл дольше придерживаться старой ESR-версии. Это означает, что новая ESR-версия уже прошла некоторое тестирование и, возможно, содержит ряд исправлений.

Я обновился до новой ESR-версии в течение часа и немного жалею об этом: в нынешних условиях мне лучше было бы зафиксироваться на предыдущей версии и получать только обновления безопасности. Это разделяет срочные исправления безопасности и необходимость разбираться в новых изменениях, а также потенциальные новые ошибки, которые будут исправлены в ближайшее время. См. очень полезную статью
Переход с 2026.1 ESR на 2026.7 — мои наблюдения

(Почему стоит ожидать новых ошибок в только что выпущенной ESR-версии? Потому что, насколько я могу судить, новая ESR-версия находилась в непрерывной разработке вплоть до момента выпуска. Стабилизационного этапа не было.)

2 лайка

Вот это главный вопрос.

Итак, если я использую ветку esr-maintained, то через два месяца ветки esr и esr-maintained станут одинаковыми, верно? Так что через 2 месяца я всё равно буду удивлён крупными изменениями.

Пока ветки esr и esr-maintained различаются, Discourse может выводить предупреждение о том, что вы находитесь в «периоде льготной поддержки ESR». Это предупреждение можно показывать только на форуме для администраторов, а не при пересборке контейнера.

Было бы неплохо получать заблаговременное уведомление о смене версии ESR, чтобы можно было спланировать и протестировать обновление в течение этого периода поддержки.

4 лайка

В идеальном мире это даёт вам два месяца на обновление тестового сервера до новой ESR, в то время как на продуктивном сервере вы можете продолжать использовать старую ESR с обновлениями безопасности, покрывающими этот период.

Действительно, имеет смысл иметь какой-то простой механизм отслеживания меток, чтобы следить за исправленной старой ESR и автоматически получать поддерживаемые обновления старой ESR.

Возможно, уже есть способ достичь этого?

2 лайка

Не думаю, что ветка ESR будет получать такое большое количество исправлений ошибок. Как и версия 2026.1 — с этого момента она будет получать только обновления безопасности.

Так что, хотя через месяц некоторые из этих ошибок могут стать известными, это не значит, что вам не придётся с ними разбираться.

3 лайка

Если взглянуть на ситуацию пессимистично, то посмотрим! Я полагаю, что если бы в свежеиспечённом ESR-релизе были обнаружены какие-то глупые изменения, ломающие совместимость, их бы поправили. Возможно, этот новый подход ещё не достаточно долго применяется, чтобы увидеть, как это происходит. Действительно, я не ожидаю исправлений для простых неудобств.

1 лайк