Atualizações via UI desabilitadas - e não estão sendo reabilitadas após upgrade via SSH

Recebi esta mensagem ao tentar atualizar pela interface do usuário:

Após vários git pulls e reconstruções, ainda recebo a mesma mensagem. Alguma dica?

Será que preciso fazer isso:

Isso é para um fórum antigo e bem estabelecido.

Cc @pacharanero

Esta foi uma instalação padrão? Poderia ser algo como executar a atualização no servidor errado? A reconstrução falhou e você reiniciou o contêiner antigo? Não tenho palpites melhores.

Você deve manter seu sistema operacional atualizado, conforme recomendado no tópico que você vinculou, mas isso não está relacionado ao problema que você descreve.

Isso me intrigou em algumas ocasiões quando a atualização da GUI não parece ser redefinida e nos direciona a fazer login via SSH, mesmo quando isso acabou de ser feito literalmente.

Foi uma instalação padrão, mas a instalação original foi em 2014, nos primórdios, quando o Discourse não estava muito tempo fora da versão beta pública.

user@server:/var/discourse$ docker -v
Docker version 19.03.13, build 4484c46d9d

Existe uma versão mais recente do Docker, mas é comum que a versão no Ubuntu atrase um pouco em relação à mais recente.

O SO é totalmente e regularmente atualizado.

Hmm. Há um atraso após a atualização antes que o Discourse verifique se o contêiner foi reconstruído, embora eu nunca tenha sabido que isso afetasse o docker-manager.

Você pode tentar o seguinte:

docker exec app bash -c 'rails runner AdminDashboardGeneralData.refresh_stats

Mas já faz tempo o suficiente que não acho que esse seja o seu problema. Não pode prejudicar, no entanto.

Não me lembro da versão mínima do docker suportada, mas também não acho que seja esse o problema, pelo menos se você não estiver no Ubuntu 16.04.

Há alguma maneira de ser sobre o branch que estamos executando?

Em containers/app.yml estamos selecionando explicitamente tests-passed

Mas é claro que é isso que está rodando DENTRO do container. Isso faria diferença qual é o branch padrão fora do container?

user@server:/var/discourse# git status
On branch master
Your branch is up to date with 'origin/master'.

Antigamente, master era o padrão no GitHub. Agora é main.

Certo. Acho que você poderia tentar

cd /var/discourse
git checkout main

Mas eu não achava que você precisava fazer isso explicitamente.

Que tal

cd /var/discourse
./launcher enter app
cd /var/www/discourse
git status
1 curtida

Isso se relaciona ao discourse_docker, é claro:

:/var/discourse# git remote -v
origin  https://github.com/discourse/discourse_docker.git (fetch)
origin  https://github.com/discourse/discourse_docker.git (push)

O branch foi alterado em agosto de 2021 e está 49 commits atrás do main no momento da escrita: GitHub - discourse/discourse_docker at master

Então você definitivamente quer mudar para o branch main?

No entanto, concordo com @pfaffman e nunca fiz isso explicitamente, então deve ter havido algum script que o fez. Talvez ocorra na próxima reconstrução?

1 curtida

retorna

user@inside-container-app:/var/www/discourse# git status
Refresh index: 100% (30949/30949), done.
On branch tests-passed
Your branch is up to date with 'origin/tests-passed'.

Parece que você está atualizado. E você ainda está recebendo a página Upgrades Disabled?

Sim. Dei uma olhada em outro Discourse que administro, que é um pouco mais antigo e também está no master, e ele também tem a mesma página de Upgrades Desativados.

Dito isso, outro Discourse que configurei em meados de 2022 também está no master e apresenta a tela de atualização normalmente!

Se pudermos obter alguma confirmação de que mudar o branch do discourse_docker para rastrear main resolverá o problema, então estou preparado para tentar. Talvez em um site que só eu uso.

Isso coincidiria aproximadamente com quando comecei a ter comportamentos estranhos em alguns Discourses na época da atualização. (Por causa disso, acabei atualizando todos via SSH todas as vezes, usando Ansible).

É basicamente o que eu sempre faço também, embora cada vez mais eu use o script de atualização do Ansible com https://www.pfaffmanager.com/.

Ok, então eu mudei para rastrear main em um Discourse que uso apenas como meu bloco de notas e diário pessoal, etc.

Antes da mudança, eu estava rastreando master e a página de Upgrade do Admin estava de fato desativada.

Ao mudar para rastrear main e reconstruir, posso confirmar que a interface de Upgrade do Admin voltou a funcionar normalmente.

4 curtidas

Hmmm. Será que isso significa que todas essas instalações antigas precisam mudar seu branch. @Falco, talvez você queira ver isso.

O Launcher altera o branch de main para master automaticamente. Parece que algo estava bloqueando a troca automática, como alterações pendentes no stash.

2 curtidas

Qual a probabilidade disso acontecer em tantas instâncias?

E o que diabos são alterações no stash?

De quantas instâncias estamos falando? Existem milhares de Discourse por aí, e eu não vejo dezenas de relatos desse problema. Pelo menos, não ainda :sweat_smile:

Se alguém tiver um servidor que esteja reproduzindo este bug no momento e puder mantê-lo assim por mais um dia, por favor, responda aqui para que possamos investigar mais a fundo.

1 curtida

Hummm. Isso pode ter algo a ver com isso em nossa instância @nathank
Tenho alguns arquivos operacionais (que não têm nada a ver com o código-fonte do Discourse) no mesmo diretório do repositório Git do Discourse. Se ./launcher tentasse mudar de branch, o Git daria erro, exigindo que eu fizesse stash dessas alterações (ou as confirmasse).

Obrigado @Falco, farei mais investigações. Pode ser que as únicas instâncias do Discourse que seriam afetadas sejam aquelas em que o Git dá um erro por qualquer motivo ao tentar mudar de branch.

4 curtidas

Atualização: Acho que esse problema com alguns arquivos não rastreados *pode ter sido o problema.
Removi os arquivos e me certifiquei de que o comando git checkout main foi bem-sucedido.
Em seguida, executei ./launcher rebuild app e parece ter funcionado.

Pelo que entendi, conforme o que @Falco afirma acima, não acho que seja realmente necessário rastrear main no repositório Discourse. Quando você executa ./launcher rebuild app, o próprio script fará o checkout do branch correto.

3 curtidas

Eu tive alguns Discursos mais antigos que ainda mostravam a página Upgrades Desativados, apesar de ter garantido que

git checkout main
git pull
git checkout master

funcionaram sem erros.

E para estes, eu simplesmente deixei essas instâncias rastreando main e ./launcher rebuild app e funcionou.