weseek / growi

:anchor: GROWI - Team collaboration software using markdown
https://growi.org
MIT License
1.33k stars 220 forks source link

Bug: Migration is failed on v3.6.0-RC when authentication to MongoDB is enabled #1443

Closed mzch closed 4 years ago

mzch commented 4 years ago

Environment

Host

item version
OS Debian 10 (Busteer)
GROWI 3.6.0-RC
node.js v10.17.0 and v12.13.0
npm 6.11.3
Using Docker no
Using growi-docker-compose no

(Accessing https://{GROWI_HOST}/admin helps you to fill in above versions)

How to reproduce? (再現手順)

  1. yarn && npm run build:prod && npm run server:prod

What happens? (症状)

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'server:prod' ]
2 info using npm@6.12.0
3 info using node@v12.13.0
4 verbose run-script [ 'preserver:prod', 'server:prod', 'postserver:prod' ]
5 info lifecycle growi@3.6.0-RC~preserver:prod: growi@3.6.0-RC
6 verbose lifecycle growi@3.6.0-RC~preserver:prod: unsafe-perm in lifecycle true
7 verbose lifecycle growi@3.6.0-RC~preserver:prod: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/srv/growi/growi/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
8 verbose lifecycle growi@3.6.0-RC~preserver:prod: CWD: /srv/growi/growi
9 silly lifecycle growi@3.6.0-RC~preserver:prod: Args: [ '-c', 'npm run migrate' ]
10 silly lifecycle growi@3.6.0-RC~preserver:prod: Returned: code: 1  signal: null
11 info lifecycle growi@3.6.0-RC~preserver:prod: Failed to exec preserver:prod script
12 verbose stack Error: growi@3.6.0-RC preserver:prod: `npm run migrate`
12 verbose stack Exit status 1
12 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
12 verbose stack     at EventEmitter.emit (events.js:210:5)
12 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
12 verbose stack     at ChildProcess.emit (events.js:210:5)
12 verbose stack     at maybeClose (internal/child_process.js:1021:16)
12 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
13 verbose pkgid growi@3.6.0-RC
14 verbose cwd /srv/growi/growi
15 verbose Linux 4.19.0-6-amd64
16 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "server:prod"
17 verbose node v12.13.0
18 verbose npm  v6.12.0
19 error code ELIFECYCLE
20 error errno 1
21 error growi@3.6.0-RC preserver:prod: `npm run migrate`
21 error Exit status 1
22 error Failed at the growi@3.6.0-RC preserver:prod script.
22 error This is probably not a problem with npm. There is likely additional logging output above.
23 verbose exit [ 1, true ]

What is the expected result? (期待される動作)

Note

yuki-takei commented 4 years ago

@mzch 情報お寄せいただきありがとうございます。 申し訳ないのですがこちらで再現しないので、もう少し詳しい情報を取得していただけますでしょうか。

to version のコミット GROWI リポジトリが指している「3.6.0-RC」のコミットハッシュを教えてください。

from version のコミット どのバージョンから v3.6.0-RC へのバージョンアップか教えてください。 そちらも RC 版である場合は、コミットハッシュを教えてください。

ログについて サーバー側の標準出力に migrate-mongo up -f config/migrate.js というコマンドのログ等が何かしら出るはずなのですが、そちらは確認可能でしょうか?今貼っていただいている出力形式に馴染みがないのですが、「How to reproduce?」に貼っていただいたコマンドは bash 形式で実行されているのでしょうか?

mzch commented 4 years ago

commit d63c5fbe5342829c67724d10e6613a0e675b7459 になるようです。 ログは、npm のエラーログです。コマンドは、bash からコマンドラインに入力して実行しています。今試したところ、最後の npm run server:prod で以下の出力を得ました。

> growi@3.6.0-RC preserver:prod /srv/growi/growi
> npm run migrate

> growi@3.6.0-RC migrate /srv/growi/growi
> npm run migrate:up

> growi@3.6.0-RC migrate:up /srv/growi/growi
> migrate-mongo up -f config/migrate.js

(node:21986) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
ERROR: command find requires authentication
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! growi@3.6.0-RC migrate:up: `migrate-mongo up -f config/migrate.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the growi@3.6.0-RC migrate:up script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /srv/growi/.npm/_logs/2019-12-09T14_24_39_306Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! growi@3.6.0-RC migrate: `npm run migrate:up`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the growi@3.6.0-RC migrate script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /srv/growi/.npm/_logs/2019-12-09T14_24_39_372Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! growi@3.6.0-RC preserver:prod: `npm run migrate`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the growi@3.6.0-RC preserver:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /srv/growi/.npm/_logs/2019-12-09T14_24_39_430Z-debug.log
mzch commented 4 years ago

単独で migrate-mongo up -f config/migrate.js を実行したところ、

ERROR: command find requires authentication

と出るので、どうやら認証に失敗しているようです。環境変数 MONGO_URI を設定しても結果は変わりませんでした。

yuki-takei commented 4 years ago

@mzch

確認なのですが、今回の状況は v3.6.0-RC のクリーンインストールでしょうか?それとも v3.6.0-RC 以前のバージョンでの正常動作実績のある環境から v3.6.0-RC へのアップグレードで起こっている問題でしょうか?

v3.5.20 付近で MONGO_URI の parse 方法を変えたのが原因かもしれません。

後者の場合、正常動作していたバージョンを教えていただけると助かります。

mzch commented 4 years ago

v3.5.9 からのアップグレードです。

yuki-takei commented 4 years ago

ここでデグレしたっぽい https://github.com/weseek/growi/pull/1373/files#diff-55b124839e04c5d7025c7864bdc479d6R20

yuki-takei commented 4 years ago

@mzch v3.5.24 へのアップグレードは問題なく可能なんじゃないかと思っていますが、もしお時間ありましたら試験いただけると嬉しいです。

mzch commented 4 years ago

v3.5.25 へは問題なく移行できました。

yuki-takei commented 4 years ago

ありがとうございます。問題特定できました。v3.6.0 の正式リリースまでには直します。少々お待ちください。

mzch commented 4 years ago

3.6.0 を試したところ、MongoDB から syslog に以下のエラーが出て起動しません。

Dec 13 01:26:23 Macmini docker-compose[18874]: #033[33mmongo_1          |#033[0m 2019-12-12T16:26:23
.866+0000 I  ACCESS   [conn12] Supported SASL mechanisms requested for unknown user 'growi@admin'
Dec 13 01:26:23 Macmini docker-compose[18874]: #033[33mmongo_1          |#033[0m 2019-12-12T16:26:23
.872+0000 I  ACCESS   [conn12] SASL SCRAM-SHA-1 authentication failed for growi on admin from client
 172.18.0.1:56212 ; UserNotFound: Could not find user "growi" for db "admin"

3.5.x とは認証周りが変わっているのでしょうか。