В каком порядке следует запускать импорт конфигурации и обновления модуля?

10

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

  • Есть ли какие-либо риски для запуска импорта конфигурации и обновления базы данных в любом порядке?
  • Каков предпочтительный порядок выполнения этих операций?
  • Нужно ли в хуках обновления создавать какие-либо специальные приспособления для элементов конфигурации, которые, возможно, уже были импортированы?
  • Существуют ли другие операции, которые могут потребоваться для полного обновления производственной среды?
gapple
источник
Связанная проблема: drupal.org/node/2901418 :
milkovsky

Ответы:

12

Обновления должны быть запущены до импорта конфигурации

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


Проблемы с импортом конфига перед обновлениями

  • Хук обновления, основанный на значении конфигурации, может закончиться другим результатом, чем если бы он был запущен для значения перед импортом.

  • Обновление потенциально может завершиться ошибкой, если оно попытается создать объекты конфигурации, которые уже существуют.

Проблемы при импорте конфига после обновлений

  • Если обновление, которое вводит новый объект конфигурации, запускается первым, оно создаст новый элемент конфигурации, который будет иметь другой UUID, чем тот, который находится в config. Однако после импорта конфигурации объект должен быть заменен версией конфигурации.

    Здесь может возникнуть потенциальная проблема, если замена объекта повлияет на связанный контент. Например, если обновление переносит контент из одного поля в другое, при импорте конфигурации поле будет полностью заменено, и контент может быть потерян. В этом случае процесс развертывания может потребоваться настроить для запуска обновлений в целевой среде и экспорта полученной конфигурации.

gapple
источник
Ранее я оставил ответ, что порядок не имеет значения (просто порядок обновлений и конфигурации должен быть таким же, как он был реализован). Я думаю, что я был неправ, потому что вы всегда должны экспортировать конфиг после обновления. Итак, на локальном обновление, затем экспорт, развертывание, обновление, а затем импорт.
ognockocaten
Как обсуждается в связанной проблеме, есть случай, когда обновления нашей сущности требуют импорта нового поля, иначе ловушка post_update потерпит неудачу. В этом случае нам нужно выполнить импорт конфигурации до обновления базы данных. Кажется, самое свежее мнение
atwixtor