Problemas ao atualizar de 3.0.3 para 3.0.4: Erro 523

Olá!

Encontrei um problema ao tentar atualizar minha instalação com a utilidade launcher.

Recebo um erro 523 quando o contêiner de build tenta alterar a propriedade das imagens carregadas… Alguma ideia?

Aqui está o log:

$ sudo ./launcher rebuild app
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20230502-0058: Pulling from discourse/base
Digest: sha256:fa95da36c3d3a582d644b139ec678f5778d745697454bc86f598c689031b30aa
Status: Image is up to date for discourse/base:2.0.20230502-0058
docker.io/discourse/base:2.0.20230502-0058
/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups.rb
/usr/local/bin/pups --stdin

.....

Switched to a new branch 'stable'
I, [2023-06-18T16:43:24.458070 #1]  INFO -- : Branch 'stable' set up to track remote branch 'stable' from 'origin'.

I, [2023-06-18T16:43:24.458386 #1]  INFO -- : 
I, [2023-06-18T16:43:24.469320 #1]  INFO -- : > cd /var/www/discourse & sudo -H -E -u discourse git config user.discourse-version stable
I, [2023-06-18T16:43:24.469386 #1]  INFO -- : 
I, [2023-06-18T16:43:24.472481 #1]  INFO -- : > cd /var/www/discourse & mkdir -p tmp
I, [2023-06-18T16:43:24.472660 #1]  INFO -- : 
I, [2023-06-18T16:43:24.476232 #1]  INFO -- : > cd /var/www/discourse & chown discourse:www-data tmp
I, [2023-06-18T16:43:24.476303 #1]  INFO -- : 
I, [2023-06-18T16:43:24.479386 #1]  INFO -- : > cd /var/www/discourse & mkdir -p tmp/pids
I, [2023-06-18T16:43:24.479449 #1]  INFO -- : 
I, [2023-06-18T16:43:24.482943 #1]  INFO -- : > cd /var/www/discourse & mkdir -p tmp/sockets
I, [2023-06-18T16:43:24.483012 #1]  INFO -- : 
I, [2023-06-18T16:43:24.486152 #1]  INFO -- : > cd /var/www/discourse & touch tmp/.gitkeep
I, [2023-06-18T16:43:24.486220 #1]  INFO -- : 
I, [2023-06-18T16:43:24.489788 #1]  INFO -- : > cd /var/www/discourse & mkdir -p                    /shared/log/rails
I, [2023-06-18T16:43:24.489954 #1]  INFO -- : 
I, [2023-06-18T16:43:24.495214 #1]  INFO -- : > cd /var/www/discourse & bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2023-06-18T16:43:24.495285 #1]  INFO -- : 
I, [2023-06-18T16:43:24.500211 #1]  INFO -- : > cd /var/www/discourse & bash -c "ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log /var/www/discourse/log"
I, [2023-06-18T16:43:24.500283 #1]  INFO -- : 
I, [2023-06-18T16:43:24.504652 #1]  INFO -- : > cd /var/www/discourse & bash -c "mkdir -p           /shared/{uploads,backups}"
I, [2023-06-18T16:43:24.504738 #1]  INFO -- : 
I, [2023-06-18T16:43:24.512836 #1]  INFO -- : > cd /var/www/discourse & bash -c "ln    -s           /shared/{uploads,backups} /var/www/discourse/public"
I, [2023-06-18T16:43:24.512942 #1]  INFO -- : 
I, [2023-06-18T16:43:24.518383 #1]  INFO -- : > cd /var/www/discourse & bash -c "mkdir -p           /shared/tmp/{backups,restores}"
I, [2023-06-18T16:43:24.518453 #1]  INFO -- : 
I, [2023-06-18T16:43:24.523090 #1]  INFO -- : > cd /var/www/discourse & bash -c "ln    -s           /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2023-06-18T16:43:24.523195 #1]  INFO -- : 
I, [2023-06-18T16:43:24.523195 #1]  INFO -- : > cd /var/www/discourse & chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
chown: /shared/uploads/default/optimized/1X: Unknown error 523
chown: /shared/uploads/default/original/1X: Unknown error 523
I, [2023-06-18T16:43:41.385629 #1]  INFO -- : 

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp failed with return #<Process::Status: pid 135 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"code", "cmd"=>["sudo -H -E -u discourse git reset --hard", "sudo -H -E -u discourse git clean -f", "sudo -H -E -u discourse bash -c '\n  set -o errexit\n  if [ $(git rev-parse --is-shallow-repository) == \"true\" ]; then\n      git remote set-branches --add origin main\n      git remote set-branches origin $version\n      git fetch --depth 1 origin $version\n  else\n      git fetch --tags --prune-tags --prune --force origin\n  fi\n'", "sudo -H -E -u discourse bash -c '\n  set -o errexit\n  if [[ $(git symbolic-ref --short HEAD) == $version ]] ; then\n      git pull\n  else\n      git -c advice.detachedHead=false checkout $version\n  fi\n'", "sudo -H -E -u discourse git config user.discourse-version $version", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2 curtidas

Não consigo encontrar nada útil sobre este erro. Qual é a sua distribuição e versão do SO? Que tipo de armazenamento está em uso para uploads?

Espero que você já saiba que usar a trilha ‘stable’ é uma tática incomum - quase todo mundo usa a trilha ‘tests-passed’. Veja
Por que o Discourse sempre instala versões “beta” por padrão?

Você está usando S3 e, se sim, o nome do seu bucket está configurado corretamente?

Mas não deveria falhar mais, então isso é irrelevante na minha opinião?

Pode ser visto como falhando menos, se pouquíssimas instalações usarem stable. Além disso, eu queria ter certeza de que @gmoirod estava ciente da situação - supondo que algumas pessoas que executam stable o estejam executando sem saber o que é.

Eu entendo. Mas se a instalação dele está falhando agora, minha estimativa é que pular para a 3.1.0beta5 vai piorar muito as coisas. Então, vamos focar no problema primeiro.

1 curtida

Eu executo o Discourse como contêineres docker sobre um servidor Debian 11.
Meus uploads estão em um compartilhamento NFS. Sempre foi assim e eu nunca tive esse problema antes.

Sim, eu vi várias coisas sobre isso… Tenho que fazer isso um dia…
Eu sou meio que um cara do Debian, sabe. Mantenha o “stable” para produção.

Aí está. E esse compartilhamento está acessível de dentro do contêiner no momento?

Meu contêiner Discourse 3.0.3 em execução real:

            {
                "Type": "bind",
                "Source": "/nfsdata/discourse-data-shared/uploads",
                "Destination": "/shared/uploads",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },

Dentro do contêiner, as propriedades e permissões parecem boas

$ sudo docker exec app sh -c "ls -al /shared/uploads /shared/uploads/default/optimized/1X /shared/uploads/default/original/1X"
/shared/uploads:
total 4
drwxr-xr-x  2 discourse www-data    0 Jun 20 20:07 .
drwxr-xr-x 10 root      root     4096 Mar  8 16:29 ..
drwxr-xr-x  2 discourse www-data    0 Jun  8  2022 default
drwxr-xr-x  2 discourse www-data    0 Mar  8 17:34 tombstone

/shared/uploads/default/optimized/1X:
total 17094
drwxr-xr-x 2 discourse www-data      0 Mar 22 11:30 .
drwxr-xr-x 2 discourse www-data      0 Mar  8 16:18 ..
-rw-r--r-- 1 discourse www-data  54700 Mar  8 16:52 00964701d199ec0d6d3dd5269c842e1f0bb7e7a1_2_1035x456.png
-rw-r--r-- 1 discourse www-data    205 Mar  8 16:52 00964701d199ec0d6d3dd5269c842e1f0bb7e7a1_2_10x10.png
.....

/shared/uploads/default/original/1X:
total 17932
drwxr-xr-x 2 discourse www-data       0 Apr 23 11:42 .
drwxr-xr-x 2 discourse www-data       0 Jun  8  2022 ..
-rw-r--r-- 1 discourse www-data   35706 Nov 18  2022 00964701d199ec0d6d3dd5269c842e1f0bb7e7a1.png
-rwxr-xr-x 1 discourse www-data   17112 Jul  4  2022 00a82b03ffbcdf56e34f86adbec263e12573f49b.png

Além disso, sou capaz de fazer upload de novas imagens no Discourse 3.0.3 em execução

Precisão: Não tenho SELinux/AppArmor ativado

Espero que isso não esteja relacionado :sob: #102728 - cvs: unknown error 523 - Debian Bug report logs

Na verdade, este não é um problema com o repositório no NFS. É um problema
com o diretório do CLIENTE montado no NFS.

O problema acabou sendo um bug do NFS no kernel do Linux, então você pode
provavelmente fechar este bug.

O fato de algo ser o principal resultado no Google não significa que seja o melhor resultado.

Data: Qui, 28 Jun 2001 20:03:01 UTC

Você consegue executar chown de dentro do contêiner, ou seja, executar o comando com falha manualmente?

sudo docker exec app sh -c "chown -R discourse:discourse /shared/uploads/default/optimized/1X"

Receio que sim (corrigi o comando, pois o executado inicialmente)…

$ docker exec -it app bash
app:/$ cd /var/www/discourse
app:/var/www/discourse$ chown -R discourse:www-data /shared/uploads
app:/var/www/discourse$ echo $?
0

Demorou, mas sem erros.

Existe alguma diferença na imagem do docker executada em 3.0.3 e na usada para construir a imagem em 3.0.4?

As versões da imagem Docker não estão vinculadas às versões do Discourse. Além disso, depende de como você reconstruiu antes, então é difícil dizer.

Minha imagem real 3.0.3 me dá

# docker image inspect local_discourse/app | grep 'discourse/base'
            "Image": "discourse/base:2.0.20230409-0052",

E a que está em erro usou:

Status: Image is up to date for discourse/base:2.0.20230502-0058

Vou verificar a diferença :mag:

Droga!
Não consigo ver nada relacionado: Comparing 3d317b7f58e8201912972afa3910b6c4b9ad8c75...main · discourse/discourse_docker · GitHub

Ok, há definitivamente um problema com a imagem base.
Forcei o uso de discourse/base:2.0.20230409-0052 no launcher e funcionou perfeitamente.

# git diff launcher
diff --git a/launcher b/launcher
index 3e1a1c4..8a989b8 100755
--- a/launcher
+++ b/launcher
@@ -92,7 +92,7 @@ kernel_min_version='4.4.0'
 config_file=containers/"$config".yml
 cidbootstrap=cids/"$config"_bootstrap.cid
 local_discourse=local_discourse
-image="discourse/base:2.0.20230502-0058"
+image="discourse/base:2.0.20230409-0052"
 docker_path=`which docker.io 2> /dev/null || which docker`
 git_path=`which git`

Alguém consegue ver a alteração que causou isso?

Acredite ou não, acabei de reconstruir novamente com discourse/base:2.0.20230502-0058 e passou… :man_shrugging:

2 curtidas

Não tenho problemas em acreditar em travessuras de computador :upside_down_face:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.