Gadget 48:.wrangler を直接読む

Durable Objects のローカル状態をファイルレベルで調査・救出する

.wrangler を直接読む

「消えた」「壊れた」の前に、.wrangler/ の中身を直接調べるテクニックです。

目的

  • DO のローカル永続データの構造を把握する
  • 手動バックアップ・部分復旧・調査ができる

前提条件

  • バックアップ(07)の実施を忘れない
  • ファイル操作に慣れていること

.wrangler の構造

パス 内容
.wrangler/state/v3/ 各 DO の状態(blob / sqlite など)
.wrangler/dev/ 起動時キャッシュ等
.wrangler/state/ SQLite ベースの DO データを含む
du -sh .wrangler
ls -la .wrangler/state/v3/
find .wrangler -type f | head -50

手順(調査)

1. 対象を特定する

# サイズが大きいものを探す(=おおきな状態)
find .wrangler -type f -size +1M -exec ls -lh {} \;

2. SQLite の中身を見る

DO の SQLite ストレージは sqlite3 で開けます(バイナリ、開くときは停止してから)。

# 起動中はロックされるため、run-local 停止後に実施
pkill -f run-local
sqlite3 .wrangler/state/v3/<do-id>/sqlite.db ".tables"
sqlite3 .wrangler/state/v3/<do-id>/sqlite.db "SELECT * FROM <table> LIMIT 20;"

3. バックアップ(丸ごと)

tar czf wrangler-state.tgz .wrangler/state

よくある失敗

症状 原因 対処
database is locked 起動中に開いた run-local 停止後に
ファイルが見当たらない パス・バージョン差 find .wrangler -type d で構造を確認
バイナリで読めない テキストとして開いた SQLite は sqlite3 を使う
操作で壊す 書き込み 読み取り専用-readonly 等)で調査
Warning直接編集は最後の手段

状態の書き換えは不整合を生む危険があります。 まず「バックアップ→調査→必要なら復元」の順で。直接編集は残業の元です。

確認

次に読む