3.0.3から3.0.4へのアップデート中に問題が発生しました:エラー523

こんにちは!

launcher ユーティリティを使用してインストールをアップグレードしようとした際に問題が発生しました。

アップロードされた画像の所有権を変更しようとすると、ビルドコンテナでエラー 523 が発生します。
何か考えはありますか?

ログはこちらです:

$ 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

このエラーについて有用な情報が見つかりません。OSのディストリビューションとバージョンは何ですか?アップロードに使用されているストレージの種類は何ですか?

「stable」トラックを使用することが珍しい戦術であることは、すでに承知されていると思いますが、ほとんどの人が「tests-passed」トラックを実行しています。以下を参照してください。
なぜDiscourseは常にデフォルトで「ベータ」バージョンをインストールするのですか?

S3を使用していますか?もしそうなら、バケット名は正しく設定されていますか?

しかし、もっと失敗するはずはないので、これは私の意見では無関係ですか?

安定版を使用するインストールが非常に少ない場合、失敗が少なく見なされる可能性があります。また、@gmoirod が状況を認識していることを確認したかったのです。安定版を実行している一部の人が、それが何であるかを知らずに実行していると推測しています。

それは理解できます。しかし、彼のインストールが現在失敗している場合、3.1.0beta5にジャンプすると状況はさらに悪化すると私は見積もっています。ですから、まずは問題に焦点を当てましょう。

「いいね!」 1

Debian 11サーバー上でDockerコンテナとしてDiscourseを実行しています。
アップロードは共有NFSマウント上で行っています。これは以前からずっとそうであり、以前はこの問題が発生したことはありませんでした。

はい、この件についてはいくつか見ました…いつかはやらなければなりません…。
私はDebianの人間のようなものです。本番環境では「stable」を使用します。

これでわかりました。そして、そのマウントは現在コンテナ内からアクセス可能ですか?

私の実際の実行中の Discourse 3.0.3 コンテナ:

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

コンテナ内では、所有権と権限は問題ないようです。

$ 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

さらに、実行中の Discourse 3.0.3 で新しい画像をアップロードできます。

精度:SELinux/AppArmor は有効にしていません

関係ないことを願っています :sob: #102728 - cvs: unknown error 523 - Debian Bug report logs

実際、これはNFS上のリポジトリの問題ではありません。これはNFSマウントされたクライアントディレクトリの問題です。

問題はLinuxカーネルのNFSバグであることが判明したので、このバグは閉じることができるでしょう。

Googleでトップの結果が表示されるからといって、それが最良の結果であるとは限りません。

日付: Thu, 28 Jun 2001 20:03:01 UTC

コンテナ内からchownを実行できますか?つまり、失敗したコマンドを手動で実行できますか?

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

残念ながら、実行できました(最初に実行されたコマンドを修正しました)。…

$ 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

時間がかかりましたが、エラーはありませんでした。

3.0.3 で実行されている Docker イメージと、3.0.4 でイメージをビルドするために使用された Docker イメージに違いはありますか?

Docker イメージのバージョンは Discourse のバージョンとは連動していません。また、以前にどのように再ビルドしたかにもよるため、断定は困難です。

私の実際の3.0.3イメージは以下を生成します。

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

エラーが発生したイメージは以下を使用しました。

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

差分を確認します :mag:

しまった!
関連するものは何も見つかりません: Comparing 3d317b7f58e8201912972afa3910b6c4b9ad8c75...main · discourse/discourse_docker · GitHub

ベースイメージに問題があることは間違いありません。
launcherでdiscourse/base:2.0.20230409-0052の使用を強制したところ、うまく機能しました。

# 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`

この変更の原因がわかる方はいらっしゃいますか?

信じるか信じないかはあなた次第ですが、discourse/base:2.0.20230502-0058 で再構築したところ、パスしましたよ :man_shrugging:

「いいね!」 2

コンピューターのいたずらは信じられないことではありません :upside_down_face:

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