surrealdb 1.5.3を530日ほど運用してたら、完全に落ちていた。
SurrealDB の Resource busy エラーについて
## 現状
- 最新安定版: 2.6.0 (2025年1月)
- 3.0: 開発中 (Nightly/Alpha のみ)
## Resource busy バグの状況
- 1.1.0 で一度修正されたとされる (2024年1月)
- しかし 1.3.0, 2.1.2, 2.1.3 でも報告あり
- 2025年1月時点でも新規 issue が立つ状態
- 完全には解決されていない
## 発生条件
- 並行処理でのトランザクション競合
- ネストした配列の同時更新
- マルチスレッド環境での UPDATE
## 回避策
リトライロジックを実装:
```rust
let mut retries = 0;
loop {
match db.query("...").await {
Err(e) if e.contains("Resource busy:") && retries < 50 => {
retries += 1;
tokio::time::sleep(Duration::from_millis(100)).await;
}
Ok(_) => break,
Err(e) => panic!("{:?}", e),
}
}
```
## まとめ
特定バージョンでの「完全修正」ではなく、継続的な改善対象の問題。
本番環境では上記のようなリトライ処理を実装することを推奨。
0 件のコメント:
コメントを投稿