ИИ с новым лимитом не может восстановить работу

Кажется, это больше-меньше какая-то ошибка, но в любом случае. Несколько минут назад пересборка не удалась. Без Discourse AI она прошла успешно.

Это был первый странный момент, но я не думаю, что это имеет значение.

I, [2025-01-21T10:15:39.800894 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle install --jobs $(($(nproc) - 1)) --retry 3'
WARN: Unresolved or ambiguous specs during Gem::Specification.reset:
      stringio (>= 0)
      Available/installed versions of this gem:
      - 3.1.2
      - 3.1.1
WARN: Clearing out unresolved specs. Try 'gem cleanup <gem>'
Please report a bug if this causes problems.

А вот здесь начинается самое интересное.

I, [2025-01-21T10:16:08.572988 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
Plugin name is 'discourse-microsoft-auth', but plugin directory is named 'discourse-plugin-office365-auth'
rake aborted!
ActiveRecord::DuplicateMigrationNameError:  (ActiveRecord::DuplicateMigrationNameError)

Multiple migrations have the name EnablePgVectorExtension.

И наконец, вот эта менее информативная часть:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 990 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1

Я не думаю, что это связано, но поскольку это исходит не от тем, а от плагинов, и это началось в одно и то же время — по крайней мере, у меня.

Solved показывает две метки:

Я бы начал с удаления плагинов, чтобы посмотреть, когда всё заработает.

20 минут на каждый плагин… Я знаю, что это не конфликтует с другими AI-плагинами. Тестирование заняло более часа простоя.

Но конечно, я сделаю это. И при этом всё остальное работает, кроме DAI.

Теперь работа выполнена. Я понимаю, почему всё устроено именно так, но нам нужен другой способ борьбы с плагинами. Конечно, разные контейнеры, но…

В любом случае. Это конфликт между Discourse AI, после внедрения системы квот, и Discourse AI Topic Summary 🤖 — при пересборке один из них должен быть отключён.

Поэтому я оставляю вас обсуждать с @merefield, кто что будет делать.

Не могли бы вы поделиться ошибкой?

Не из коробки больше, чем у меня было в ОП.

Ошибка от Microsoft Auth?

Ой, подождите, «stringio»… : :thinking:

Вы имеете в виду то самое имя директории? Насколько я знаю, оно совершенно бессмысленно и существует уже очень давно.

Мне известно следующее:

  • Я не могу выполнить пересборку, если включены оба параметра.
  • Если включен только один (не важно, какой именно), и любые другие плагины не имеют значения, то пересборка возможна.
  • Это началось, когда у DAI появился лимит.

Поскольку я написал собственные плагины для ИИ, у меня нет экземпляра с обоими, поэтому мне сложно воспроизвести проблему.

Тем не менее, я пересоберу свой продакшн-экземпляр с функцией «Итоги темы ИИ», чтобы проверить, нет ли какой-то аномалии.

Возможно, дело в этом… Я изменю имя!

Думаю, на этом всё, проблема должна быть решена.

Да, так и было.

Спасибо!

Отлично! Для информации: это точно моя вина, а не DAI.

Я выпустил рефакторинг AI Topic Summary непосредственно перед этим, что, по иронии судьбы, мало связано с той миграцией — я просто объединил их в один релиз. Этот релиз добавил корректную CI и соответствие Zeitwerk.