# 2.9.0.beta14에서 3.1.0.beta로 업그레이드 실패

**URL:** https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551
**Category:** Self-hosting
**Created:** [1월 22, 2023, 7:16오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551 "2023-01-22T19:16:24Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![xyzzy](https://avatars.discourse-cdn.com/v4/letter/x/e36b37/32.png) [@xyzzy](https://meta.discourse.org/u/xyzzy)
#### Post date: [1월 22, 2023, 7:16오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/1 "2023-01-22T19:16:24Z")

</div>

저는 매월 업그레이드를 진행하며, 항상 먼저 몇몇 개발 시스템에서 테스트한 후 프로덕션 환경에 적용합니다.

이번 달 업그레이드 주기에서 첫 번째 개발 시스템에서 업그레이드가 실패했습니다. docker\_manager는 정상적으로 업그레이드되었지만, Discourse 업그레이드는 다음과 같은 오류로 실패했습니다:

`죄송합니다. Discourse 업그레이드 중 오류가 발생했습니다. 아래 로그를 확인해 주세요.`

Discourse 앱이 완전히 다운된 상태입니다(‘Oops’ 500 오류 페이지가 표시되고 있음).

화면 로그에 포함된 내용은 다음과 같습니다:

```plaintext
********************************************************
 ***Please be patient, next steps might take a while***
 ********************************************************
Cycling Unicorn, to free up memory
Restarting unicorn pid: 50
Waiting for Unicorn to reload.
Waiting for Unicorn to reload..
Waiting for Unicorn to reload...
Waiting for Unicorn to reload....
Waiting for Unicorn to reload.....
Waiting for Unicorn to reload......
Waiting for Unicorn to reload.......
Waiting for Unicorn to reload........
Waiting for Unicorn to reload.........
Waiting for Unicorn to reload..........
Waiting for Unicorn to reload...........
Stopping 7 Unicorn worker(s), to free up memory
Stopping job queue to reclaim memory, master pid is 4069
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
 t [tag update] latest-release -> latest-release
 * [new tag] v2.8.14 -> v2.8.14
 * [new tag] v3.0.0 -> v3.0.0
HEAD is now at 666536cbd1 DEV: Prefer \A and \z over ^ and $ in regexes (#19936)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
Bundler 2.3.13 is running, but your lockfile was generated with 2.4.1. Installing Bundler 2.4.1 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.4.1
Installing bundler 2.4.1
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Spinning up 7 Unicorn worker(s) that were stopped initially

```

지금까지 업그레이드 오류를 경험해 본 적이 없어서 다음에 무엇을 해야 할지 명확하지 않습니다. 그리고 만약 프로덕션 환경에서 이런 일이 발생했다면 어떻게 해야 했을까요?

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [1월 22, 2023, 7:35오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/2 "2023-01-22T19:35:52Z")

</div>

실행 중인 운영체제(배포판) 버전을 확인해 보시는 것을 제안합니다. 구버전일 수 있고, Ruby 3가 없어 문제가 발생하는 것일 수 있습니다.

수정: 잠깐, 제가 혼동하고 있는 건 아닌지 모르겠네요. 프로덕션 환경에서는 모든 작업이 Docker 컨테이너 내에서 이루어지며, 컨테이너에는 필요한 모든 것이 올바른 버전으로 설치되어 있어야 합니다. 다른 종류의 설정을 사용하고 계신 건가요?

---

<div class="post-metadata">

### Author: ![xyzzy](https://avatars.discourse-cdn.com/v4/letter/x/e36b37/32.png) [@xyzzy](https://meta.discourse.org/u/xyzzy)
#### Post date: [1월 22, 2023, 7:42오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/3 "2023-01-22T19:42:12Z")

</div>

참고로, 개발용 머신은 Ubuntu 20.04 LTS입니다. 프로덕션은 22.04 LTS라고 생각합니다.

다만, 저는 OS에 Ruby를 직접 설치해 본 적이 없습니다. 그 모든 작업은 docker 컨테이너 안에서 자동으로 처리되는 것 같습니다.

수정: 프로덕션도 20.04 LTS입니다.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [1월 22, 2023, 7:52오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/4 "2023-01-22T19:52:49Z")

</div>

네, 죄송합니다. 제가 혼동하고 있었던 것 같습니다. 커맨드라인으로 업그레이드를 해야 하는 경우는 드물지 않습니다. 시도해 보셨나요?

```plaintext
cd /var/discourse
git pull
./launcher rebuild app

```

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [1월 22, 2023, 8:38오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/5 "2023-01-22T20:38:29Z")

</div>

그것이 개발용 설치라면, 프로덕션 환경의 Docker 설치와 동일한 조건을 반영하지 못할 것입니다. 개발 환경에는 구버전의 Ruby(2.7)가 사용되고 있는 반면, Discourse는 최근 이미지에서 Ruby 버전을 3.1로 상향 조정했습니다.

---

<div class="post-metadata">

### Author: ![xyzzy](https://avatars.discourse-cdn.com/v4/letter/x/e36b37/32.png) [@xyzzy](https://meta.discourse.org/u/xyzzy)
#### Post date: [1월 22, 2023, 8:48오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/6 "2023-01-22T20:48:14Z")

</div>

감사합니다! 앱을 다시 빌드한 것이 효과를 본 것 같습니다. 프로덕션에 패치하기 전에 다른 개발 시스템에서 먼저 테스트해 보고 있습니다.

---

<div class="post-metadata">

### Author: ![xyzzy](https://avatars.discourse-cdn.com/v4/letter/x/e36b37/32.png) [@xyzzy](https://meta.discourse.org/u/xyzzy)
#### Post date: [1월 22, 2023, 8:49오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/7 "2023-01-22T20:49:20Z")

</div>

정리하자면, 여기서 말하는 "개발"이란 단순히 프로덕션과 같지만 내부 개발 시스템에서 실행되는 것을 의미합니다.

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [1월 22, 2023, 8:50오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/8 "2023-01-22T20:50:25Z")

</div>

bash를 통해 업그레이드를 진행한 후 문제가 해결되었나요?

---

<div class="post-metadata">

### Author: ![xyzzy](https://avatars.discourse-cdn.com/v4/letter/x/e36b37/32.png) [@xyzzy](https://meta.discourse.org/u/xyzzy)
#### Post date: [1월 22, 2023, 9:26오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/9 "2023-01-22T21:26:02Z")

</div>

네! 개발 시스템과 프로덕션 환경 모두에서 정상적으로 작동했어요. 감사합니다!

---

<div class="post-metadata">

### Author: ![iidbae](https://avatars.discourse-cdn.com/v4/letter/i/a183cd/32.png) [@iidbae](https://meta.discourse.org/u/iidbae)
#### Post date: [1월 23, 2023, 4:44오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/10 "2023-01-23T16:44:04Z")

</div>

이 문제는 내 프로덕션 환경에서도 발생했습니다.

2.9.0.beta14 (2b9fa41a6e)에서 3.1.0.beta1로 업데이트할 때입니다.

```plaintext
Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

```

아래 방법으로 해결했습니다 ☝

```plaintext
cd /var/discourse
git pull
./launcher rebuild app

```

감사합니다

---

<div class="post-metadata">

### Author: ![Wingtip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/wingtip/32/102039_2.png) [@Wingtip](https://meta.discourse.org/u/Wingtip)
#### Post date: [1월 25, 2023, 9:20오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/11 "2023-01-25T21:20:09Z")

</div>

여기서도 같은 문제가 발생했어요. 업그레이드가 실패하면서 포럼이 500 오류로 마비됐습니다. 이 문제가 벌써 3일 동안이나 지속되고 있다는 게 솔직히 좀 놀랍네요.

어쨌든 지금은 CLI 리빌드를 실행 중인데, 다행히 잘 작동하길 바랍니다. 만약 안 되면, 제 어머니가 나를 바보로 키우신 건 아니니까 미리 VM 스냅샷을 받아뒀습니다.

[이 게시글](https://meta.discourse.org/t/problems-with-self-hosted-upgrade-to-3-1-0-beta2/252916/3?u=wingtip)을 보면 루비를 3.0으로 업그레이드했는데, 이로 인해 웹 업그레이드가 완전히 깨진 것 같습니다. 불행히도 소프트웨어는 여전히 사용자가 시도해 보게 허용하고, 그 결과 호스트가 HTTP 500 오류를 얼마나 빠르게 반환하는지 지켜보게 됩니다.

수정: CLI 리빌드가 실제로 잘 작동했습니다, 후!

관련된 오류:

```plaintext
Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'

```

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2월 24, 2023, 9:20오후 UTC](https://meta.discourse.org/t/failed-upgrade-from-2-9-0-beta14-to-3-1-0-beta/252551/12 "2023-02-24T21:20:54Z")

</div>

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