1. 程式人生 > 其它 >Gitlab 進首頁報錯500 Whoops。 訪問倉庫錯誤碼503

Gitlab 進首頁報錯500 Whoops。 訪問倉庫錯誤碼503

一、背景

可能由於機器突然斷過電,或者系統問題。部署的Gitlab在某天執行時突然不正常,具體表現在通過瀏覽器進首頁時報錯(錯誤碼為500),訪問其中一個倉庫錯誤碼為503。如下:

後來發現無法備份,備份到某個倉庫的時候會終止。

查了一圈有人說是由於斷電導致某個檔案損壞了,繼而引發的問題。

版本:

系統:ubuntu16.04

GitLab版本:10.7.3

二、部分日誌:

備份時的日誌:(如下就是xxx_lib倉庫出了問題)

xxx/TEST_Proj1 … [DONE] xxx/TEST_Proj1.wiki … [SKIPPED] xxx/xxx_lib … rake aborted! Gitlab::Git::CommandError: 13:HasLocalBranches: cmd wait: exit status 128
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/git/repository.rb:1397:in rescue in gitaly_migrate' /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/git/repository.rb:1390:ingitaly_migrate' /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/git/repository.rb:1546:in uncached_has_local_branches?' /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/git/repository.rb:240:inblock in has_local_branches?'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/utils/strong_memoize.rb:26:in strong_memoize' /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/git/repository.rb:239:inhas_local_branches?' /opt/gitlab/embedded/service/gitlab-rails/app/models/repository.rb:512:in has_visible_content?' /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/repository_cache_adapter.rb:17:inblock (2 levels) in cache_method'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/repository_cache.rb:22:in `fetch'
  訪問首頁時的日誌:
Read fragment views/routes/55-20180725054749729480000/projects/36-20180725054749660386000/root/index/application_settings/1-20180505055609666165000/cross-project:true/v2.5/6e9f3ed1415f1c03e7a094b52c2ed709 (0.2ms) Read fragment views/routes/238-20190905112740764906000/projects/202-20190905112740761259000/root/index/application_settings/1-20180505055609666165000/cross-project:true/v2.5/6e9f3ed1415f1c03e7a094b52c2ed709 (0.3ms) Read fragment views/routes/425-20220419091855157945000/projects/373-20220419091855154119000/root/index/application_settings/1-20180505055609666165000/cross-project:true/v2.5/6e9f3ed1415f1c03e7a094b52c2ed709 (0.2ms) Read fragment views/routes/43-20180620033208948092000/projects/27-20180620033208941965000/root/index/application_settings/1-20180505055609666165000/cross-project:true/v2.5/6e9f3ed1415f1c03e7a094b52c2ed709 (0.1ms) Completed 500 Internal Server Error in 181ms (ActiveRecord: 12.2ms) ActionView::Template::Error (failed to parse loose object: invalid header): 19: - if project.creator && use_creator_avatar 20: = image_tag avatar_icon_for_user(project.creator, 40), class: "avatar s40", alt:'' 21: - else 22: = project_icon(project, alt: '', class: 'avatar project-avatar s40') 23: .project-details 24: %h3.prepend-top-0.append-bottom-0 25: = link_to project_path(project), class: 'text-plain' do lib/gitlab/git/repository.rb:1692:in target' lib/gitlab/git/repository.rb:1692:inblock in branches_filter' lib/gitlab/git/repository.rb:1690:in each' lib/gitlab/git/repository.rb:1690:ineach' lib/gitlab/git/repository.rb:1690:in map' lib/gitlab/git/repository.rb:1690:inbranches_filter' lib/gitlab/git/repository.rb:173:in `block in branches'
 

三、解決方法

0)先在本地把xxx_lib倉庫備份好。

1)進入Gitlab的存放倉庫的目錄,找到指定的倉庫清空。

/var/opt/gitlab/git-data/repositories/xxx_User/  (xxx_User為使用者名稱)

在此資料夾中把 xxx_lib.git  和 xxx_lib.wiki.git刪掉。類似於下面這樣,這兩個就是一個倉庫的資料。

 2)刪掉後,就可以通過瀏覽器訪問這個倉庫,只不過變成一個空倉庫了。

 

四、總結

1)要定期備份。 2)存放程式碼的機器要可靠,包含不限於系統穩定性和電源穩定。