In quale ordine devono essere eseguiti l'importazione della configurazione e gli aggiornamenti dei moduli?


10

Poiché la versione dello schema dei moduli è archiviata nella memoria dei valori-chiave, è unica per ciascun sito e non è sincronizzata attraverso la gestione della configurazione. Ciò ha senso, poiché gli aggiornamenti potrebbero dover apportare modifiche che non sono incapsulate in config (come gli aggiornamenti del database), ma ci sono altre modifiche che possono anche essere incluse in config (ad esempio aggiungendo un nuovo valore di configurazione).

  • Esistono rischi per l'esecuzione dell'importazione della configurazione e degli aggiornamenti del database in entrambi gli ordini?
  • Qual è l'ordine preferito per l'esecuzione di tali operazioni?
  • Gli hook di aggiornamento devono creare alloggi speciali per gli elementi di configurazione che potrebbero essere già stati importati?
  • Ci sono altre operazioni che potrebbero essere necessarie per aggiornare completamente l'ambiente di produzione?

Problema correlato: drupal.org/node/2901418 :
milkovsky

Risposte:


12

Gli aggiornamenti devono essere eseguiti prima dell'importazione della configurazione

Un problema in sospeso contro core assicurerà che le versioni del codice e dello schema corrispondano prima di consentire l'importazione della configurazione .


Problemi con l'importazione della configurazione prima degli aggiornamenti

  • Un hook di aggiornamento basato su un valore di configurazione potrebbe terminare con un risultato diverso rispetto a se eseguito sul valore di pre-importazione.

  • Un aggiornamento potrebbe potenzialmente non riuscire se tentasse di creare entità di configurazione già esistenti.

Preoccupazioni per l'importazione della configurazione dopo gli aggiornamenti

  • Se viene eseguito per primo un aggiornamento che introduce una nuova entità di configurazione, verrà creato un nuovo elemento di configurazione che avrà un UUID diverso da quello in configurazione. Tuttavia, una volta importata la configurazione, l'entità deve essere sostituita con la versione di configurazione.

    Potrebbe esserci un potenziale problema qui se la sostituzione dell'entità influirebbe sul contenuto associato. Ad esempio, se un aggiornamento migra il contenuto da un campo all'altro, al momento dell'importazione della configurazione il campo verrebbe completamente sostituito e il contenuto potenzialmente perso. In questo caso potrebbe essere necessario modificare il processo di distribuzione per eseguire gli aggiornamenti nell'ambiente di destinazione ed esportare la configurazione risultante.


In precedenza avevo lasciato una risposta che l'ordine non ha importanza (solo che l'ordine degli aggiornamenti e della configurazione dovrebbe essere lo stesso di quello che è stato implementato). Sto pensando di sbagliarmi, perché dovresti sempre esportare la configurazione dopo l'aggiornamento. Quindi, su local, aggiorna e poi esporta, su deploy, aggiorna e poi importa.
ognockocaten,

Mentre il problema collegato discute, c'è un caso in cui gli aggiornamenti della nostra entità richiedono l'importazione di un nuovo campo, altrimenti l'hook post_update fallirà. In questo caso, è necessario che l'importazione della configurazione venga eseguita prima degli aggiornamenti del database. Sembra che la versione più
recente di
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.