12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

続:GitLabのプロジェクト import に苦労した話

Last updated at Posted at 2018-06-04

GitLabのプロジェクトの import に苦労した話

前回 の続きなような続いてないような.

前回はexportに苦労した話でしたが,今回はimportに苦労した話です.(まだ微妙に解決していませんが)
なお,前回エクスポートしたプロジェクトとは別なものです.

インポートできない

エクスポートは 前回 の経験を活かし,無事問題なく乗り切った.
しかし,インポートしてみると…

image.png

エラーメッセージ全文
Error importing repository into smilezemi/{project_name} - tar (child): [REPO EXPORT PATH]/uploads/db1eb959a204dc2b92*****a3994f56a: Cannot open: No such file or directory 
tar (child): Error is not recoverable: exiting now 
tar: Child returned status 2 
tar: Error is not recoverable: exiting now , Unable to decompress [REPO EXPORT PATH]/uploads/db1eb959a204dc2b92*****a3994f56a into [REPO EXPORT PATH]/smilezemi/{project_name}/ac233d2ddf59d96d51646c*****a79b1 

:cry:

インポート処理中に突然の No such file or directory.
この時点では完全に推測ですが,インポート処理中にクリーンアップのバックグラウンドプロセスがインポート対象のファイルを削除してしまってエラーになっているのかなーと推測していました.

環境

  • Export,Importサーバ共通
    • 8core 31GB RAM Amazon Linux
    • GitLab 10.7.3-ee 584a495
  • Project
    • 2.2GB repository size

関連Issue

Cannot import project into fresh omnibus gitlab instance

コメント を見ると 「Sidekiq の concurrency を1にセットすると回避できた」とありました.
このあたりで,上の推測が現実味を帯びてきます.
ただ,試してみたものの,インポート用のプロジェクトファイルをアップロード中に,あっという間にSidekiqのジョブが数百積まれたので諦めて元に戻しました.

調査

Sidekiq.log

関連Issueでは言及されていませんでしたが,弊社のSidekiq.logを確認したところ,少し(かなり?)怪しい箇所が有りました.

X時21分 RepositoryImportWorkerが稼働

TID-os9vtfgwg RepositoryImportWorker JID-0eb9b2667c84c7245df9037b INFO: start

X時25分 突然の Sidekiq shutdown

