メインコンテンツまでスキップ

街づくり12日目・第三章|共有DEVを止めずにcontrolを直す

· 約2分
KOGAMAI JUNCTION DEV

共有DEVを小さな検査とrollbackで守る

2026年8月26日、街づくり12日目・第三章。

共有DEVでは、resourceを安全に切り替えるためのcontrol listenerを使います。ところがprocessが動いていても、古いsocketだけが残り、listenerへ接続できないことがあります。そこで「serverが起動中」という一つの信号ではなく、原因と影響を細かく分けました。

0人を推測しない​

変更前にはauthoritative player countが必要です。複数のread-only endpointが0を返しても、control側の正本が読めなければ「たぶん0人」へ昇格させません。取得不能、値の不一致、接続中の可能性が残る場合は、その場で停止します。

同じように、active sourceとtracked rollbackが分からない状態ではresource adoptionへ進みません。戻り先がないまま変更を始めると、成功判定も失敗時の復旧も曖昧になるからです。

stale socketだけを対象にする​

復旧対象は、所有者、path、inode、service identityが期待値と一致するstale socketだけです。別processが使うsocket、listenerが存在するsocket、所有境界が不明なfileは削除しません。

さらに、FiveM全体を再起動しないcontrol専用経路を用意しました。listenerが競合を検出した場合はbounded retryを行い、同じfailureが続くなら停止します。manual consoleや未文書APIへ迂回せず、review済みのplanとapplyを分けます。

復旧codeとruntime成功を分ける​

failure-first testでは、player確認、対象socket fingerprint、process identity不変、listener read-back、cleanup、rollbackの欠落を拒否します。ただしcodeがmergeされたことは、共有DEVのlistenerが実際に復旧した証拠ではありません。

runtimeでの最終実証は別のtransactionです。exact plan、0人の再確認、実行承認、復旧後diagnosticが揃うまで、resource activationやdatabase操作へ進みません。

第二章・KOGAMAI Payへ戻る · 第四章・self-hosted CIへ進む