Git クローンに失敗する - fatal: The remote end hung up unexpectedly. fatal: early EOF fatal: index-pack failed

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

問題

クローンまたはフェッチの最中に Git が次のエラーで失敗する。

例 1
git clone http://bitbucket.company.com:7990/scm/proj/repo.git
fatal: early EOF
fatal: The remote end hung up unexpectedly
fatal: index-pack failed
error: RPC failed; result=56, HTTP code = 200
Completed with errors, see above.
例 2

1 GB の経過後に git clone に失敗する。

git clone http://bitbucket.company.com:7990/scm/proj/repo.git. Cloning into 'repo'....git
remote: Counting objects: , done.
remote: Compressing objects: 100% (####/###), done.
fatal: The remote end hung up unexpectedly.00 GiB | MiB/s
fatal: early EOF
fatal: index-pack failed

atlassian-bitbucket.log では次のようになっている。 

2017-07-26 12:39:18,819 INFO  [http-nio-7990-exec-8] <user> @4MMSRUx758x33193x0 <IP> "POST /scm/team/<repo>/git-upload-pack HTTP/1.0" c.a.s.i.w.filters.StreamGuardFilter The remote client has aborted the connection


診断

この挙動は通常、中間に存在する要素によってリクエストが終了されていることに関連します。中間要素を取り除いてインポートが動作するかどうかを確認することで、トラブルシューティングを迅速に行えます。

(info) これを行うには、ファイアウォールやアンチウイルス ソフトウェアを一時的に無効化してクローンを再試行するか、ファイアウォール設定に例外ルールを追加します。


Git のデバッグ ログを有効化するには、コマンド ラインを利用したプッシュを行う前に個々の OS で次のような作業を行います。

Linux の場合

Git コマンドを実行する前に、コマンド ラインで以下を実行します。

export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

Windows の場合

Git コマンドを実行する前に、コマンド ラインで以下を実行します。

set GIT_TRACE_PACKET=1
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1

原因

考えられる原因には次のものが考えられます。

  • 原因 #1 git のデバッグ出力に error: RPC failed; result=56, HTTP code = 200 が含まれる
    エラー コード 56 は CURLE_RECV_ERRORcurl 受け取りエラーを意味します。つまり、クローン プロセス中にデータの受け取りを妨げる何らかの問題が発生しています。これは一般に、ネットワーク設定、ファイアウォール、VPN クライアント、アンチウイルス ソフトウェアにより、すべてのデータが転送される前にコネクションが終了されるために発生します。
  • 原因 #2 エラー コードが存在せず、git のデバッグ ログには Nginx がリバース プロキシとして構成されている旨が表示されている。Git クローンが 1 GB の処理後に失敗する。
    例:

    < HTTP/1.1 200
    < Server: nginx/1.10.2

回避策

原因 1 の回避策: クローンの処理方法として SSH を利用するように切り替えます。 

原因 2 の回避策: プロキシをバイパスしてクローンします。参考: 「Bitbucket Server でプロキシをバイパスする方法

ソリューション

  • 原因 1 の解決策:
    アンチウイルス設定、ファイアウォール設定、または VPN クライアントの設定を変更し、Bitbucket Server からのコネクションを許可してそれらを早期に終了しないようにします。必要な変更内容は環境ごとに利用されているテクノロジーに応じます。必要に応じてベンダーのドキュメントをご確認ください。
  • 原因 #2 の解決策:
    Nginx の proxy_max_temp_file_size におけるデフォルトの 1 GB 制限を無効化します。これを無効化するには値をゼロとして設定する必要があります。
    詳細については次のページをご確認ください。http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size 

説明

クローンまたはフェッチ中に Git が EOF エラーで失敗する。

製品Bitbucket
最終更新日: 2022 年 2 月 1 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.