2020 年 11 月頃から、すべての Google ソース レポジトリで Git 操作 (pull/push など) でハングが発生しています。通常、10 回に 1 ~ 2 回発生します。
これは、異なる国の2つの異なるオフィスにある異なるコンピューター(構成環境がまったく異なるUbuntuとFedora OSの両方)で発生しています(すべてフィルタリングされていない、高品質の定期的なインターネットアクセスがあり、VPNを使用していません。ネットワークの問題は除外できます)。IPv6/IPv4 接続を変更しても、これには影響しないようです。
リポジトリのフェッチ URL とプッシュ URL は次のようになります。
ssh://email@source.developers.google.com:2022/p/xxx/r/yyy
(メール、プロジェクト名を xxx に、リポジトリ名を yyy に置き換えました)
次のことを試しました。
- http.postBuffer を 524288000 と 5000 の両方に設定しますが、これは問題には影響しません (SSH が使用されていることはわかっていますが、これを試してみました)。
- 再度実行
gcloud auth login
して資格情報を更新する
これは git pull ログの抜粋です。これは数分間ハングしますが、最終的には成功して終了します。
febr 10 09:51:41 debug2: channel 0: request env confirm 0
febr 10 09:51:41 debug3: send packet: type 98
febr 10 09:51:41 debug3: Ignored env OSP_KSDK_PATH
febr 10 09:51:41 debug3: Ignored env QT_PLATFORM_PLUGIN
febr 10 09:51:41 debug3: Ignored env VTE_VERSION
febr 10 09:51:41 debug1: Sending command: git-upload-pack '/p/xxx/r/yyy'
febr 10 09:51:41 debug2: channel 0: request exec confirm 1
febr 10 09:51:41 debug3: send packet: type 98
febr 10 09:51:41 debug2: channel_input_open_confirmation: channel 0: callback done
febr 10 09:51:41 debug2: channel 0: open confirm rwindow 2097152 rmax 32768
febr 10 09:51:41 debug3: receive packet: type 99
febr 10 09:51:41 debug2: channel_input_status_confirm: type 99 id 0
febr 10 09:51:41 debug2: exec request accepted on channel 0
febr 10 09:55:08 debug2: channel 0: read<=0 rfd 4 len 0
febr 10 09:55:08 debug2: channel 0: read failed
febr 10 09:55:08 debug2: channel 0: chan_shutdown_read (i0 o0 sock -1 wfd 4 efd 6 [write])
febr 10 09:55:08 debug2: channel 0: input open -> drain
febr 10 09:55:08 debug2: channel 0: ibuf empty
febr 10 09:55:08 debug2: channel 0: send eof
febr 10 09:55:08 debug3: send packet: type 96
febr 10 09:55:08 debug2: channel 0: input drain -> closed
febr 10 09:55:08 debug2: channel 0: rcvd adjust 4
febr 10 10:05:08 debug3: receive packet: type 98
febr 10 10:05:08 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
febr 10 10:05:08 debug2: channel 0: rcvd ext data 39
febr 10 10:05:08 CANCELLED The operation was cancelled.
febr 10 10:05:08 debug2: channel 0: written 39 to efd 6
febr 10 10:05:08 debug2: channel 0: rcvd ext data 112
febr 10 10:05:08 debug2: channel 0: rcvd ext data 99
febr 10 10:05:08 debug3: receive packet: type 97
febr 10 10:05:08 debug2: channel 0: rcvd close
febr 10 10:05:08 debug2: channel 0: output open -> drain
febr 10 10:05:08 debug3: channel 0: will not send data after close
febr 10 10:05:08 debug2: channel 0: obuf_empty delayed efd 6/(211)
febr 10 10:05:08 [type.googleapis.com/devtools.gerritcodereview.proto.GerritCodeReviewError]: {
febr 10 10:05:08 error_type: CLIENT_TIMED_OUT
febr 10 10:05:08 }
febr 10 10:05:08 [type.googleapis.com/google.rpc.RequestInfo]: {
febr 10 10:05:08 request_id: "d4c27f7f36644520a0da17841c907b00"
febr 10 10:05:08 }
febr 10 10:05:08 debug2: channel 0: written 211 to efd 6
febr 10 10:05:08 debug3: channel 0: will not send data after close
febr 10 10:05:08 debug2: channel 0: obuf empty
febr 10 10:05:08 debug2: channel 0: chan_shutdown_write (i3 o1 sock -1 wfd 5 efd 6 [write])
febr 10 10:05:08 debug2: channel 0: output drain -> closed
febr 10 10:05:08 debug2: channel 0: almost dead
febr 10 10:05:08 debug2: channel 0: gc: notify user
febr 10 10:05:08 debug2: channel 0: gc: user detached
febr 10 10:05:08 debug2: channel 0: send close
febr 10 10:05:08 debug3: send packet: type 97
febr 10 10:05:08 debug2: channel 0: is dead
febr 10 10:05:08 debug2: channel 0: garbage collecting
febr 10 10:05:08 debug1: channel 0: free: client-session, nchannels 1
febr 10 10:05:08 debug3: channel 0: status: The following connections are open:
febr 10 10:05:08 #0 client-session (t4 r0 i3/0 o3/0 e[write]/0 fd -1/-1/6 sock -1 cc -1)
febr 10 10:05:08
febr 10 10:05:08 debug3: send packet: type 1
febr 10 10:05:08 debug1: fd 0 clearing O_NONBLOCK
febr 10 10:05:08 debug3: fd 1 is not O_NONBLOCK
febr 10 10:05:08 Transferred: sent 3816, received 2100 bytes, in 807.1 seconds
febr 10 10:05:08 Bytes per second: sent 4.7, received 2.6
febr 10 10:05:08 debug1: Exit status 1
febr 10 10:05:08 Already up to date.
数分間ハングし、認証エラーで失敗する抜粋を次に示します (これが発生する場合もあれば、前のログのように完了する場合もあります)。
febr 10 09:39:34 debug1: Sending env LC_PAPER = hu_HU.UTF-8
febr 10 09:39:34 debug2: channel 0: request env confirm 0
febr 10 09:39:34 debug3: send packet: type 98
febr 10 09:39:34 debug3: Ignored env OSP_KSDK_PATH
febr 10 09:39:34 debug3: Ignored env QT_PLATFORM_PLUGIN
febr 10 09:39:34 debug3: Ignored env VTE_VERSION
febr 10 09:39:34 debug1: Sending command: git-upload-pack '/p/xxx/r/yyy'
febr 10 09:39:34 debug2: channel 0: request exec confirm 1
febr 10 09:39:34 debug3: send packet: type 98
febr 10 09:39:34 debug2: channel_input_open_confirmation: channel 0: callback done
febr 10 09:39:34 debug2: channel 0: open confirm rwindow 2097152 rmax 32768
febr 10 09:39:34 debug3: receive packet: type 99
febr 10 09:39:34 debug2: channel_input_status_confirm: type 99 id 0
febr 10 09:39:34 debug2: exec request accepted on channel 0
febr 10 09:45:07 debug3: receive packet: type 98
febr 10 09:45:07 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
febr 10 09:45:07 debug2: channel 0: rcvd ext data 232
febr 10 09:45:07 debug2: channel 0: rcvd ext data 125
febr 10 09:45:07 UNAUTHENTICATED Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other
valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
febr 10 09:45:07 [type.googleapis.com/devtools.gerritcodereview.proto.GerritCodeReviewError]: {
febr 10 09:45:07 error_type: CREDENTIAL_LIFETIME_TOO_SHORT
febr 10 09:45:07 }
febr 10 09:45:07 debug2: channel 0: written 357 to efd 6
febr 10 09:45:07 debug2: channel 0: rcvd ext data 99
febr 10 09:45:07 debug3: receive packet: type 97
febr 10 09:45:07 debug2: channel 0: rcvd close
febr 10 09:45:07 debug2: channel 0: output open -> drain
febr 10 09:45:07 debug2: channel 0: chan_shutdown_read (i0 o1 sock -1 wfd 4 efd 6 [write])
febr 10 09:45:07 debug2: channel 0: input open -> closed
febr 10 09:45:07 debug3: channel 0: will not send data after close
febr 10 09:45:07 debug2: channel 0: obuf_empty delayed efd 6/(99)
febr 10 09:45:07 [type.googleapis.com/google.rpc.RequestInfo]: {
febr 10 09:45:07 request_id: "5e3ea7c0a78442ff9a1aca05f8d36c5e"
febr 10 09:45:07 }
febr 10 09:45:07 debug2: channel 0: written 99 to efd 6
febr 10 09:45:07 debug3: channel 0: will not send data after close
febr 10 09:45:07 debug2: channel 0: obuf empty
febr 10 09:45:07 debug2: channel 0: chan_shutdown_write (i3 o1 sock -1 wfd 5 efd 6 [write])
febr 10 09:45:07 debug2: channel 0: output drain -> closed
febr 10 09:45:07 debug2: channel 0: almost dead
febr 10 09:45:07 debug2: channel 0: gc: notify user
febr 10 09:45:07 debug2: channel 0: gc: user detached
febr 10 09:45:07 debug2: channel 0: send close
febr 10 09:45:07 debug3: send packet: type 97
febr 10 09:45:07 debug2: channel 0: is dead
febr 10 09:45:07 debug2: channel 0: garbage collecting
febr 10 09:45:07 debug1: channel 0: free: client-session, nchannels 1
febr 10 09:45:07 debug3: channel 0: status: The following connections are open:
febr 10 09:45:07 #0 client-session (t4 r0 i3/0 o3/0 e[write]/0 fd -1/-1/6 sock -1 cc -1)
febr 10 09:45:07
febr 10 09:45:07 debug3: send packet: type 1
febr 10 09:45:07 debug1: fd 0 clearing O_NONBLOCK
febr 10 09:45:07 debug3: fd 1 is not O_NONBLOCK
febr 10 09:45:07 Transferred: sent 3768, received 1924 bytes, in 333.8 seconds
febr 10 09:45:07 Bytes per second: sent 11.3, received 5.8
febr 10 09:45:07 debug1: Exit status 16
febr 10 09:45:07 fatal: Could not read from remote repository.
febr 10 09:45:07
febr 10 09:45:07 Please make sure you have the correct access rights
febr 10 09:45:07 and the repository exists.
この時折発生するハングを解消するために何をすべきか知っている人はいますか?