RPCには必ず期限を設定する
RPCにはデフォルトでタイムアウトがありません。
リクエストは完了時にのみ解放されるバックエンドリソースを占有するため、デフォルトの期限を設定することは良い方法です。
通常、標準フレームワークを使用するときにデフォルトでそうします。
期限は、リクエストに添付されたより短い期限によって上書きされる場合があります。
deadline オプションを設定することで、クライアントにRPCの期限を明確に伝え、標準フレームワークによって尊重され、強制されます。
rpc Foo(FooRequest) returns (FooResponse) {
option deadline = x; // there is no globally good default
}
既存のサービスの場合、破壊的変更とならないよう、新しい期限を強制する前に既存のクライアントの動作を評価することが重要です。
場合によっては、事後に短い期限を強制できない場合があります。
proto で明記せず、各言語の実装でデフォルト値を設定するのが一般的かもしれない。
public API として提供する場合は、proto で明記しておくべきかもしれない。