Capistrano cap deployがフリーズする。

Capistrano

でcap deploy:cold したところ途中で止まってしまって、30分以上経っても完了しない状況に遭遇した。
deploy:coldだけでなく、deploy:update_codeなども機能しなかった。実行した時のターミナルはこんな感じに
$ cap deploy:cold
* executing `deploy:cold'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
executing locally: "git ls-remote ssh://user@123.456.789.10:30000/home/git/repo
HEAD"
* executing "git clone -q ssh://user@123.456.789.10:30000/home/git/repo
/home/user/public_html/repo/releases/20090930103747 && cd /home/user/
public_html/repo/releases/20090930103747 && git checkout -q -b deploy
e22788a3e188749c8ec04991a1e930eec8033ereddf72 && rm -Rf /home/user/
public_html/repo/releases/20090930103747/.git && (echo
edada872788a3e1adfda492cdae4991a1edadae30bc80335f72 > /home/user/public_html/repo/
releases/20090930103747/REVISION)"
servers: ["123.456.789.10"]
[123.456.789.10] executing command
executing commandの後、カーソルが点滅するだけで一向に進まない。

仕方がないので、ターミナルを閉じて再度試しているうちに違うエラーがでた。
[123.456.789.10] executing command
** [123.456.789.10 :: err] remote: warning: suboptimal pack - out of memory
** [123.456.789.10 :: err] remote: fatal: Out of memory, malloc failed
** [123.456.789.10 :: err] error: git-upload-pack: git-pack-objects died with error.
** fatal: git-upload-pack: aborting due to possible repository corruption on the remote side.
** [123.456.789.10 :: err] remote: aborting due to possible repository corruption on the remote side.
** [123.456.789.10 :: err] fatal: early EOF
** [123.456.789.10 :: err] fatal: index-pack failed
** [123.456.789.10 :: err] fetch-pack from 'ssh://user@123.456.789.10:30000/home/git/repo' failed.
command finished
*** [deploy:update_code] rolling back
* executing "rm -rf /home/user/public_html/repo/releases/20090930114606; true"
servers: ["123.456.789.10"]
[123.456.789.10] executing command
command finished
failed: "sh -c \"git clone -q ssh://user@123.456.789.10:30000/home/git/repo /home/user/public_html/repo/releases/20090930114606 && cd /home/user/public_html/repo/releases/20090930114606 && git checkout -q -b deploy d4ed97a9c21ccff37c9fb37012babc2c427aad19 && rm -Rf /home/user/public_html/repo/releases/20090930114606/.git && (echo d4ed97a9c21ccff37c9fb37012babc2c427aad19 > /home/user/public_html/repo/releases/20090930114606/REVISION)\"" on 123.456.789.10
一度サーバーを再起動することで出なくなった。
どうもデプロイ先のサーバーのメモリ(512MB)だと、オブジェクトの圧縮に手間取っているようで、いったんgitのリポジトリでgit gcをやってから再度cap deploy:coldしたところ、成功した。

git gcの最中は19%あたりから圧縮がすごく遅くなり、10分以上はかかっていた。たぶんここで止まってしまっていたのではないかと思う。

ということで
cap deploy関係でトラブったら一度リポジトリサーバー内でgit gcしてから再度試してみよう。
タグ:capistrano git
posted by digital-squad at 2009年10月01日 08時09分 | Comment(0) | TrackBack(0) | Ruby on Rails / Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック