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直接編集は最後の手段
状態の書き換えは不整合を生む危険があります。 まず「バックアップ→調査→必要なら復元」の順で。直接編集は残業の元です。
確認
次に読む
- 復元 → 20-rollback-procedure
- 永続化設計 → 16-storage-persistence
- DO 理解 → 36-durable-objects