TID-os9sk28c4 WARN: sending Sidekiq worker PID-20707 SIGTSTP (stop fetching new jobs)
TID-os9sk28c4 WARN: waiting 30 seconds before sending Sidekiq worker PID-20707 SIGTERM (gracefully shut down)
TID-os9yd9q6g INFO: Received TSTP, no longer accepting new work
TID-os9wrwrm4 INFO: Scheduler exiting...
TID-os9yd9q6g INFO: Terminating quiet workers
TID-os9vihntg INFO: Scheduler exiting...
TID-os9sk28c4 WARN: sending Sidekiq worker PID-20707 SIGTERM (gracefully shut down)
TID-os9sk28c4 WARN: waiting 6 seconds before sending Sidekiq worker PID-20707 SIGKILL (die)
TID-os9yd9q6g INFO: Shutting down
TID-os9yd9q6g INFO: Pausing to allow workers to finish...
TID-os9yd9q6g WARN: Terminating 1 busy worker threads
TID-os9yd9q6g WARN: Work still in progress [#<struct Sidekiq::BasicFetch::UnitOfWork queue="queue:repository_import", job="{\"retry\":false,\"args\":[453],\"class\":\"RepositoryImportWorker\",\"queue\":\"repository_import\",\"backtrace\":5,\"status_expiration\":54000,\"jid\":\"0eb9b2667c84c7245df9037b\",\"created_at\":1526538090.6663377,\"enqueued_at\":1526538090.7046638}">]
TID-os9yd9q6g INFO: Pushed 1 jobs back to Redis
TID-os9yd9q6g INFO: Bye!
TID-os9vtfgwg RepositoryImportWorker JID-0eb9b2667c84c7245df9037b INFO: fail: 278.995 sec
TID-otfa2anx4 INFO: Booting Sidekiq 5.0.5 with redis options {:path=>"/var/opt/gitlab/redis/redis.socket", :namespace=>"resque:gitlab", :id=>"Sidekiq-server-PID-10012", :url=>nil}

X時26分 Sidekiq 再起動

TID-otf79d620 RepositoryImportWorker JID-0eb9b2667c84c7245df9037b INFO: start

そしてSidekiqが再起動した直後

TID-otfa2anx4 INFO: Cron Jobs - add job with name: import_export_project_cleanup_worker

ADD JOB import_export_project_cleanup_worker!!!

X時30分 エラーで処理中止

TID-otf79d620 RepositoryImportWorker JID-0eb9b2667c84c7245df9037b INFO: fail: 255.313 sec
TID-otf79d620 WARN: {"context":"Job raised exception","job":{"retry":false,"args":[453],"class":"RepositoryImportWorker","queue":"repository_import","backtrace":5,"status_expiration":54000,"jid":"0eb9b2667c84c7245df9037b","created_at":1526538090.6663377,"enqueued_at":1526538090.7046638},"jobstr":"{\"retry\":false,\"args\":[453],\"class\":\"RepositoryImportWorker\",\"queue\":\"repository_import\",\"backtrace\":5,\"status_expiration\":54000,\"jid\":\"0eb9b2667c84c7245df9037b\",\"created_at\":1526538090.6663377,\"enqueued_at\":1526538090.7046638}"}
TID-otf79d620 WARN: RuntimeError: Error importing repository  into smilezemi/{project_name} - tar (child): /var/opt/gitlab/gitlab-rails/shared/tmp/project_exports/uploads/db1eb959a204dc2b926e619a3994f56a: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
, Unable to decompress /var/opt/gitlab/gitlab-rails/shared/tmp/project_exports/uploads/db1eb959a204dc2b926e619a3994f56a into /var/opt/gitlab/gitlab-rails/shared/tmp/project_exports/smilezemi/{project_name}/ac233d2ddf59d96d51646c68209a79b1

このように,インポート処理中にSidekiqが再起動しています.

GitLabサポートを依頼

この辺で諦めて,一旦GitLabサポートに依頼するようにしました.

GitLab社:「Sidekiqのメモリ割り当てを増やして」

メモリに余裕はあったものの,Sidekiqのメモリ割り当てが少なく再起動してそうなので,割当を増やしてみてとのこと.
具体的には以下を gitlab.rb に追記するように指示されました.

gitlab_rails['env'] = {
'SIDEKIQ_MEMORY_KILLER_MAX_RSS' => "0",
'SIDEKIQ_MEMORY_KILLER_GRACE_TIME' => "1200",
}

再度インポートを試す

Sidekiqへのメモリ割り当てを増やしたので,再試行してみました.

エラーが変わる

Sidekiqの再起動がなくなり,インポートジョブが進んだように見えるものの,別のエラーが発生しました.

Error importing repository into smilezemi/{project_name} - Validation failed: Title already exists at group level for smilezemi. Please choose another one.

タイトルがグループレベルにすでに存在する?
プロジェクトのインポートだから,同じ名前のプロジェクトがすでに存在するという意味でしょうか?(いやそんなはずはない)
実際,プロジェクト名を変えて試しても同じエラーでうまく行きません.
サポートへ状況の変化を通知

GitLab社「ラベルが問題のようなので以下試して」

GitLab社から提示された問題とその解決は2つ.どちらも未解決のIssueです.

上のIssueは,「Labelの最後にスペースが含まれているとImportに失敗する」というもの.
プロジェクトを確認しましたが,Labelのおしりにスペースが含まれているものはありませんでした.

「下のIssueはプロジェクトのラベルと同じラベルが,グループラベルに存在するとImportに失敗する」というもの(なんでやねん)
プロジェクトを確認すると,IssueBoardで自動的に作られる(と思われる)「To Do」や「Doing」といったラベルが有りました.
グループレベルのLabelはほとんど使用されていなかったため, group-Doing とか適当な名前でリネームしました.

Import成功

再度試したところ,無事インポートが完了しました.
ただ,すでにプロジェクトは進んでいるので,再度Export/Importを行って無事成功したらGitLab社に報告する予定です.

まとめ

今回ブチあたった問題点は2つ

  • Sidekiqの割当メモリが足りない
    • Exportに続き,相変わらずメモリは食うようです.多めに用意しましょう.
  • Label周りのバグ
    • 改修を進めているようですが,しばらくはGroupラベルとProjectラベルを意識しておく必要がありそうです.同じ名前のラベルがあるとImportに失敗します.

余談1

GitHubがMicrosoftに買収されるという話で GitLabは #movingtogitlab と煽りに煽っています.( GitHubからのImportがいつもの10倍だぜ! とか)
GitHubからのインポートもいいですが,GitLabからのインポートもできるようにしてくれませんかね…

余談2

それでも私は GitLab が好き

12
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?