Como se reconectar ao head após lidar anteriormente com uma atualização quebrada?

Tive alguns problemas há vários meses e, no final, tive que voltar para a 2.9.0.beta1 e simplesmente não consegui atualizar mais nada naquele momento.

Devido a várias circunstâncias atenuantes, tive que me afastar deste projeto por um tempo e só agora estou conseguindo voltar a ele. Descobri que o problema raiz acabou sendo que o servidor de banco de dados PostgreSQL não havia sido atualizado de forma suficiente e adequada, isso agora foi resolvido e ele está rodando na versão 14.x do PostgreSQL e o Discourse também está rodando nesta versão do banco de dados agora.

Infelizmente, quando tentei atualizar novamente pela interface normal de atualização do administrador web, ela indicou que fatal: HEAD does not point to a branch (erro completo aqui):

fatal: HEAD does not point to a branch
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:203:in `run'
...

Pensei que talvez pudesse fazer um /var/discourse/launcher rebuild app, mas isso também não funcionou e apenas resultou na mesma versão sendo iniciada novamente, mas notei a seguinte saída:

$ ./launcher rebuild app
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20220818-0047: Pulling from discourse/base
1efc276f4ff9: Pull complete
1b880e64942b: Pull complete
794f6dc9a2ff: Pull complete
Digest: sha256:7734701087766821ffb2ddcef423754798bd345c2ac0d550131c6e6905c268e8
Status: Downloaded newer image for discourse/base:2.0.20220818-0047
docker.io/discourse/base:2.0.20220818-0047
...
I, [2022-09-13T02:09:12.828649 #1]  INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2022-09-13T02:09:12.829826 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2022-09-13T02:09:13.957219 #1]  INFO -- :
I, [2022-09-13T02:09:13.958187 #1]  INFO -- : > cd /var/www/discourse && git fetch --depth=1 origin tag v2.9.0.beta2 --no-tags
From https://github.com/discourse/discourse
 * [new tag]           v2.9.0.beta2 -> v2.9.0.beta2
I, [2022-09-13T02:09:18.214516 #1]  INFO -- :
I, [2022-09-13T02:09:18.215535 #1]  INFO -- : > cd /var/www/discourse && git checkout v2.9.0.beta2
Note: switching to 'v2.9.0.beta2'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -
Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 88a85843 FIX: Cooking custom emojis should not use a secure URL (#15929)
I, [2022-09-13T02:09:19.557296 #1]  INFO -- :
...

Acabei revertendo essas alterações restaurando um backup e pensei em pedir algumas opiniões aqui primeiro sobre como eu poderia e deveria reconectar o Discourse corretamente ao HEAD no main e começar a construir novamente com o beta mais recente - e depois que eu finalmente conseguir atualizar isso, gostaria de travá-lo em uma atualização de lançamento estável no futuro. Eu usei betas para resolver um problema que tive no ano passado, mas isso já foi aventura suficiente para mim. :laughing:

Você quer que o Discourse faça backups? Você precisará se esforçar para atualizar o postgres dentro do container para usar o pg14. Se ainda não for tarde demais para voltar ao PG 13, você ficará mais feliz se o fizer.

Você só precisa fazer uma reconstrução pela linha de comando.

Hmm, tenho algumas ideias, @pfaffman:

  • Obrigado por apontar isso. Fiquei tão focado em atualizar o PGSQL que esqueci que precisava mudar para a versão 13 em vez da 14. Acho que vou chorar!
  • Você já viu alguém rebaixar um banco de dados com sucesso da versão 14 para a 13?
  • Em teoria, eu deveria conseguir adicionar outro cluster para a versão 13 ao servidor para que ambas, 13 e 14, estejam em execução, mas estou praticamente comprometido com a 14 agora, com vários outros serviços rodando no mesmo servidor e simplesmente não posso mexer mais neles - então minha única esperança é instalar uma instância 13 e REBAIXAR a do Discourse…
  • Tentei o comando de reconstrução, mas simplesmente não funcionou. Você está se referindo ao que compartilhei acima, certo?: /var/discourse/launcher rebuild app,

Portanto, essa saída contém uma “Observação”, mas não é um erro. Você deve esperar a mensagem “detached head” toda vez que fizer checkout de uma versão que não seja a mais recente.

1 curtida

Sei exatamente como você se sente.

Essa não é minha área de especialização. É muito mais fácil atualizar o contêiner para ter as ferramentas do pg14. Desde que você não queira restaurar para um site pg13, você ficará bem.

Como não funcionou? E se isso estiver no seu servidor de produção, talvez você queira fazer isso primeiro em um servidor de teste.