Helix Coreサーバ管理者ガイド: 基本 (2019.1)

信頼性の低いネットワークでの作業

ネットワーク上の個々の読み取りまたは書き込みを待機する接続時間に上限を設定するには、ネットワークエラーとして接続を切断するまでに待機する秒数を構成可能変数net.maxwaitに設定します。信頼性の低い接続状態で作業するユーザは、net.maxwaitの値をP4CONFIGファイル内で設定するか、または-vnet.maxwait=tをコマンド単位で使用してタイムアウトまでの待機秒数をtに指定できます。

Note

net.maxwaitHelix Coreサーバに設定することはできますが、一般的に推奨されません。例えば、サーバ上でnet.maxwait60に設定した場合、コマンドラインクライアントのユーザは、対話式フォームの入力を1分以内に完了しなければなりません。1分が経過すると、コマンドがタイムアウトになります。これに対して、各ユーザが各自の(ワークステーション内の)P4CONFIGファイル内でnet.maxwaitを設定すると、そのユーザの接続は上記の制限の対象にはなりません。バージョニングサービスがリクエストに対する応答に60秒を超える時間を要した場合のみ、コマンドが失敗します。

net.maxwaitをグローバルオプションである-rNと組み合わせて、ネットワークのタイムアウト時に再接続を試行する回数をNに指定すると便利です。以下に例を示します。

$ p4 -r3 -vnet.maxwait=60 sync

というコマンドは、ユーザのワークスペースの同期が中断された場合に、同期を3回まで再試行します。3回目に60秒間でタイムアウトすると、コマンドは失敗します。

タイムアウトして再試行されるコマンド(ネットワーク接続が出力行の途中で失われた場合など)の出力形式は保証されないため、標準入力から読み込みを行うコマンドに-rを使用するのは避けてください。例えば、以下のコマンドは、stdinからファイルのリストを読み込んでp4 addに渡すコマンドです。このコマンドを実行すると、不完全な名前のファイルがディポに追加される可能性があります。

$ find . -print | p4 -x - -r3 add

(例えば、信頼性がきわめて低い接続状態でファイルを多数追加しなければならない状況で)このような現象を回避するには、以下のようなアプローチを検討してください。

$ find directoryname -type f -exec p4 -r5 -vmax.netwait=60 add {} \;

このコマンドは、directoryname内のすべてのファイル(-type f)を検出したうえで、個々のファイルに対して「p4 -r5 -vmax.netwait=60 add」コマンドを実行することでファイルを1つずつ追加します。

すべてのファイルが追加されたら、p4 changeを使用してチェンジリストにチェンジリスト番号を割り当て、番号付きチェンジリストを最小単位でサブミットします。

$ p4 -r5 -vmax.netwait=60 submit -c changenum

接続が中断されると、番号付きチェンジリストのサブミットは再試行されます。