GitLab 升級到 17.3 碰到的問題

| | 0 Comments| 08:53
Categories:

上個禮拜 GitLab 升級到 17.3 了(官方部落格)。由於 Heresy 是使用 Docker 版本,所以在升級上一直都算簡單,只要升級 Docker image、讓他去跑更新就好。

不過,這次從 17.2.2 升級到 17.3 的時候,倒是又久違地碰到更新之後 Docker 容器會不斷重啟的問題了。

而透過 gitlab logs gitlab 這樣的指令去看紀錄的話,可以發現他是死在 migrate gitlab-rails database、也就是遷移 gitlab-rail 資料庫這項工作;下面是一些紀錄(這邊把時間抽掉了):

[TIME] FATAL: Stacktrace dumped to 
/opt/gitlab/embedded/cookbooks/cache/cinc-stacktrace.out
[TIME] FATAL: -----------------------------------------------------
[TIME] FATAL: PLEASE PROVIDE THE CONTENTS OF THE stacktrace.out FILE
(above) IF YOU FILE A BUG REPORT
[TIME] FATAL: ------------------------------------------------------
[TIME] FATAL: Mixlib::ShellOut::ShellCommandFailed:
rails_migration[gitlab-rails] (gitlab::database_migrations line 51)
had an error: Mixlib::ShellOut::ShellCommandFailed:
bash_hide_env[migrate gitlab-rails database]
(gitlab::database_migrations line 20) had an error:
Mixlib::ShellOut::ShellCommandFailed:
Expected process to exit with [0], but received '1'
Recipe: gitlab::database_migrations
  * ruby_block[check remote PG version] action nothing 
(skipped due to action :nothing) * rails_migration[gitlab-rails] action run[TIME] WARN:
gitlab-rails does not have a log_group or default logdir mode defined.
Setting to 0700. * bash_hide_env[migrate gitlab-rails database] action run [execute] rake aborted! StandardError: An error has occurred, this and all later
migrations canceled: PG::InternalError: ERROR: no unpinned buffers available

再把虛擬機器還原後再跑了一次,還是一樣的錯誤,所以問題應該還算滿明確的?找了一下後,在官方論壇上果然也有人有同樣的問題。在《Upgrade 17.2.2 -> 17.3 fails at DB migration》裡面就有人提出同樣的問題,而且也已經有人回答可用的答案了。

這邊看來原因很單純,就是 PostgreSQL 預設的 shared memory buffers 是 256MB、很有可能不夠大,所以才導致失敗。

所以解決的方法,就是把它改大就好了!

這邊基本上就是去編輯 GitLab 的設定檔、gitlab.rb(在 GitLab 裡面的話,是 /etc/gitlab/gitlab.rb),找到:

##! **recommend value is 1/4 of total RAM, up to 14GB.**
# postgresql['shared_buffers'] = "256MB"

然後把他的註解拿掉、並把 256MB 改大了~
(這邊的 gitlab.rb 如果不是系統產生、而是一開始就自己寫的話,可能會沒有上面的內容、這時候會需要自己修改)

Heresy 這邊是改成:

##! **recommend value is 1/4 of total RAM, up to 14GB.**
postgresql['shared_buffers'] = "1024MB"

修改好之後、再重新啟動 GitLab 的 Docker 容易、應該就可以正常完成升級了。

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *