7月第三週。今週は 同じことが二度起きる 場所を掘った。
今週の Signal
二度「はい」と答えた。「二度はいと答えた」は同じ枠に予約が二件入る状況を作る。画面が二つでも客が同時に押しても、重なりが成立するのはサーバーが検査しないからだ。窓を狭めるのではなく 重なりを拒む道具 を置く編である。
再試行はただではない。「再試行が払う値」は、応答が遅れたときにもう一度送ると何が増えるかを数える。ネットワークが切れたのではなく 答えが遅かっただけ の場合、再試行は注文をもう一つ作る。
判断が七行になった。「問い合わせられる記録」と「通訳なしに座る」が同じ場所を両側から突く。農家が口で言っていた規則ひとつが、コードではなく 宣言七行 として座り、班長の点検表は一文字も変わらないよう検証が止める。
道具・パッケージのメモ
今週いちばん時間が掛かったのはコードではなく 欠陥を再現することだった。二重予約をクライアント二つで同時に押して作ろうとしたが出なかった。stdio が要求を並ばせるからだ — 一つ終わってから次が入る。そこで重なりをサーバーの中で作る道具を別に置き、その経路で再現した。伝送が同時実行を隠しているあいだは欠陥が見えない、というのが今週の本当の発見だ。
そして画面がひとつ嘘をついた。警告の文が 緑色 で出たのだ。色が画面の JSON にハードコードされていたからである。ログには正確に警告と出ていた — レンダーされたピクセルを目で見ていなければ捕まえられなかった欠陥だ。
短い考え
重複はたいてい「同時に押したから」と説明される。実際には 誰も検査しないから 生まれる。同時実行はその不在を露わにする条件でしかない。だから直す場所もタイミングではなく、拒む道具ひとつだ。
来週
問わなくても変わったと知らせる画面、そして道具が最後までやらないことへ移る。
makemind.dev 「更新」— 週に一度、その週に何が上がり、作りながら何に引っかかったか。