5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

error: RPC failed; curl 56 HTTP/2 stream 5 was resetでgit pushができなくなった話し


突然、git pushができなくなってGitLabのリモートリポジトリにアクセスでき亡くなってしまいました。エラーメッセージは次の通りです。

error: RPC failed; curl 56 HTTP/2 stream 5 was reset
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly

おそらくHTTPでアクセスしないでSSHですればいいのですけど、GitLabの設定が面倒なのでやっていません。

次に以下のサイトにしたがって、http.postBufferの値を大きくしてみます。

次のコマンドを実行してみます。

git config --global http.postBuffer 524288000

結果は変わりません。

GitLabはQNAPのContainer Stationを使ってDockerのコンテナにしていますので、docker-composeのYMLファイルにgit_max_sizeとgit_timeoutを追加しました。

GITLAB_OMNIBUS_CONFIG: |
    external_url 'https://gitlab.and-works.com'
    gitlab_rails['gitlab_shell_ssh_port'] = 2022
    gitlab_rails['lfs_enabled'] = true
    gitlab_rails['lfs_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/lfs-objects"
    gitlab_rails['time_zone'] = 'Asia/Tokyo'
    gitlab_rails['git_max_size'] = 524288000
    gitlab_rails['git_timeout'] = 300

参考にしたのは、いろいろ辿り着いたこちらのサイトです。

最初、コンテナを再起動しただけではだめでした。一度GitLabのコンテナを削除してから起動しないとgit pushができませんでした。

しかし、QNAPのContainer Stationは、コンテナを削除すると、docker-composeのYMLファイルの設定から何やかんやらすべて削除してくれますので、最小限docker-composeのYMLファイルのバックアップを取っておきましょう。私は、docker-composeのYMLファイルをGitで管理していましたので大丈夫でした。

QNAPのContainer Stationで、最初からdocker-composeのYMLを挿入してアプリケーションを作成し直しました

以上で、無事にgit pushができるようになりました。本当ならsshでリモートリポジトリをアクセスできるようにすれば、このような設定の必要はないかと思います。

ただし、設定しておかしいのは、以下のようなアイコンが表示されるようになって、ボタングレーになってしまったことです。

起動、停止、再起動はチェックボックスを選択して上のボタンでできますが、docker-composeのYMLを編集できないの難点です。いろいろ情報を漁っていますが、なかなか解決方法は見つかりません。

著:湊川あい, 著:DQNEO
¥2,208 (2024/11/20 08:19時点 | Amazon調べ)
著:リック・ウマリ, 翻訳:吉川邦夫
¥3,247 (2024/11/20 08:19時点 | Amazon調べ)

追記(2023年7月20日)

今度は別のリポジトリで次のようなエラーがSourceTreeで出て、何もリポジトリの中を参照できなくなってしまいました。

git status fatal: not a git repository (or any of the parent directories): .git

さて、どうしましょう。これはリモートリポジトリの問題ではなくて、ローカルのリポジトリの問題のようです。

仕方ないので、とりあえず再度リモートリポジトリからCloneしてみます。Pushしていないファイルもありますので、トラブルのあるリポジトリは名前を変えて残しておきます。

結果としては、このとりあえずのCloneした対応がよかったようです。Cloneしたら元に戻りました。リポジトリの内容も参照できます。そして、Pushできなかったリモートリポジトリも元通りに正常になりました。どうしてか、よくわかりません。